Question La faible quantité de RAM dans Debian / Ubuntu provoque un blocage complet avec le disque


J'ai eu ce grave problème de performance, à la fois dans Ubuntu 11.10 et Debian Wheezy:

Si un processus utilise une grande quantité de mémoire vive (par exemple, 3 700 Mo sur 3 900 Mo), le système devient rapidement inutilisable, avec un problème constant de disque. Il arrive au point où le gestionnaire de fenêtres ne répond pas, et la suppression du processus incriminé prend plusieurs minutes. (En fait, arriver à un terminal, émettre pkill, attendre un peu plus longtemps jusqu'à ce que le signal passe réellement)

Ce problème se produit même si la partition d'échange est complètement désactivée.

En examinant avec iotop, il semble que la majeure partie de l’activité du disque consiste à lire des disques, à accéder à des processus tels que Google Chrome et au moteur de rendu X Window. Cependant, il ne s'agit que d'informations limitées, car iotop n'est plus mis à jour lorsque le système est en mode full-thrash.


Ma question est:

1) qu'est-ce qui cause la lecture massive du disque? 2) comment puis-je empêcher cela de rendre le système inutilisable?


6
2018-03-19 18:33


origine


Ne désactivez pas le swap. Cela obligera le système à garder toutes les pages sales en mémoire, ce qui posera le problème beaucoup pire. Parlez-nous de votre problème extérieur. Pourquoi un processus utilise-t-il autant de mémoire? Est-ce parce que c'est cassé? Est-ce malveillant? - David Schwartz
J'ai rencontré le problème de différentes manières. ouvrant parfois trop d'onglets chrome le déclencheront, essayant parfois de mettre en cache des structures de données 1M + dans un script python le provoqueront. Exécuter make avec -j sur 6 ou 7 sur quelque chose comme les librairies Boost va manger de la mémoire de manière assez fiable, puis me laisser en train de me débattre. - YenTheFirst


Réponses:


Le système déplace des données dans la RAM en entrée et en sortie du disque dur pour faire place à d’autres données dans la RAM. Les opérations sur disque sont beaucoup plus lentes que les opérations RAM, ce qui ralentit considérablement le système. Lorsque votre système est à court de mémoire physique, le système le fait pour augmenter la quantité de mémoire «virtuelle» disponible, au détriment des performances. Cette condition s'appelle raclée.

Malheureusement, la seule solution complète à ce problème consiste à ajouter plus de RAM. Les modules de mémoire sont relativement peu coûteux; Si vous atteignez constamment les limites de la mémoire physique disponible, vous devez ajouter de la mémoire à votre ordinateur.

Modifier: Comme votre système manque de mémoire physique, les programmes doivent lire plus souvent sur le disque dur, car l'espace libre dans la mémoire vive est normalement utilisé pour stocker des fichiers fréquemment ou récemment utilisés pour réduire la lecture du disque. Avec une faible mémoire vive disponible, moins de fichiers peuvent être mis en cache, ce qui réduit les performances. C'est particulièrement le cas avec des applications telles que Chrome, qui consomme beaucoup de mémoire et d'E / S. Encore une fois, l'ajout de RAM augmentera les performances. Pour plus d'informations sur la mise en cache, consultez le Article de Wikipedia.


4
2018-03-19 18:39



Le problème se produit même si je désactive complètement une partition de swap. En outre, je ne pense pas que plus de RAM aidera, car le problème a tendance à se produire avec des programmes dégénérés (dont certains sont écrits par moi) en utilisant des quantités arbitraires de mémoire. - YenTheFirst
Certains processus système peuvent bloquer les opérations d'E / S normales dans des applications telles que Chrome. Dans ce cas, il semble que le tueur de MOO tente de tuer des processus en utilisant des quantités anormales de mémoire. - bwDraco
Je suis désolé, je ne comprends pas très bien ce commentaire. Les E / S ne sont pas bloquées - Chrome, X, et d'autres processus aléatoires, font beaucoup de lecture sur disque. Aucun tueur n'est tué par le tueur de mémoire, puisque la mémoire n'est pas réellement plein, presque plein. Si le MOO devait au moins tuer le processus incriminé, ce ne serait pas si grave. - YenTheFirst
Cette réponse décrit très clairement ce qui se passe, alors je l'accepte. Des idées sur 2)? Le simple fait d'ajouter plus de RAM n'est pas toujours une option (surtout si vous avez maximisé la RAM sur un ordinateur portable). Des situations de mémoire insuffisante surviennent dans la vie, comment faire en sorte que Linux ne devienne pas inutilisable dans ces situations? c'est-à-dire que si je n'ai que 200 Mo de libre, je ne se soucier À propos du rendu du chrome, je veux juste passer à un terminal et tuer certains processus. - YenTheFirst
Vous pouvez utiliser un lecteur flash USB et le dédier pour échanger de l'espace. Achetez un lecteur flash haute vitesse (au moins 4 Go), créez une partition d'échange et activez-la. L'effet de ceci est similaire à l'utilisation de Windows ReadyBoost sur un système Windows Vista ou Windows 7. - bwDraco


Si les causes de vos problèmes sont des processus connus, vous pouvez les restreindre en utilisant ulimit Par exemple, script le lanceur de votre application comme ceci:

#!/bin/bash
ulimit -v 1048576
/usr/bin/greedyapp

Votre application ne pourra obtenir que 1 Go de mémoire virtuelle avant d’obtenir des erreurs de mémoire insuffisante. Je l'ai essayé avec les navigateurs et cela protégera efficacement votre RAM sans tuer le navigateur dès que sa limite est atteinte. Mais l'application peut alors se comporter bizarrement (comme cesser de répondre aux entrées utilisateur), vous pouvez donc l'essayer d'abord avec une limite très stricte pour voir ce qu'elle fait dans une mémoire insuffisante. Encore mieux que ces poubelles HD.

Notez que ulimit affecte uniquement le processus appelant et ses enfants, définissant la limite pour tous les processus de cette branche. Je ne recommanderais pas de le mettre dans votre script de session.


2
2018-06-15 13:59





DragonLord est correct, le problème est le fait que le système d'exploitation n'aime pas que vous utilisiez une quantité excessive de RAM. Plus vous êtes proche de l'optimisation de votre mémoire vive. Le système tombera dans un état où il commence à utiliser la mémoire virtuelle. Plus votre disque dur sera rapide, plus votre ordinateur sera rapide dans cet état, mais vous ne pourrez en tirer que peu de performances. Plus de RAM est nécessaire pour empêcher cela.

De toute évidence, vous réalisez déjà que le problème ne se pose que lorsque vous utilisez certains programmes, dont certains ont été créés. En raison des informations fournies, il est logique de supposer que votre problème est la RAM.


1
2018-03-19 21:11