Hyppää sisältöön

LUE

Note

Vaikka pyrimme kaikin tavoin tekemään työkaluista 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 paremmin toimivan tiedostojärjestelmän kaikille käyttäjille.

Kokoa koskevia tietoja kysyttäessä on tärkeää rajata käsiteltävä tiedostojoukko. Jotkin toiminnot voivat olla sekä hitaita että kuormittavia tiedostojärjestelmälle. Toisin sanoen älä suorita työkalua koko projektikansiossa (esim. /scratch/project_12345), vaan valitse sen sijaan pienempiä alikansioita, joissa arvelet olevan paljon tiedostoja tai dataa, joita voisi 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ää annetussa kansiossa olevan datan määrän ja tiedostojen lukumäärän rinnakkaisessa tiedostojärjestelmässä.

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

Toinen huomionarvoinen seikka on, että LUE esittää tulokset varsin helposti ymmärrettävällä tavalla, jolloin käyttäjän ei tarvitse itse kirjoittaa skriptiä raakamuotoisen du-tulosteen pohjalta.

Mahdollisen epätarkkuuden syyt ovat:

  1. Vanhoista tiedostoista, joita ei ole käytetty, puuttuvat kokotiedot.
    • Vaikutuksen alaisten tiedostojen tarkka määrittäminen ei ole aina mahdollista riittävän tehokkaalla tavalla.
  2. Emme voi saada tiedostojen todellista asettelua levyllä, joten saatamme hieman yliarvioida todellisen levytilan käytön.
    • Tiedosto, jonka koko on 95 MB, voi 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 suorittamalla

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 suorittamisen aikana 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 koot. 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, meillä ei ole arviota siitä, 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, jos haluat ohittaa tämän.

Käyttämällä --display-level=<n> voimme näyttää syvemmän hakemistohierarkian saadaksemme tarkempia tietoja.

$ 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 suorittaa työkalun vain yhdessä alikansioista saadaksemme pienemmän ja selkeämmän 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 suorittanut LUEn hakemistossa /scratch/project_12345/dirA/, voit suorittaa sen missä tahansa alihakemistossa ilman, että tiedostojärjestelmältä tarvitsee kysyä tietoja uudelleen. Pakottaaksesi työkalun päivittämään tiedot (esimerkiksi jos ajo tarvitsee muita valintoja tai välimuisti on liian vanha), käytä --refresh. Välimuisti tallennetaan hakemistoon $TMPDIR, joten jos vaihdat solmua, sinun täytyy suorittaa työkalu uudelleen.

Käyttämällä valintoja --yaml file.yaml ja --json file.json voit tallentaa tulosteen helpommin jäsennettävässä muodossa sen sijaan, että se tulostettaisiin näytölle.

Kokotietojen päivittäminen

Kuten mainittiin, vanhoilta tiedostoilta, joita ei ole käytetty viime aikoina, voi puuttua kokotieto, jolloin ne raportoidaan merkinnällä NOSIZE.

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

  1. Suorita 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. Suorita uudelleen lue --sync-size <target_dir>. Edellisen komennon olisi pitänyt ilmoittaa 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. Suorita 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ä ilmoitettiin suoritettaessa komentoa valinnalla --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 suorittaa komennon uudelleen muodossa lue --refresh <target_dir> --stat-unsynced saadaksesi tarkemmat kokotiedot, vaikka tämä on hieman hitaampaa.
  2. Jotkin tiedostot vaativat paljon raskaampia toimintoja kokotiedon synkronoimiseksi.
    • Suorita uudelleen lue --sync-size --slow-sync <target_dir>. HUOM! Valinnan --slow-sync lisääminen tekee toiminnasta noin 10 kertaa hitaampaa kuin pelkällä --sync-size-valinnalla.
    • Ennen tämän tekemistä suorita lue joissakin alikansioissa (ilman --refresh-valintaa) 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, suorita komento valinnalla --slow-sync. Muussa tapauksessa siirry kohtaan 3.
    • Yleensä 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 suorittamista.
    • Jos olet jo suorittanut komennon valinnalla --slow-sync tai varmistanut, ettei sitä tarvita, voit lisätä valinnan --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 tyhjentävästi. Jos painat Ctrl-C keskeyttääksesi työkalun, käsitellyt tiedot tallennetaan ja voit suorittaa komennon uudelleen ilman --refresh-valintaa nähdäksesi tulokset. Muita tapoja rajoittaa suoritusaikaa ovat:

--timeout <n>

Pysäytä <n> minuutin jälkeen (oletus 30 min, jos --timeout-valintaa 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 hakusyvyys arvoon <n>. Oletuksena ei rajoitusta.

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

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