Comment éviter que mon système ne réponde pas lors du battage (hors de la RAM)?

11

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 à se débattre, et il est difficile pour moi de m'en remettre sans attendre que les choses s'améliorent car l'interface utilisateur est principalement gelée.

Dans tous ces cas, les programmes utilisant la plus grande partie de ma mémoire RAM pourraient être priorisés. Si Chrome ou la machine virtuelle ne répondaient 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 "gentil" pour la mémoire (afin que je puisse bien 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 garantir que l'interface utilisateur reste réactive lorsque mon système se débat?

Merci!

EDIT: Je suis toujours intéressé à savoir s'il y a quelque chose comme un bon souvenir, mais je viens de découvrir que mon système n'a pas d'espace de swap. Je pense que cela s'est produit parce que j'ai commencé à utiliser une maison chiffrée et un échange chiffré (voir L' échange ne fonctionne pas sur une installation propre 14.04 utilisant une maison chiffré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 les programmes inutiles lorsqu'il manque de mémoire.

Sam King
la source
Il semble donc que vous ayez trouvé la cause de votre problème (aucun échange alloué) - voulez-vous maintenant savoir comment configurer un échange chiffré? Vous pouvez peut-être modifier la question ou commencer une nouvelle question.
thomasrutter
1
Je suis toujours intéressé par une chose de style RAM-nice car j'ai eu des problèmes similaires à celui décrit dans ma question avant même quand j'avais un fichier d'échange.
Sam King

Réponses:

2

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

Si cela 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 serrée, ce qui signifie que votre système ne pourra pas utiliser autant de cache et voudra échanger . Maintenant, si vous n'avez pas d'échange, il y aura encore plus de pression sur la mémoire et vous risquez même de tuer des tâches 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 sur le disque certaines données allouées mais rarement utilisées, libérant ainsi de la mémoire pour les données que vous utilisez. L'ajout de swap, si vous n'en avez aucun, vous aidera. Cependant, en termes de performances, vous améliorerez beaucoup plus 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 utilisez également un bureau standard sur l'hôte VM, vous ne voulez pas que vos machines virtuelles prennent 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 que vous souhaitez 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 pas de cache ou de tampons, mais elles exécutent un système d'exploitation distinct sous plusieurs 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'utiliser des machines virtuelles est d'utiliser d'autres systèmes d'exploitation, cela ne sera pas possible.

Existe-t-il un moyen de garantir que l'interface utilisateur reste réactive lorsque mon système se débat?

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

Votre question est formulée en termes simples - vous voulez que l'interface utilisateur puisse continuer à fonctionner sans problème même si les E / S sont congestionnées. Cependant, il est compliqué de répondre. Votre système le fera déjà de son mieux: 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 faible mémoire et où le disque se déborde, même quelque chose qui sera normalement trivial - comme lire une configuration dans votre répertoire personnel pour connaître vos préférences d'affichage - peut être lent en raison de l'épuisement du cache du disque.

Je pourrais imaginer quelque chose comme un "joli" pour la mémoire (afin que je puisse bien 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 l'ignorer pratiquement. Quand vous avez du thrash, ce n'est pas de la mémoire, c'est du 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 swap - vous ne pouvez pas contrôler la permutation de chaque processus individuellement, mais le système fait un très bon travail pour déterminer les processus que vous utilisez activement et, par conséquent, une priorité plus élevée doit être conservée dans RAM.

Mais comme je l'ai dit et comme c'est une 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.

thomasrutter
la source