Řeknu asi šílený, ale zřejmě naprosto relevantní argument. Co když je cílovým mediem magnetofonová páska? Pokud by OS měl zaručit fyzické zapsání, tak tím totálně zlikviduje výkon systému, protože by to znamenalo přetočit pásku na určité místo a provést zápis, ať již to zařízení zrovna vykonává cokoliv.
Obecně mám za to, že zápisy jsou vždy pomalejší, než čtení a navíc by zápisy měly býti méně prioritní, než čtení (přednost mají ti, co odchází z disku, pak teprve ti, co na disk vstupují). Protože při čtení se musí čekat, zatímco při zápisu většinou ne. Jakékoliv nucení zápisů ze strany aplikace znamená, že aplikace neadekvátně zasahuje do priorit nastavené pro optimální výkon. A to jen pro případ události, která nastane výjimečně. U zabezpečených systému se stejně předpokládá UPSka a signál, který syncne disky při výpadku proudu před tím, než v UPSce dojde baterka
Pro integritu dat přitom není rozhodující, zda se zápis provedl fyzicky. Rozhodující je správné pořadí zápisu. Drtivá většina žurnálovacích systémů je na tom založena. A žurnály jsou jedinou ochranou před vytváření nekonzistentních stavů při výpadcích. Fsync je tedy nejen nevhodná, ale i zbytečná. (k pořadí stačí, jak píšete, barriers, ačkoliv nevím, kde to v tom linuxu najdu),
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 51 251×
Přečteno 24 069×
Přečteno 22 919×
Přečteno 21 135×
Přečteno 17 849×