Hlavní navigace

Názor ke článku Jak zakázat explicitní fsync (v Ubuntu) od Tommy - 1) Řeč byla obecně o uživatelských aplikacích, tj....

  • 18. 6. 2012 13:28

    Tommy (neregistrovaný)

    1) Řeč byla obecně o uživatelských aplikacích, tj. procesech běžících v userspace. Vy v postu tvrdíte že tyto aplikace nemají co kecat do toho kdy se má fsyncovat, já tvrdím že toto právo mít mají protože prostě některé aplikace to prostě vyžadují. Pokud nějaká aplikace provádí dle vašeho názoru fsync zbytečně tak si stěžujte vývojářům té aplikace, ne na fsync.

    2) Ale jistě - pokud uživatel preferuje rychlost před nějakou úrovní zaručené konzistence dat v případě výpadku a je si vědom důsledků, nechť si to třeba všechno hodí do paměti a fsync pro něj nebude problém vůbec. Ono to ale většinou bývá tak že uživatel toto přestane oceňovat přesně do okamžiku prvního pádu kdy přijde o nějaká data (i kdyby jenom musel fixovat dpkg databázi).

    Ale znovu opakuji že prostě není pravda že OS může všechno udělat za aplikace - i kdyby se objevila možnost vytvářet barriers, tak nezanedbatelné množství aplikací pro konzistenci dat potřebuje volat fsync.

    3) To že je něco méně časté než výpadek proudu (o čemž by se dalo polemizovat) přeci neznamená že to nejsou relevantní rizika.

    Ad pomalost zápisů - no ale ono to takhle dneska funguje, ne? Aplikace zapisuje do page cache (pokud nepoužívá O_DIRECT) a OS to na pozadí flushuje na médium. Samozřejmě pokud aplikace z nějakého (předpokládejme že dobrého) důvodu neusoudí že potřebuje zavolat fsync, čímž se zápis vynucuje.

    Každopádně on aplikaci nikdo nenutí zapisovat synchronně, ne? Ono totiž prosté write žádný fsync neprovádí, no a pokud ho aplikace zavolá tak to asi dělá z dobrého důvodu ... Když už, aplikace nechce dělat asynchronní I/O tak existuje možnost volat asynchronně alespoň fsync - samozřejmě to ale vyžaduje nějaké programátorské úsilí.

    Průser s vypnutím fsync je v tom že vy nepřijdete jen o těch posledních 10 vteřin - vy si pak totiž nemůžete být jist vůbec ničím protože některé z těch nových zápisů už mohou být na médiu zapsána protože OS se je tak prostě rozhodl přeuspořádat v rámci optimalizace. Takže vy tam máte neznámý mix starých a nových dat a nejste schopen rozlišit co je co a můžete to celé zahodit.

    Ad pomalost zápisů na SSD - to samozřejmě platí jen pokud používáte fs bez TRIM a většina bloků je "plných".