GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment empêcher le système de ne plus répondre lors d'un battement (hors de Ram) ?

J'ai 8 Go de RAM, mais parfois j'exécute quelques machines virtuelles et suffisamment de processus Chrome pour utiliser la majeure partie de ma mémoire. C'est généralement bien, mais parfois mon système commence à s'emballer, et il m'est difficile de m'en remettre sans attendre que les choses s'améliorent, car l'interface utilisateur est en grande partie gelée.

Dans tous ces cas, les programmes utilisant la majeure partie de ma RAM pourraient être dépriorisés. Si Chrome ou la machine virtuelle ne répondait plus mais que mon environnement graphique et mon terminal étaient toujours réactifs, je pouvais basculer vers un terminal, trouver le coupable et le tuer. Je pourrais imaginer quelque chose comme un "nice" pour la mémoire (afin que je puisse sympathiser Chrome et ma VM) ou quelque chose pour forcer l'environnement graphique et mon terminal à rester en mémoire et à ne pas échanger.

Existe-t-il un moyen de s'assurer que l'interface utilisateur reste réactive lorsque mon système s'emballe ?

Merci !

EDIT :Je suis toujours intéressé de savoir s'il existe quelque chose comme une bonne mémoire, mais je viens de découvrir que mon système n'a pas d'espace d'échange. Je pense que cela s'est produit parce que j'ai commencé à utiliser une maison cryptée et un swap crypté (voir Swap ne fonctionne pas sur une installation 14.04 propre à l'aide d'une maison cryptée). Donc, mon système ne répond probablement plus parce que je n'ai pas d'espace d'échange, donc mon système ne peut pas échanger des programmes inutiles lorsqu'il manque de mémoire.

Réponse acceptée :

Je viens de découvrir que mon système n'a pas d'espace d'échange

Si c'est vrai, cela contribue probablement au problème.

En utilisant plusieurs machines virtuelles avec de grandes allocations de mémoire, une quantité de RAM qui serait normalement plus que suffisante pour une utilisation normale (8 Go) commence à devenir restreinte, ce qui signifie que votre système ne pourra pas utiliser autant de cache et voudra échanger . Maintenant, si vous n'avez pas de swap, il y aura encore plus de pression sur la mémoire et vous pourriez même voir des tâches tuées en raison d'un manque de mémoire.

Swap essaie d'améliorer la stabilité et les performances globales dans des situations comme celle que vous avez décrite, en réallouant certaines données allouées mais rarement utilisées en mémoire sur le disque, libérant ainsi de la mémoire pour les données que vous utilisez. L'ajout d'échange, si vous n'en avez effectivement aucun, vous aidera. Cependant, en termes de performances, vous ferez beaucoup plus d'améliorations si vous achetez également plus de RAM ou si vous en utilisez moins.

Sur un système où vous exécutez des machines virtuelles, mais vous êtes aussi en utilisant un bureau standard sur l'hôte VM, vous ne voulez pas que vos machines virtuelles occupent toute votre RAM, en fait j'économiserais la moitié de votre RAM (jusqu'à 4 Go) pour l'hôte, étant donné que vous exécutez un logiciel sur l'hôte et je veux qu'il soit réactif.

Notez également que les machines virtuelles ont des inefficacités inhérentes non seulement parce que leur RAM est totalement séparée, elles ne partagent aucun cache ou tampon, mais elles exécutent un système d'exploitation entièrement séparé sous un certain nombre de couches d'abstraction. Ainsi, vous pouvez toujours obtenir une meilleure efficacité si vous décidez d'exécuter quelque chose sur l'hôte plutôt que sur une machine virtuelle - bien que si votre objectif d'utilisation des machines virtuelles est d'utiliser d'autres systèmes d'exploitation, cela ne sera pas possible.

Existe-t-il un moyen de s'assurer que l'interface utilisateur reste réactive lorsque mon système s'emballe ?

Lorsque la quantité de RAM que vous avez est un problème, tout ce que vous pouvez faire n'est qu'un hack - la vraie solution est d'acheter plus de RAM (bien que dans votre cas, comme je l'ai mentionné, vous puissiez peut-être en allouer moins aux machines virtuelles).

Connexe :Il ne reste plus d'espace sur l'appareil même s'il y en a ?

Votre question est posée en termes simples - vous voulez que l'interface utilisateur puisse continuer à fonctionner correctement même si IO est encombré. Cependant, il est compliqué de répondre. Votre système sera déjà le faire au mieux de ses capacités :les opérations qui ne nécessitent pas d'accès au disque ne seront pas retardées. Si votre "interface utilisateur bégaie", c'est parce que le processus particulier responsable de cette interface utilisateur a besoin d'un accès au disque. Dans une situation de mémoire insuffisante et où le disque s'emballe, même quelque chose qui sera normalement trivial - comme lire certaines configurations de votre répertoire personnel pour savoir quelles sont vos préférences d'affichage - peut être lent en raison de l'épuisement du cache disque.

Je pourrais imaginer quelque chose comme un "nice" pour la mémoire (afin que je puisse nice Chrome et ma VM)

Il n'y a pas vraiment de "bon pour la mémoire". L'accès à la mémoire est si rapide que vous pouvez généralement pratiquement l'ignorer. Quand vous avez du thrashing, ce n'est pas la mémoire, c'est le disque, c'est ça le problème. Il y a un "ionice" à cause de cela. Bien que ce ne soit probablement pas ce que je recommanderais pour votre problème.

Un autre équivalent approximatif de "sympa pour la mémoire" est l'échange - vous ne pouvez pas contrôler le degré d'échange de chaque processus individuellement, mais le système fait un assez bon travail pour déterminer les processus que vous utilisez activement et qui sont donc une priorité plus élevée à conserver. RAM.

Mais comme je l'ai dit et comme le veut la règle d'or, si vous manquez de RAM, acheter plus de RAM est la solution avec le moins de maux de tête et d'inconvénients.


Ubuntu
  1. Comment empêcher Windows 10 de corrompre le superbloc Ext4 à chaque fois ?

  2. Comment réparer l'installation ?

  3. Comment empêcher les utilisateurs d'accéder au répertoire racine ?

  4. Comment libérer des pages énormes de l'application en panne

  5. Comment détecter la spécification de la puce de mémoire RAM à partir d'une machine Linux

Comment empêcher SSH d'expirer

Comment vérifier la RAM installée sur Debian 10

Comment vérifier la RAM installée sur votre système Ubuntu

Comment installer Caffeine sur Ubuntu 20.04 - Empêcher le bureau de devenir inactif

Comment empêcher PHP-FPM de consommer trop de RAM sous Linux

Comment empêcher les écrans de s'éteindre lorsque l'écran est verrouillé ?