( zeller | 2015. 02. 16., h – 15:01 )

Az OOM akkor sül el, amikor már swap sincs, az overcommit meg arról szól, hogy a valóban rendelkezésre áló memóriánál többet is lehet foglalni - például akkor, amikor egy nagy processz forkol egyet úgy, hogy a rendelkezésre álló szabad ram+swap kevesebb, mint a processz teljes mérete. És mégis működik, sőt, működni is fog, mert belép a copy-on-write, és kiderül, hogy a child (és a szülője is) az esetek döntő többségében csak a számára előjegyzett memória töredékét írja, a nagyobbik részét csak olvassa. Persze abban az esetben, ha az egyikük a memóriát elkezdi erőteljesen írni, akkor kifut a gép a memóriából, és valakit ki kell onnan tessékelni - na ezt csinálja az OOM-killer.

A copy-on-write jó dolog, (a fork futási idejével és memóriával spórol), gyakorlatilag ezt is ki kéne hajítani/át kéne írni, hiszen jórészt értelmét vesztené, ha nem lenne overcommit.

Te azt szeretnéd, hogy ne legyen overcommit, csak annyi memóriát osszon ki a rendszer, amennyi ténylegesen rendelkezésre áll. Ez a működés is beállítható Linuxon, de általános esetben a memória pazarlásához vezet, haszna pedig nagyon kevés - ergo alapbeállításként nem így működik az OS.