Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

LUE

Huomio

Vaikka pyrimme tekemään työkaluista mahdollisimman helppokäyttöisiä, rinnakkaiset tiedostojärjestelmät, joissa on valtava määrä tiedostoja ja dataa, ovat monimutkaisia. Lue täydet ohjeet ennen työkalun käyttöä!

Sen seuraaminen, kuinka paljon dataa/tiedostoja levyllä on, ja niiden siirtäminen tai poistaminen ajoissa varmistaa suorituskykyisemmän tiedostojärjestelmän kaikille käyttäjille.

Kokoa koskevia tietoja kysyttäessä on tärkeää rajata käsiteltävien tiedostojen joukkoa. Jotkin toiminnot voivat olla sekä hitaita että kuormittaa tiedostojärjestelmää paljon. Toisin sanoen, älä aja työkalua koko projektikansioon (esim. /scratch/project_12345), vaan valitse sen sijaan pienempiä alikansioita, joissa arvelet olevan paljon tiedostoja tai dataa, jotka voitaisiin mahdollisesti siirtää/pakata/poistaa. Oletuksena työkalu hakee kokotietoja vain 30 minuutin ajan ennen lopettamista.

Lyhyt johdanto

LUE on CSC:n supertietokoneilla saatavilla oleva työkalu, joka näyttää datan määrän ja tiedostojen lukumäärän annetussa rinnakkaisen tiedostojärjestelmän kansiossa.

Tärkeää on, että LUE on merkittävästi nopeampi kuin tavalliset työkalut kuten stat tai du (nämä voivat huonona päivänä olla niin hitaita, että niiden käyttö on käytännössä mahdotonta), ja samalla se kuormittaa tiedostojärjestelmää vähemmän. Tähän liittyy kuitenkin mahdollinen pieni tarkkuuden heikkeneminen.

Toiseksi LUE esittää tulokset melko helposti ymmärrettävässä muodossa, jolloin käyttäjän ei tarvitse kirjoittaa omaa skriptiä raakamuotoisen du-tulosteen pohjalta.

Mahdollisen epätarkkuuden lähteet ovat:

  1. Vanhoista tiedostoista, joita ei ole käytetty, puuttuu kokotieto.
    • On olemassa tietty päivämäärä (2020-11-18), jota edeltävältä ajalta dataa ei ole saatavilla Puhdissa. Mahdissa ei ole tällaista rajoitusta.
    • Tämän jälkeen luotujen/käytettyjen tiedostojen pitäisi olla kunnossa.
    • Vaikutuksen alaisten tiedostojen tarkka määrittäminen ei aina ole mahdollista riittävän tehokkaalla tavalla.
  2. Emme voi saada tiedostojen todellista asettelua levyltä, joten saatamme hieman yliarvioida todellisen levytilan käytön.
    • Tiedosto, jonka koko on 95 MB, saattaa käyttää levytilaa vain 68 MB, jos se sisältää suuria määriä pelkkiä nollia.
  3. Tiedostoja, jotka ovat parhaillaan käytössä, ei välttämättä raportoida oikein.

Peruskäyttö

Lataa moduuli komennolla:

module load lue

ja aloita ajamalla

lue <target_dir>

Tuloste

Total size: 8994868686 Processed files: 90551 Permission denied: 16 Missing size: 48955, Other err: 1
path, total size, in dir size, % of total, % of dir
---------------------------------------------------
/scratch/project_12345/dirA  8.4GB  356KB 100.0 100.0
    results                       3.7GB  458MB 44.15 44.15 NOSIZE:2
    installations                 1.4GB  48KB  16.2  16.2 
    datasetA                      684MB  64KB  7.9   7.9
    datasetB                      530MB  56KB  6.12  6.12  NOPERM:1 NOSIZE:17
    testing                       512MB  8KB   5.92  5.92 
    images                        395MB  764KB 4.56  4.56 
    numpy-git                     292MB  12KB  3.37  3.37 
    newAB                         263MB  412KB 3.04  3.04  NOPERM:9 NOSIZE:953
    cuda_old                      249MB  4KB   2.87  2.87 
    AI-simu                       176MB  52KB  2.03  2.03  NOSIZE:43491
    mpi-test                      60MB   52KB  0.69  0.69 
