A přitom by stačilo, aby Linux přestal používat overcommit a aplikace přestaly používat běžnou praxi "tady si zaalokuji 10GB paměti, co kdyby...".
Ve Windows existuje rezervace adresového prostoru, ale pak musím udělat explicitní alokaci v něm. V linuxu stačí do stránky zapsat. Místo vracení výjimku na malloc tak problém padne na process, který je v tom nevině, protože měl tu smůlu, že zrovna zapisoval do prázdné stránky.
Kdyz te to tak trapi, neni problem oom a overcommit zakazat. Pokud te trapi konkretni aplikace neni problem ji omezit.
OOM je nejake reseni na situaci, ktera neni obecne resitelna. Ono uz kdyz se v dnesni dobe dostanes i do swapu, tak to ma zasadni vliv na vykon. Overcommit je paradoxne naopak mnohem spravedlivejsi - alokujes pamet a pouzivas ji? Ok, alokujes pamet a nepouzivas ji? Nemas pamet.
No ja nevim, chrome alokuje 32GB. Protože si tím jen rezervuje adresový prostor, o alokaci nejde. Adresový prostor je vlastní pro každý proces.
Kdyby aplikace ten prostor skutečně alokovala (alloc, ne rezervace), pak by si uživatelé začali stěžovat, že aplikace žere moc paměti a vývojáři by to museli řešit. Takhle na to kašlou, protože overcommit ne?
Představ si to z programátorského hlediska. Tady mám data, které potřebují uložit do paměti, potřebuju 10GB paměti. Operační systém řekne "OK - tady máš 10GB". Začnu těch 10GB plnit daty - a - v lepším případě dostanu signal, v horším mě zabijou. Co když náhodou bych potřeboval udělat nějaký cleanup (takový ten, co nezařídí operační system). Kdyby se dopředu dozvěděl, že těch 10GB nemám, tak se spoustu věcí zjednoduší.
(probe zápis je rovnák na ohejbák)