Pomalý zápis malých souborů

Tonda

Pomalý zápis malých souborů
« kdy: 16. 05. 2011, 17:08:11 »
Zdravím, uvažuju nad koupí SSD disku a tak koukám na testy. Zarazila mě jedna věc, řádově se liší rychlost sekvenčního čtení/zápisu od práce s malými (4kb) soubory. Sekvenčně dá disk třeba 250MB/s, ale s malými soubory jen 10MB/s. Proč to tak je? Jaký je rozdíl mezi zápisem jednoho velkého a stovky malých souborů?


Nassir

Re: Pomalý zápis malých souborů
« Odpověď #1 kdy: 16. 05. 2011, 18:23:41 »
Bloky na ssd su napr 4KiB velke a ak o tom kernel nevie a mysli si, ze su 512 B velke, tak nastava problem: pri prepise maleho useku sa musi cely usek precitat, zmenit jeho cast a znova zapisat. Takze si cital a zapisoval celkovo 16 krat viac dat, nez bolo potrebne. No a teraz si predstav prepisovanie vela inodov, koli zapisu malych suborov - 1 bajtovy novy subor vynuti citanie a zapis celkovo 16000 nasobku svojej velkosti :)
Zaroven sa nemoze pouzit ziaden paralelizmus - nemozes zaroven zapisovat dva subory naraz.
Dnesne radice sa vraj robia stylom raid diskov - teda vo vnutri mas niekolko mensich casti disku, kazdy s vlastnym radicom a nad tym raid radic.
Pri velkych suboroch a zapise napr 4MiB dat sa cele ulozia do vyrovnavacej pamete disku a ten ulohu rovno rozdeli stromovo do "nizsich casti radica" ako paralelny zapis 8 casti (kazda jednym radicom) po 512KiB.
Teraz ked to porovname (nespravne, ale na ilustraciu staci), tak mozeme dosiahnut rozdiel 128000 nasobku rychlosti pri zapise vela 1 Bajtovych suborov a jedneho napr. 1Gb.

Re: Pomalý zápis malých souborů
« Odpověď #2 kdy: 16. 05. 2011, 21:55:01 »
Zdravím, uvažuju nad koupí SSD disku a tak koukám na testy. Zarazila mě jedna věc, řádově se liší rychlost sekvenčního čtení/zápisu od práce s malými (4kb) soubory. Sekvenčně dá disk třeba 250MB/s, ale s malými soubory jen 10MB/s. Proč to tak je? Jaký je rozdíl mezi zápisem jednoho velkého a stovky malých souborů?

Zápis malých souborů na SSD není pomalý, ale naopak, je relativně rychlý. Relativně vůči klasickému točivému disku. Zatímco u SSD jde práce s 4kB soubory rychlostí jako píšeš 10MB - 20MB/s (dle modelu), tak u HDD jsou to rychlosti v řádech 0.5MB/s. SSD je v práci s takto malými bloky až 40x rychlejší, než klasický disk.

Pomalejší zápis 4kB souborů oproti sekvenčnímu zápisu je dám mnoha faktory. Některé už popsal předřečník, já k tomu dodám také režii systému souborů, kdy pro každý zapisovaný soubor musí upravit adresářovou strukturu, tabulku inode, bitmapu volného místa a další metadata. To přidává další zápisy navíc.