Odpověď na názor

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

  • 17. 6. 2012 20:13

    Ondřej Novák (neregistrovaný)

    Tommy, proč si myslím, že aplikace nemá co kecat do nastavení operačního systému a jeho práce s diskem? Operační systém je tu od toho, aby izoloval aplikace od HW. Pokud tedy operační systém je schopen zajistit aplikaci to co požaduje, tedy zápis dat na disk, tak skutečně aplikace nemá nárok na to vyžadovat po operačním systému fyzické vykonání. Už proto, že tenhle nárok není možné zaručit.

    To co OS musí aplikaci zajistit je, aby data byla koherentní, tedy aby zápis v jednom procesu se pak projevil při čtení v jiném procesu. Pokud má aplikace k dispozici funkci flush, tak jen proto, aby zajistila, že interní vyrovnávací paměti se přepíší do vyrovnávacích pamětí OS, které zajišťují koherenci. OS by měl aplikaci zajistit pořadí, aspoň na kritických místech, rozhodně ale nemusí zaručovat aplikaci fyzický zápis. Může to být taky proto, že cílové médium není zrovna k dispozici, je vytížené, nebo OS jednoduše ví, že zápisy lze pozdržet, nebo sloučit do jednoho balíku, protože OS má tradičně větší přehled o stavu systému, než samotná aplikace. Co když se ukáže, že aplikace zapisuje data pro jiný proces,který je následně načte a soubor smaže. OS tohle může lépe podchytit a ušetřit spoustu výkonu.

    Pokud by fsync v btrfs zajišťoval pouze funkci seřazení, bez nutnosti provádět fyzický zápis, pak ať tam ta funkce zůstane. Ale zatím to je výkonnostní problém.