Apakah ada cara untuk mengatur nilai penyesuaian pembunuh OOM dengan benar ketika proses daemon (Apache dalam kasus saya) dimulai? Saya ingin memberikan kemungkinan yang lebih tinggi untuk dibunuh oleh proses Apache dan membuatnya hampir tidak mungkin untuk beberapa layanan yang lebih vital untuk dibunuh oleh pembunuh OOM.
Jawaban yang Diterima:
Saya pikir Anda sebaiknya menambahkan skrip terpisah sebagai bagian dari init.d Anda. Di dalamnya, Anda akan ingin melakukan sesuatu seperti ini
echo 15 > /proc/`pidof APP_NAME`/oom_adj
pidof APP_NAME
akan mengambil ID proses aplikasi dengan nama itu. Menulis 15 ke /proc/{pid}/oom_adj meningkatkan "keburukan" proses {pid}, membuatnya lebih mungkin untuk dibunuh oleh pembunuh OOM.
Artikel Menjinakkan pembunuh OOM dari LWN.net juga mengisyaratkan beberapa ide lain yang disarankan untuk memungkinkan spesifikasi "oom_victim", tetapi saya tidak yakin ada di antara mereka yang benar-benar ada di dalam kernel.
BTW:Solusi terbaik adalah menghindari keharusan menggunakan OOM Killer sejak awal. Ingat moto tidak tertulis Micro$oft:Tidak ada masalah lagi, RAM tidak bisa diperbaiki.
[Catatan:Jika mungkin ada lebih dari satu proses ini, Anda mungkin ingin sedikit merevisi kodenya.]