Il est expliqué ici que OOM-Killer peut être configuré via overcommit_memory
et que:
- 2 = pas de surengagement. Les allocations échouent si vous en demandez trop.
- 0, 1 = surcharge (heuristiquement ou toujours). Tuez certains processus basés sur des heuristiques lorsque trop de mémoire est réellement accédée.
Maintenant, je peux complètement mal comprendre cela, mais pourquoi n'y a-t-il pas une option (ou pourquoi n'est-ce pas la valeur par défaut) pour tuer le processus même qui essaie réellement d'accéder à trop de mémoire allouée?
no overcommit
essentiellement ce que fait l' option. Si un processus demande trop de mémoire, il échoue. S'il vérifie l'erreur, il se tuera généralement; si ce n'est pas le cas, il obtiendra probablement une erreur de segmentation lorsqu'il essaiera de déréférencer le pointeur nul qui malloc()
revient, et il se bloquera.
no overcommit
mode, selon les sources citées (telles que kernel.org/doc/Documentation/vm/overcommit-accounting ). Je pense que je vais modifier votre question en conséquence.