Hyppää sisältöön

Missä hakemistossa minun kannattaa analysoida suuri määrä pieniä tiedostoja?

Interaktiivinen eräajo Roihussa mahdollistaa komentotulkkisession käynnistämisen CPU-solmulla enintään seuraavilla resursseilla:

  • 32 ydintä
  • 64 Gt muistia
  • 36 tuntia ajoaikaa

Käynnistääksesi interaktiivisen session Roihussa, suorita komento:

sinteractive -i

"Tavalliset" Lustre-pohjaiset projektikohtaiset hakemistot scratch ja projappl voivat tallentaa suuria määriä dataa, ja ne ovat kaikkien Roihun solmujen käytettävissä. Nämä hakemistot ovat kuitenkin tehottomia tuhansien tiedostojen hallintaan.

Yleisesti ottaen kannattaa välttää työnkulkuja, jotka edellyttävät suurten määrien pieniä tiedostoja luomista. Jos sinun kuitenkin täytyy työskennellä tuhansien tiedostojen kanssa, kannattaa harkita NVMe-pohjaisten väliaikaisten paikallislevyalueiden käyttöä joko tavallisten tai interaktiivisten eräajojen kautta. Nämä alueet ovat solmukohtaisia ja näkyvät vain niitä pyytäneelle eräajolle. Ajon päätyttyä data poistetaan. Tämän vuoksi sinun täytyy aina ensin tuoda aineistosi paikalliselle levylle, ja kun olet valmis, kopioida säilytettävä data takaisin johonkin pysyvämpään tallennuspaikkaan, kuten scratchiin tai Altaaseen.

Sinteractive-komennolla Roihussa käynnistetyt interaktiiviset CPU-eräajot tarjoavat automaattisesti pääsyn 20 GiB:n nopealle paikallislevylle ($TMPDIR), joka soveltuu pienten tiedostojen tehokkaaseen käsittelyyn. Suurempiin tarpeisiin käyttäjien kannattaa sen sijaan pyytää eriytettyä tallennustilaa käyttämällä suoraan srun-komentoa, kuten alla näytetään.

Eriytetyn tallennustilan käyttöä havainnollistaaksemme tarkastellaan esimerkkihakemistoa nimeltä big_data. Hakemisto sisältää noin 100 Gt dataa 120 000 tiedostossa. Aluksi data on pakattu yhdeksi tar-arkistoksi projektin 2001234 scratch-hakemistossa (/scratch/project_2001234/big_data.tar)

Ensin käynnistämme interaktiivisen eräajon, jossa on 2 ydintä, 4000 Mt muistia ja 250 Gt eriytettyä tallennustilaa.

srun --partition=interactive --account=<project> --cpus-per-task=2 --mem=4000 --time=02:00:00 \
  --bb="#BB_LUA SBF storagesize=250G path=/sbf/data" --pty bash -i

Analyysi tehdään sitten kolmessa vaiheessa:

  1. Siirry eriytetyn tallennustilan alueelle ja pura tar-paketti:

    cd /sbf/data
    tar xf /scratch/project_2001234/big_data.tar
    

  2. Suorita analyysi. Tällä kertaa ajamme for-silmukan, joka käyttää komentoa transeq kääntääkseen kaikki big_data-hakemistosta löytyvät fasta-tiedostot uusiksi proteiinisekvenssitiedostoiksi:

    for ffile in $(find ./ | grep fasta)
    do
        transeq ${ffile} ${ffile}.pep
    done 
    
    Tässä esimerkissä löytyi noin 52 000 fasta-tiedostoa. Näin ollen käsittelyn jälkeen big_data-hakemisto sisältää nyt 52 000 pientä tiedostoa lisää. Varsinainen käännös on laskennallisesti kevyt tehtävä, joten suurin osa ajasta kuluu vain tiedostojen avaamiseen ja sulkemiseen (I/O).

  3. Kun käsittely on valmis, tallennamme tulokset takaisin scratch-hakemistoon uutena tar-tiedostona:

    tar cf /scratch/project_2001234/big_data.pep.tar ./
    
    Nyt tulokset ovat turvassa yhtenä tiedostona scratchissa, ja voimme poistua interaktiivisesta sessiosta.

Sama analyysimenettely voitaisiin tehdä myös scratch-hakemistossa. Se on kuitenkin hidasta ja voi heikentää jaetun tiedostojärjestelmän suorituskykyä kaikille käyttäjille. Eriytetyn tallennustilan käyttäminen tavallisen Lustre-pohjaisen scratch-hakemiston sijaan antaa paljon vakaammat vasteajat, koska scratchissa suoritusaika vaihtelee paljon Lustre-tiedostojärjestelmän senhetkisen kokonaiskuormituksen mukaan.

Lisätietoja väliaikaisista paikallislevyalueista.

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

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