Odpověď na názor

Odpovídáte na názor ke článku Jak zakázat explicitní fsync (v Ubuntu).

  • 17. 6. 2012 23:23

    Ondřej Novák (neregistrovaný)

    Tommy, sledujte tok mých myšlenek.

    1) Aplikace, které vyžadují vlastnost, že po potvrzení zápisu je skutečně zapsáno, těch by se dalo na prstech spočítat, a rozhodně do nich nepatří žádná aplikace pro desktopové uživatele. Ani jedna prosím. Málokterý uživatel dokáze postihnout to, zda stihnul zmáčknout control+s před výpadkem, nebo až po výpadku.

    2) OS má naprostý přehled o tom, které data zapsal. Nezná pouze jejich interpretaci. A tomu to může být fuk. OS musí zajistit konzistenci dat a nejde jen o fsck. Měl by umožnit vytvářet žurnály aplikací, nebo jim v tom pomoci právě třeba pomocí bariér. Opakuji, že desktopový user (99% nasazení výpočetní techniky), neocení fyzický zápis na disk, ale negativně ocení pomalou odezvu systému.

    3) Čili jmenujete případy, které jsou ještě méně časté, než klasický výpadek proudu. Bravo.

    Pomalost zápisů pramění z toho, že na čtení je většinou třeba čekat. Malokterá aplikace si umí data "přednačíst do paměti", zpravidla to za ni řeší OS, pokud odhadne, zda aplikace bude číst sekvenčně nebo náhodně. U zápisů je to jednodušší. Právě pokud aplikace nepotřebuje mít utvrzeno, že zápis skutečně proběhl, nemusí na zápis čekat, To může zařídit OS v době, kdy nemá disk co na práci. Tahle optimalizace je velice účinná právě u SSD disků, kde jsou zápisy navíc velice pomalé.

    Ano, mávejte si tu nějakými zkratkami a normami, ale je lepší se vrátit zpátky na zem. Právě vám píšu s takto upravením OS v mém notebooku a zatím mi několikrát dceruška vytrhla flashku za běhu, jednou se mi kousnu kernel (nesouvisí s fsync) a několikrát se neprobudil (stávalo se i před úpravou) a o data jsem zatím nepřišel.

    Třeba jednou přijdu o těch 10 sekund práce, kdy se to neuložilo, neb mám zápisy na disk vynucený do 10 sekund po posledním zápisu do cache. Mimochodem i to je řešení pro příliš paranoidní uživatele. Zkrátit expiraci cache na sekundu. Furt je to lepší, než X krát zavolaný (f)sync za sekundu z aplikace, která pouze kopíruje nějaké soubory.