web-dev-qa-db-fra.com

Ubuntu se fige quand peu de mémoire

Mon serveur Ubuntu a fonctionné pendant un mois sans aucun problème. Mais la semaine dernière, j'avais commencé à utiliser des programmes nécessitant plus de mémoire. Et lorsque la mémoire disponible est d’environ 100 Mo, le système se bloque complètement. Je ne peux rien taper, déplacer le curseur, me connecter depuis PuTTY .. tout simplement rien .. mais, chose étrange, ce disque dur fonctionne toujours (clignote) .. Je peux entièrement reproduire ce problème et il se produit presque à chaque fois que la mémoire disponible est suffisante. 100 Mo. Mais j'ai un fichier d'échange, et dans ce fichier d'échange, il y a suffisamment d'espace libre. Voici l'état de ma mémoire 1 seconde avant son gel.

 Toutes les 1.0s sont gratuites -mh lun. Mar. 19 17:05:33 2018 
 
 Total utilisé buff/cache partagés gratuits disponibles 
 Mem: 11G 10G 115M 1.2G 1,5 G 115 M 
 Permutation: 7,9 G 2,4 G 5,5 G 

Voici mon noyau Linux

 Linux xxx 4.15.1-041501-generic # 201802031831 SMP sam. Févr. 3 18:32:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 

Voici ma version d'ubuntu

 Aucun module LSB n'est disponible. 
 Identifiant du distributeur: Ubuntu 
 Description: Ubuntu 17.10 
 Version: 17.10 
 Nom de code: astucieux 

Voici mes swappines, configuration surcommit_memory et surcommit_ratio

 vm.swappiness = 60 
 vm.overcommit_memory = 0 
 vm.overcommit_ratio = 50 

Voici ma configuration matérielle

 Carte mère: PRIME B350-PLUS 
 CPU: AMD Ryzen 7 1700 Processeur à huit coeurs 
 RAM: 4 Go + 8 Go DDR4 
 Disque dur: Samsung 960 evo 250 Go 

Bien sûr, je peux mettre à niveau ma mémoire à 16 Go, mais je souhaite tout de même que mon système soit stable. Est-ce que quelqu'un a une idée de ce qui pourrait être faux?

5
user1247373

Je crois que c'est la même question que celle-ci, même si vous avez activé le swap: https://unix.stackexchange.com/q/373312/30602

Fondamentalement, le noyau (ou kswapd0) supprime les pages de code (exécutables) de tous les processus actifs afin de libérer plus de mémoire vive. Ainsi, à chaque changement de contexte quand un processus reprend son exécution, il doit être relu disque en mémoire et alors seulement il peut reprendre son exécution.

Cela doit se produire tellement de fois par seconde, couplé au fait que les disques sont bien plus lents que la RAM, que le système d'exploitation est considéré comme se figeant. C’est comme si RAM était temporairement remplacé par le disque, et tout cela parce que le noyau fait l'erreur de est également en train d'expulser les pages exécutables sauvegardées par un fichier des processus en cours, au lieu des pages inactives.

Si vous voulez essayer de voir ce qui se passe si le noyau ne les exclut pas, vous pouvez le recompiler avec le correctif this , visible dans this question. Ce qui devrait arriver, c’est que le système d’exploitation doive se figer pendant au plus 1 seconde au lieu de minutes (ou de façon permanente) et qu’il ne devrait y avoir que peu ou pas de disques de disque.

1
Marcus Linsner