Si je comprends bien, lorsque le système est proche de ne pas avoir de mémoire libre, le noyau devrait commencer à tuer les processus pour retrouver de la mémoire. Mais dans mon système, cela ne se produit pas du tout.
Supposons un script simple qui alloue beaucoup plus de mémoire que celui disponible dans le système (un tableau avec des millions de chaînes, par exemple). Si je lance un script comme celui-ci (en tant qu’utilisateur normal), il ne reste plus que la mémoire jusqu’à ce que le système se fige complètement (seul SysRQ REISUB fonctionne).
La partie étrange ici est que lorsque l’ordinateur se fige, le voyant du disque dur s’allume et le reste jusqu’à ce que l’ordinateur redémarre, que je dispose ou non d’une partition de swap!
Mes questions sont donc:
- Ce comportement est-il normal? Il est étrange qu'une application exécutée en tant qu'utilisateur normal puisse simplement planter le système de cette façon ...
- Y a-t-il un moyen de faire en sorte qu'Ubuntu tue automatiquement ces applications lorsqu'elles ont trop (ou plus) de mémoire?
Informations supplémentaires
- Ubuntu 12.04.3
- Kernel 3.5.0-44
-
RAM: ~ 3,7 Go à partir de 4 Go (partagé avec la carte graphique). *
$ tail -n+1 /proc/sys/vm/overcommit_* ==> /proc/sys/vm/overcommit_memory <== 0 ==> /proc/sys/vm/overcommit_ratio <== 50 $ cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 4194300 344696 -1