update/bdflush problem

Alexandr Malusek malusek na sysel.ujf.cas.cz
Středa Srpen 6 13:15:49 CEST 1997


kubicek na mathesius.ff.cuni.cz (Petr Kubicek) writes:

> ...
> Rozhodne nejde rici, ze by UFS byl vyrazne pomalejsi, ale spis to
> opravdu bude lepsi praci s adresari.

Vase vysledky i zavery plne odpovidaji skutecnostem, ktere byly o ufs
publikovany. Doplnim nekolik skutecnosti, ktere problem snad trochu
objasni.

ufs (ze SVR4) vychazi z Berkeley Fast File Systemu (FFS). Podobne jako
ext2fs implementuje "cylinder groups" (Zhruba receno: partition je
rozdelena na nekolik cylinder groups, kazda z grup ma vlastni seznam
inodu a datovych bloku). Pri praci s ufs filesystemem je pouzivana
alokacni strategie, ktera optimalizuje sekvencni pristup:
- umistovat datove bloky souboru ve stejne grupe jako je jeho inode
- alokovat datove bloky tak, aby byl bran v uvahu "interleave" disku

Zaroven je ale potreba udrzet rovnomerne zaplnovani group, takze:
- je-li velikost souboru vetsi nez neco, datove bloky se alokuji
  v jine cylinder group.
- adresar se vytvari v jine cylinder groupe nez jeho rodicovsky
  adresar, pricemz se vybiraji grupy ktere maji nadprumerny pocet
  volnych inodu a z tech se dale vybiraji ty, ktere adresaru maji
  nejmene.

(Neni to kompletni seznam kriterii, zde nezbyva nez odkazat na
literaturu)

Kdyz se pokusite v danem adresari vytvorit napr. 1000 podadresaru, pak
hlavicka disku beha od jedne cylinder grupy ke druhe.  (Schvalne si to
zkuste - daval jsem to jako ukol pri cvicenich :-).  Budete prekvapen,
jak dlouho to trva v ufs a ext2fs). Tady je potreba znat parametry
disku (head seek, rotational latency), aby vyplynulo, ze se jedna o
casove velmi narocnou operaci. Navic rada techto operaci je
synchronnich, takze kontroler disku nemuze poradi zapisu
preorganizovat.

K tomu, jak to dela ext2fs bych se jeste rad vratil, ale v jinem
dopise ;-).

Co se tyce vyssiho vykonu ufs pri sekvencnim zapisu: Myslim, ze to
muze byt zpusobeno tim, ze ufs ma obvykle vetsi velikost datoveho
bloku (default je 8KB, u Linuxu mi dumpe2fs vypisuje 1 KB, ale je to
volitelne). Jak jsem jiz uvadel, Solaris pouziva kernel asynchronnous
IO - to by take mohlo trochu prispet (pokud je Linux nepouziva -
nevim).

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


Další informace o konferenci Linux