『LINUX カーネル HACKS』のHACK#16に、OOM Killerについて説明があった。
各プロセスにポイントを付けて、ポイントの高い奴を殺す。
この時子プロセスがいれば、先に子プロセスを殺す。
仮想メモリを使っていて、子プロセスがたくさんあって、CPU使用時間や起動時間が短いものが選ばれやすい。
/proc//oom_score_adj
を、「-1000」にしておくと殺されない。
stressコマンド
http://weather.ou.edu/~apw/projects/stress/
をまねして使ってみた。
# stress --vm 2 --vm-bytes 1G --vm-keep
stress: info: [18905] dispatching hogs: 0 cpu, 0 io, 2 vm, 0 hdd
stress: FAIL: [18905] (415) -- worker 18906 got signal 9
stress: WARN: [18905] (417) now reaping child worker processes
stress: FAIL: [18905] (451) failed run completed in 32s