WARNING: Size information is missing for 48956 files
Rerun with --sync-size to update size information, estimated duration: 43 seconds

Työkalun ollessa käynnissä se tulostaa, kuinka monta tiedostoa se on käsitellyt, tiedostojen kokonaiskoon, kuinka monta hakemistoa ei voitu avata ja kuinka monelta tiedostolta puuttui raportoitu koko.

Info

Käyttämällä -c/--count-valitsinta voit näyttää tiedostojen lukumäärän datamäärän sijaan.

Kun työkalu on käynyt tiedostot läpi, se tulostaa <target_dir>-hakemiston koon sekä mahdollisten alikansioiden koon. Sarakkeet vasemmalta oikealle ovat:

  • Hakemiston/tiedoston nimi
  • Hakemiston kokonaiskoko (mukaan lukien alihakemistot) tai tiedoston koko
  • Hakemistossa olevien kaikkien tiedostojen koko (pois lukien alihakemistot)
  • Kuinka monta prosenttia hakemisto tai tiedosto on <target_dir>-hakemiston kokonaiskoosta
  • Kuinka monta prosenttia hakemisto tai tiedosto on emohakemistonsa kokonaiskoosta
  • Lukumäärät siitä, kuinka monta hakemistoa ei voitu avata (NOPERM) tai kuinka monelta tiedostolta puuttui kokotieto (NOSIZE)

Info

Jos emme voineet avata hakemistoa, emme voi arvioida lainkaan, kuinka paljon dataa kyseinen hakemisto sisältää. Katso kokotietojen päivittäminen, miten NOSIZE-virhe korjataan. NOPERM-virheen korjaaminen edellyttää, että hakemistojen omistaja korjaa käyttöoikeudet.

Oletuksena tiedostoja tai tyhjiä kansioita ei näytetä tulosteessa. Käytä --show-all ohittaaksesi tämän.

Valitsimella --display-level=<n> voimme näyttää syvemmän hakemistohierarkian saadaksemme tarkempaa tietoa.

$ lue --display-level=2 /scratch/project_12345/

path, total size, in dir size, % of total, % of dir
---------------------------------------------------
/scratch/project_12345/dirA        8.4GB  356KB 100.0 100.0
    results                            3.7GB  458MB 44.15 44.15
        simu1                              2.8GB  522MB 32.84 74.38 NOSIZE:1
        simu2                              521MB  521MB 6.02  13.64 NOSIZE:1
    installation                       1.4GB  48KB  16.2  16.2 
        gcc10                              351MB  351MB 4.05  25.02
        gcc11                              351MB  351MB 4.05  25.02
        clang15                            351MB  351MB 4.05  25.02
        intel                              350MB  350MB 4.04  24.94

Vaihtoehtoisesti voimme ajaa työkalun vain yhdessä alikansioista saadaksemme pienemmän, vähemmän sekavan tulosteen.

$ lue /scratch/project_12345/dirA/result

path, total size, in dir size, % of total, % of dir
---------------------------------------------------
/scratch/project_12345/dirA/result           3.7GB  458MB 100.0 100.0
    simu1                                        2.8GB  522MB 74.38 74.38 NOSIZE:1
    simu2                                        521MB  521MB 13.64 13.64 NOSIZE:1

LUE ylläpitää hyvin yksinkertaista ajokertojen välimuistia. Kun olet ajanut LUE:n hakemistossa /scratch/project_12345/dirA/, voit ajaa sen missä tahansa alihakemistossa ilman, että tiedostojärjestelmältä tarvitsee tehdä uusia kyselyjä. Pakottaaksesi työkalun päivittämään datan (esimerkiksi jos ajo tarvitsee muita valitsimia tai välimuisti on liian vanha), käytä --refresh. Välimuisti tallennetaan hakemistoon $TMPDIR, joten jos vaihdat solmua, sinun täytyy ajaa komento uudelleen.

Valitsimilla --yaml file.yaml ja --json file.json voit tallentaa tulosteen helpommin jäsennettävään muotoon sen sijaan, että se tulostettaisiin näytölle.

Kokotietojen päivittäminen

Kuten mainittiin, tiedostoja, joita ei ole käytetty sitten päivän 2020-11-18, ei raportoida oikein. Huomaa, että tämä koskee vain Puhtia, Mahdissa tätä rajoitusta ei ole.

