Mitä hakemistoa minun kannattaa käyttää monien pienten tiedostojen analysointiin?
Puhtiin ajettava interaktiivinen eräajo mahdollistaa komentotulkkisession käynnistämisen laskentasolmulla enintään seuraavilla resursseilla:
- 8 ydintä
- 76 Gt muistia
- 7 päivän ajoaika
- 720 Gt nopeaa paikallista väliaikaislevyä
Käynnistääksesi interaktiivisen session Puhdissa, suorita komento:
Yksi Puhtiin 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 Puhtin solmujen käytettävissä. Nämä hakemistot ovat kuitenkin tehottomia tuhansien tiedostojen hallintaan.
Yleisesti ottaen kannattaa välttää työnkulkuja, joissa täytyy luoda suuria määriä pieniä tiedostoja. Jos sinun kuitenkin täytyy työskennellä tuhansien tiedostojen kanssa, kannattaa harkita NVMe-pohjaisten paikallisten väliaikaislevyalueiden käyttöä joko tavallisten tai interaktiivisten eräajojen kautta. Paikallinen scratch-alue on solmukohtainen ja näkyy vain sitä pyytäneelle eräajolle. Ajon päätyttyä paikallinen scratch tyhjennetään. Tämän vuoksi sinun täytyy aina ensin siirtää aineistosi paikalliselle levylle, ja työn valmistuttua 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-hakemistoon (/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 52 000 pientä tiedostoa enemmän. 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ä kaikkien käyttäjien kannalta. Eron havainnollistamiseksi alla on suoritusaikavertailu siitä, kun yllä olevat kolme vaihetta suoritetaan $LOCAL_SCRATCH-alueella ja tavallisessa Lustre-pohjaisessa scratch-hakemistossa. $LOCAL_SCRATCH-alueen vasteajat ovat melko vakaita, mutta scratch-hakemistossa suoritusajat vaihtelevat paljon 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 |