Viene spiegato qui che OOM-Killer può essere configurato tramite overcommit_memory
e che:
- 2 = nessun overcommit. Le allocazioni falliscono se si chiede troppo.
- 0, 1 = overcommit (euristicamente o sempre). Uccidere alcuni processi basati su alcune euristiche quando si accede a troppa memoria.
Ora, potrei fraintenderlo completamente, ma perché non esiste un'opzione (o perché non è l'impostazione predefinita) per uccidere il processo stesso che tenta effettivamente di accedere a troppa memoria allocata?
no overcommit
essenzialmente fa l' opzione. Se un processo richiede troppa memoria, non riesce. Se verifica l'errore, si ucciderà di solito; in caso contrario, probabilmente otterrà un errore di segmentazione quando tenta di dereferenziare il puntatore null che malloc()
ritorna e si arresterà in modo anomalo.
no overcommit
modalità, secondo le fonti citate (come kernel.org/doc/Documentation/vm/overcommit-accounting ). Penso che modificherò la tua domanda di conseguenza.