Mitä hakemistoa minun kannattaa käyttää monien pienten tiedostojen analysointiin?
Puhdin interaktiivinen eräajo mahdollistaa komentotulkkisession käynnistämisen laskentasolmulla, jossa on enintään:
- 8 ydintä
- 76 Gt muistia
- 7 päivän ajoaika
- 720 Gt nopeaa paikallista väliaikaista levytilaa
Käynnistääksesi interaktiivisen session Puhdissa suorita komento:
Yksi Puhdin interaktiivisten eräajojen hyödyllisistä ominaisuuksista on
NVMe-pohjainen nopea paikallinen väliaikaistallennusalue
($LOCAL_SCRATCH), jota voit pyytää käyttöösi. "Tavalliset" Lustre-pohjaiset
projektikohtaiset hakemistot scratch ja projappl voivat tallentaa suuria
määriä dataa, ja ne ovat kaikkien Puhdin 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 paikallisten väliaikaisten levyalueiden käyttöä joko tavallisten tai interaktiivisten eräajojen kautta. Paikallinen scratch-alue on solmukohtainen ja näkyy vain sille eräajolle, joka on sitä pyytänyt. Kun ajo päättyy, paikallinen scratch-alue tyhjennetään. Tämän vuoksi sinun täytyy aina ensin tuoda aineisto paikalliselle levylle, ja kun olet valmis, kopioida säilytettävä data takaisin johonkin pysyvämpään tallennuspaikkaan, kuten scratchiin tai Altaaseen.
Paikallisen scratch-alueen tehokkuuden havainnollistamiseksi 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 nopeaa paikallista väliaikaista levytilaa.
Analyysi tehdään sitten kolmessa vaiheessa:
-
Siirry paikalliselle scratch-alueelle ympäristömuuttujan
$LOCAL_SCRATCHavulla ja pura tar-paketti: -
Suorita analyysi. Tällä kertaa ajamme
Tässä esimerkissä löytyi noin 52 000 fasta-tiedostoa. Käsittelyn jälkeenfor-silmukan, joka käyttää komentoatranseqkääntääkseen kaikkibig_data-hakemistosta löytyvät fasta-tiedostot uusiksi proteiinisekvenssitiedostoiksi:big_data-hakemisto sisältää siis 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). -
Kun käsittely on valmis, tallennamme tulokset takaisin scratch-hakemistoon uutena tar-tiedostona:
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. Eron havainnollistamiseksi alla on suoritusaikavertailu
kolmen yllä kuvatun vaiheen ajamisesta $LOCAL_SCRATCH-alueella ja tavallisessa
Lustre-pohjaisessa scratch-hakemistossa. $LOCAL_SCRATCH-alueen vasteajat ovat
melko vakaita, mutta scratch-hakemistossa suoritusaikojen vaihtelu on suurta
Lustre-tiedostojärjestelmän senhetkisen kokonaiskuorman mukaan.
| Vaihe | $LOCAL_SCRATCH |
/scratch |
|---|---|---|
| 1. Tar-tiedoston avaaminen | 2m 8s | 4m 12s |
| 2. Käsittely | 9m 42s | 21m 58s |
| 3. Uuden tar-tiedoston luominen | 2m 25s | 42m 21s |
| Yhteensä | 14m 15s | 1h 8m 31s |