Seuraavaksi ovat vaiheet tämän korjaamiseksi. Tämä toimenpide tarvitsee tehdä vain kerran, jonka jälkeen koko pitäisi raportoida oikein:

  1. Aja lue <target_dir>.
    • Jos varoituksia ei tulostu eikä NOSIZE-merkintöjä ole, raportoitu koko on todennäköisesti melko tarkka. Muita vaiheita ei tarvita.
  2. Aja uudelleen lue --sync-size <target_dir>. Edellisen komennon olisi pitänyt raportoida vaikutuksen alaisten tiedostojen määrä ja hyvin karkea arvio kestosta.
    • Edistymispalkki päivittyy näyttämään, kuinka monta tiedostoa on käsitelty ja kuinka montaa tiedostoa ei voitu päivittää riittämättömien käyttöoikeuksien vuoksi.
  3. Aja uudelleen lue --refresh <target_dir>.
    • Näytetyn koon pitäisi olla melko tarkka.

Jos NOSIZE-merkintöjä raportoidaan edelleen:

  1. Joitakin tiedostoja ei voitu päivittää riittämättömien käyttöoikeuksien vuoksi.
    • Vaikutuksen alaisten tiedostojen määrä raportoitiin ajettaessa valitsimella --sync-size.
      • Jos määrä vastaa NOSIZE-merkintöjen määrää, vaiheita 2. ja 3. ei tarvitse tehdä.
    • Tämän voi korjata vain omistaja korjaamalla käyttöoikeudet.
    • Jos vaikutuksen alaisten tiedostojen määrä on pieni (<1000), voit ajaa uudelleen komennolla lue --refresh <target_dir> --stat-unsynced saadaksesi tarkempaa kokotietoa, vaikka tämä onkin hieman hitaampaa.
  2. Jotkin tiedostot vaativat paljon raskaampia toimintoja kokotiedon synkronoimiseksi.
    • Aja uudelleen komennolla lue --sync-size --slow-sync <target_dir>. HUOM! Valitsimen --slow-sync lisääminen on noin 10 kertaa hitaampaa kuin pelkkä --sync-size
    • Ennen tämän tekemistä aja lue joissakin alikansioissa (ilman --refresh-valitsinta) selvittääksesi, missä NOSISZE-tiedostot sijaitsevat. Käytä sitten ls -l tai du -h varmistaaksesi, etteivät tiedostot oikeasti ole kooltaan nollia. Jos tiedostot näyttävät olevan kooltaan muuta kuin nolla, aja komento valitsimella --slow-sync. Muussa tapauksessa siirry kohtaan 3.
    • Tavallisesti tätä vaihetta ei tarvita.
  3. Jotkin tiedostot ovat hyvin vanhoja ja niiden todellinen koko on nolla -> olemme merkinneet ne virheellisesti.
    • Jos tiedät, että sinulla on ohjelma/kehys, joka tuottaa paljon tyhjiä tiedostoja, harkitse niiden poistamista ennen työkalun ajamista.
    • Jos olet jo ajanut valitsimella --slow-sync tai varmistanut, ettei sitä tarvita, voit lisätä valitsimen --no-guess, jolloin näitä tiedostoja ei raportoida.

Suoritusajan rajaaminen

Työkalun suoritusajan rajaaminen on hyvä ajatus, ja usein saamme hyödyllistä tietoa, vaikka kansiorakennetta ei olisi käyty läpi täydellisesti. Jos painat Ctrl-C keskeyttääksesi työkalun, käsitellyt tiedot tallennetaan ja voit ajaa sen uudelleen ilman --refresh-valitsinta nähdäksesi tulokset. Muita tapoja rajoittaa suoritus aikaa ovat:

--timeout <n>

Pysäytä <n> minuutin jälkeen (oletus 30 min, jos --timeout-valitsinta ei ole asetettu)

--file-limit <n>

Pysäytä haku, kun tietty määrä tiedostoja on käyty läpi.

--size-limit <n>

Pysäytä haku, kun tietty kokonaiskoko on saavutettu. Tuetut yksiköt ovat K, M, G, T. Jos päätettä ei käytetä, oletetaan G.

--search-depth <n>

Rajoita haun syvyys arvoon <n>. Oletuksena ei rajoitusta.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta