Hyppää sisältöön

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:

seff <slurm jobid>

Voit myös lisätä seff-komennon eräajoskriptisi loppuun, jolloin se tulostaa muistinkäytön työn lopussa vakiotulosteeseen.

seff $SLURM_JOBID

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:

sacct -o jobid,reqmem,maxrss,averss,elapsed -j <slurm jobid>

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 seff raportoi), 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 seff raportoi).
  • 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.

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .