C'è un modo per impostare il valore di regolazione del killer OOM quando inizia un processo daemon (Apache nel mio caso)? Vorrei dare ai processi Apache una maggiore probabilità di essere uccisi e rendere virtualmente impossibile che alcuni servizi più vitali vengano uccisi dall'assassino dell'OOM.
Risposta accettata:
Penso che la soluzione migliore sarebbe aggiungere uno script separato come parte del tuo init.d. In esso, vorrai fare qualcosa del genere
echo 15 > /proc/`pidof APP_NAME`/oom_adj
Il pidof APP_NAME
recupererà l'ID di processo dell'app con quel nome. Scrivere 15 in /proc/{pid}/oom_adj aumenta la "cattività" del processo {pid}, rendendo più probabile che venga ucciso dal killer OOM.
L'articolo Taming the OOM killer di LWN.net accenna anche ad altre idee che sono state suggerite per consentire la specifica di una "oom_victim", ma non sono sicuro che nessuna di esse sia effettivamente nel kernel.
A proposito:la soluzione migliore sarebbe evitare di dover utilizzare l'OOM Killer in primo luogo. Ricorda il motto non scritto di Micro$oft:non c'è problema che più RAM non possa risolvere.
[Nota:se potrebbe esserci più di uno di questi processi, potresti voler rivedere un po' il codice.]