D'après ce que j'ai compris, lorsque le système est proche de ne plus avoir de mémoire libre, le noyau devrait commencer à tuer des processus pour regagner de la mémoire. Mais dans mon système, cela ne se produit pas du tout.
Supposons un simple script qui alloue beaucoup plus de mémoire que celle disponible dans le système (un tableau avec des millions de chaînes, par exemple). Si j'exécute un script de ce type (en tant qu'utilisateur normal), il récupère toute la mémoire jusqu'à ce que le système se bloque complètement (seul SysRQ REISUB fonctionne).
Ce qui est bizarre, c'est que lorsque l'ordinateur se bloque, le disque dur s'allume et reste allumé jusqu'à ce que l'ordinateur soit redémarré, que la partition d'échange soit montée ou non !
Mes questions sont donc les suivantes :
- Ce comportement est-il normal ? Il est étrange qu'une application exécutée en tant qu'utilisateur normal puisse planter le système de cette manière...
- Y a-t-il un moyen de faire en sorte qu'Ubuntu tue automatiquement ces applications lorsqu'elles obtiennent trop (ou le plus) de mémoire ?
Informations complémentaires
- Ubuntu 12.04.3
- Noyau 3.5.0-44
-
RAM : ~3.7GB de 4GB (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