Odpověď na názor

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

  • 17. 6. 2012 17:18

    Tommy (neregistrovaný)

    No, nechci tady vyvolávat flame, ale názor "aplikace nemá co kecat do nastavení operačního systému a jeho politiky práce s diskem" mi přijde poměrně svérázný (či padlý na hlavu, mám-li být otevřený). Kdo jiný než aplikace je schopna rozhodnout co je nutno splnit pro konzistenci dat? To je aplikační záležitost a jádro o závislostech mezi jednotlivými zápisy vůbec nic neví a vědět nemůže.

    To že SATA disky sprostě lžou a potvrzují zápis ještě než se data skutečně dostanou na médium je známý fakt. Serverové disky tohle samozřejmě nedělají (navíc většinou mají řadič s cache s baterkou) a rozumné SSD disky mají vlastní baterku pro cache.

    Částečně to jde "opravit" pomocí barriers, které zajišťují pořadí zápisů ale nevynucují je, nicméně transakční systémy vesměs potřebují při commitu fsync provést, aby zajistily ACID. A není to jenom o databázích - jinak by se například mohlo stát že sice instalace proběhne v pořádku ale někdy potom se vám ten systém vypne a jste v háji protože ztratíte netriviální množství dat. A pokud nepoužijete "barriers" tak se nemůžete spolehnout vůbec na nic.

    BTW pokud aplikace zbytečně zapisuje dočasné soubory na disk, není nic jednoduššího než je umístit do tmpfs. Pokud to spadne tak vás jejich ztráta stejně netrápí a rozhodně je to čistější než vypínat fsync přes preload ...