Miten arvioin, kuinka paljon muistia eräajoni tarvitsee?
Työn tarkkoja resurssivaatimuksia on vaikea arvioida etukäteen. Tarkista ensin ohjelmiston dokumentaatiosta, antavatko kehittäjät mitään tietoa tyypillisestä muistinkäytöstä. Voit hyödyntää myös aiempia tietoja samankaltaisista valmiiksi suoritetuista töistä.
seff - Slurm-tehokkuus
seff tulostaa yhteenvedon pyydetyistä ja käytetyistä resursseista sekä
käynnissä oleville että päättyneille eräajoille:
Voit myös lisätä seff-komennon eräajoskriptisi loppuun, jotta muistinkäyttö
tulostuu työn lopussa vakiotulosteeseen.
Huomaa, että seff ei näytä tietoja käynnissä olevista töistä, jotka on
käynnistetty ilman srun-komentoa, mutta tilastot ovat kunnossa työn
päätyttyä. seff näyttää myös koottuja tietoja GPU-käytön tehokkuudesta.
[kkayttaj@puhti-login11 logs]$ seff 29221065
Job ID: 29221065
Cluster: puhti
User/Group: kkayttaj/kkayttaj
State: COMPLETED (exit code 0)
Nodes: 2
Cores per node: 40
CPU Utilized: 16:01:21
CPU Efficiency: 97.17% of 16:29:20 core-walltime
Job Wall-clock time: 00:12:22
Memory Utilized: 23.68 GB (estimated maximum)
Memory Efficiency: 6.38% of 371.09 GB (185.55 GB/node)
Job consumed 24.14 CSC billing units based on following used resources
Billed project: project_2001659
CPU usage: 16.49 CPU BU
Mem usage: 7.65 CPU BU
Huomioita yllä olevista tiedoista: CPU-tehokkuus on ollut erittäin hyvä (97 %). Muistitehokkuus on kuitenkin melko heikko (6 %). Tässä tapauksessa se on hyväksyttävää, koska työ pyytää kaksi kokonaista noodia ja pystyy käyttämään kaikkia CPU-resursseja erittäin tehokkaasti. Toisin sanoen kukaan muu käyttäjä ei voisi hyödyntää näiden noodien jäljelle jäänyttä muistia muutenkaan, koska kaikki CPU-resurssit ovat jo käytössä.
Jos työsi ei pysty hyödyntämään kokonaisia noodeja, on tärkeää pyytää muistia huolellisemmin. Kokonaismuistille suositellaan muutaman gigatavun turvamarginaalia, jotta työ ei kaadu muistin loppumiseen. Aloita pienesti lyhyillä testiajoilla ja kasvata muistimäärää tarpeen mukaan, jos työsi kaatuu. Tämä on parempi kuin pyytää valtava määrä muistia "varmuuden vuoksi".
Mukautetut kyselyt Slurmin kirjanpitoon
Voit tarkistaa päättyneen työn ajan- ja muistinkäytön myös sacct-komennolla:
missä -o-valitsin määrittää tulosteen seuraavasti:
jobid= Slurm-työn tunniste sekä työn vaiheiden tunnistelaajennukset.reqmem= Muistin määrä, jonka pyysit Slurmilta.maxrss= Suurin muistimäärä, jota mikä tahansa prosessi käytti milloin tahansa kyseisessä työssä. Tämä pätee suoraan sarjallisiin töihin. Rinnakkaisissa töissä arvo pitää kertoa ytimien määrällä (enintään 40 Puhdissa, koska tämä raportoidaan vain siltä noodilta, joka käytti eniten muistia).averss= Prosessia (tai ydintä) kohden käytetty keskimääräinen muistimäärä. Saadaksesi kokonaismuistinkäytön, kerro tämä ytimien määrällä (enintään 40 Puhdissa eli yksi kokonainen noodi), jos pyydät muistia valitsimella--mem=<value>etkä--mem-per-cpu=<value>.elapsed= Aika, joka työn valmistumiseen kului.
Esimerkiksi sama työ kuin yllä:
[user@puhti-login11 ~]$ sacct -j 22361601 -o jobid,reqmem,maxrss,averss,elapsed
JobID ReqMem MaxRSS AveRSS Elapsed
------------ ---------- ---------- ---------- ----------
22361601 8000M 00:06:17
22361601.ba+ 7286K 7286K 00:06:17
22361601.ex+ 2349K 2349K 00:06:17
22361601.0 145493K 139994035 00:06:17
Huomaa seuraavat asiat:
- Rivit, joissa työn vaiheiden tunnisteiden perässä on
.ba+ja.ex+, liittyvät eräajon valmisteluun, eikä niistä tarvitse tässä vaiheessa huolehtia. - Olet pyytänyt 200 Mt muistia ydintä kohden eli yhteensä 40 x 200 Mt = 8000 Mt
(= 7,81 Gt, kuten
seffraportoi). - Työsi on käyttänyt enimmillään 145493 Kt eli 142 Mt muistia ydintä kohden.
Kun tämä kerrotaan ytimien määrällä (40), kokonaismuistinkäytöksi saadaan
5683 Mt = 5,55 Gt (kuten myös
seffraportoi). - Kuuden minuutin eräajo on liian lyhyt! Jos sinulla on paljon tällaisia töitä, aja ne peräkkäin samassa työssä erillisinä työn vaiheina. Nyt työn käynnistämisen yleiskustannus on merkittävä verrattuna varsinaiseen laskentaan.
Huomautus muistiyksiköistä
Muistiyksiköissä käytetään binaarisia etuliitteitä. Esimerkiksi 1 Gt = 1024 Mt = 1024² Kt. Siksi yksikkömuunnokset voivat tuntua hämmentäviltä.
Yleisiä ohjeita ja vinkkejä
Muista, että samankaltainen mutta silti uusi työ voi lopulta vaatia eri määrän
resursseja. Jos yliarvioit tarvittavan ajoajan, työsi voi joutua jonottamaan
pidempään kuin olisi tarpeen. Resursseja ei kuitenkaan mene hukkaan eikä niitä
laskuteta. Tässä suuri ero jonotuksen kannalta on siinä, onko työn kesto alle
3 päivää vai enemmän. longrun-partitiossa olevilla töillä on matalampi
prioriteetti, ja ne jonottavat pidempään.
Jos kuitenkin yliarvioit muistitarpeen, resursseja menee hukkaan. Ajatellaanpa tätä: jos työsi käyttää vain 4 ydintä mutta noodin kaiken muistin, mikään muu työ ei mahdu kyseiseen noodiin ja jäljelle jäävät N - 4 ydintä jäävät käyttämättömiksi. Lisäksi koko pyydetty muistimäärä – käytettiin sitä tai ei – laskutetaan laskutuskiintiöstäsi.
Huomaa, että jos työsi tarvitsee muistin, on täysin hyväksyttävää varata noodin kaikki muisti, mutta älä varaa sitä "varmuuden vuoksi" tai siksi, ettet tiedä, kuinka paljon muistia työ tarvitsee. Voit saada arvion aiemmista samankaltaisista töistä hakemalla tiedot yllä esitetyillä komennoilla. Tarvitset vain kyseisten töiden Slurm-työtunnisteen.