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 tietoa tyypillisestä muistinkäytöstä. Voit hyödyntää myös aiempia tietoja samankaltaisista valmiiksi suoritetuista töistä.
seff - Slurm EFFiciency
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, jolloin se tulostaa
muistinkäytön työn lopussa vakiotulosteeseen.
Huomaa, että seff ei näytä tietoja käynnissä olevista töistä, jotka on käynnistetty ilman
sruniä, mutta tilastot ovat käyttökelpoisia työn päätyttyä. seff näyttää myös
koostetietoja GPU-käytön tehokkuudesta.
[username@roihu-cpu-login1 logs]$ seff 1398962
Job ID: 1398962
Cluster: roihu
Partition: medium
User/Group: username/username
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 384
CPU Utilized: 1-19:57:35
CPU Efficiency: 96.07% of 1-21:45:36 core-walltime
Job Wall-clock time: 00:07:09
Memory Utilized: 73.23 GB (estimated maximum)
Memory Efficiency: 9.83% of 744.72 GB (744.72 GB/node)
Job consumed 34.32 CSC billing units, billed on CPU usage
Billed project: project_2001659
CPU usage: 34.32 CPU BU
Mem usage: 0.00 CPU BU
Huomioita yllä olevista tiedoista: CPU-tehokkuus on ollut erittäin hyvä (96 %).
Muistitehokkuus on kuitenkin melko heikko (10 %). Tässä tapauksessa se on
hyväksyttävää, koska työ pyytää kokonaisen solmun ja pystyy käyttämään kaikki
CPU-resurssit erittäin tehokkaasti. Toisin sanoen kukaan muu käyttäjä ei voisi
käyttää tämän solmun jäljelle jäänyttä muistia muutenkaan, koska kaikki
CPU-resurssit ovat käytössä. Koska Roihun kokonaisen solmun työt laskutetaan
kiinteällä solmutunti-hinnalla, muistinkäyttö ei lisää laskutettavaa määrää
(Mem usage: 0.00 CPU BU).
Jos työsi ei pysty hyödyntämään kokonaisia solmuja, on tärkeää pyytää muistia huolellisemmin. Kokonaismuistille kannattaa jättää muutaman gigatavun turvamarginaali, 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 384 Roihu-CPU:ssa, koska tämä raportoidaan vain siltä solmulta, joka käytti eniten muistia).averss= Prosessia (tai ydintä) kohden käytetty keskimääräinen muisti. Saat kokonaismuistinkäytön kertomalla tämän ytimien määrällä (enintään 384 Roihu-CPU:ssa eli kokonainen solmu), jos pyydät muistia valitsimella--mem=<value>etkä--mem-per-cpu=<value>.elapsed= Aika, joka työn valmistumiseen kului.
Esimerkiksi sama työ kuin yllä:
[username@roihu-cpu-login1 ~]$ sacct -j 1398962 -o jobid,reqmem,maxrss,averss,elapsed
JobID ReqMem MaxRSS AveRSS Elapsed
------------ ---------- ---------- ---------- ----------
1398962 762590M 00:07:09
1398962.bat+ 13084K 13084K 00:07:09
1398962.ext+ 00:07:09
1398962.0 199960K 182518997 00:07:08
Huomaa seuraavat asiat:
- Rivit, joiden työn vaiheiden tunnisteiden lopussa on
.bat+ja.ext+, liittyvät eräajon valmisteluun, eikä niistä tarvitse tässä vaiheessa huolehtia. - Olet pyytänyt koko työlle 762590 Mt (≈744,72 Gt) muistia
(= 744,72 Gt, kuten
seffraportoi), mikä on koko Roihu M -solmun käytettävissä oleva määrä. - Työsi on käyttänyt enimmillään 199960 kt eli 195,27 Mt muistia ydintä kohti.
Kun tämä kerrotaan ytimien määrällä (384), kokonaismuistinkäytöksi saadaan
74985 Mt = 73,23 Gt (kuten myös
seffraportoi). - Seitsemän 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 vaikuttaa hämmentäviltä.
Yleisiä ohjeita ja vinkkejä
Muista, että samankaltainen mutta silti uusi työ voi lopulta tarvita 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ä niistä
laskuteta. Jonotuksen kannalta suuri ero on siinä, onko työn kesto alle 3
päivää vai enemmän. longrun-osiolla olevilla töillä on matalampi prioriteetti,
ja ne jonottavat pidempään.
Jos kuitenkin yliarvioit muistitarpeen, resursseja menee hukkaan. Ajattele tätä: jos työsi käyttää vain 4 ydintä mutta kaiken solmun muistin, mikään muu työ ei mahdu kyseiseen solmuun 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 laskentakiintiöstäsi.
Huomaa, että jos työsi tarvitsee muistin, on täysin hyväksyttävää varata solmun 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 näiden töiden Slurm-työtunnisteen.