Pocet souboru v adresari

Alexandr Malusek malusek na hroch.ujf.cas.cz
Úterý Září 15 22:20:10 CEST 1998


Ivo.Panacek na regionet.cz (Ivo Panacek) writes:

> Ja se kdysi ucil UNIX na puvodnim AT&T (ruzne verze) a tehdy platilo
> "zlate" pravidlo, ze vic nez 512 souboru v adresari je "moc" z hlediska
> rychlosti.

To se skutecne uvadelo, ale aby to nevypadalo, ze kdo ma 10000 souboru
ve /var/spool/mail adresari, je naveky ztracen. Pomoci nasledujiciho
skriptu jsem vytvarel 100000 adresaru:

#!/bin/ksh
let i=0
while (( i < 100000 )); do
  touch file$i
  if (( i % 500 == 0 )); then 
    date >> /tmp/casy
  fi
  let i=i+1
done

Ze souboru /tmp/casy jsem pak usuzoval, jak dlouho trva pristup k
souboru. Vydrzel jsem to jen do 30000 ;-) (zacal jsem po 21:00). V
teto oblasti je zavislost jeste linearni (odhad od oka).

Je-li adresar prazdny, trva pristup k souboru (pres touch) asi 0.01 s,
je-li soubor v adresari na pozici 10000, pak to trva asi 0.03 s: 

pocet souboru    doba pristupu
0                0.01 s
10000            0.03 s
30000            0.08 s

Takze pro 30000 souboru je sice pristup asi 8x pomalejsi, ale porad je
to jen 0.08s, coz neni tak hrozne.

Pri druhem spusteni skriptu (touch na existujici subor) jsem ziskal
priblizne polovicni hodnoty.

Tezkou hlavu z 10000 adresaru ve /var/spool/mail bych proto rozhodne
nemel. Ale je jasne, ze pro nektere aplikace to muze byt omezeni, a ze
CPU to uzira. (Pocitac: Pentium 150 MHz, 64 MB)

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux