J'ai lancé quelque chose qui a pris beaucoup de mémoire et maintenant, tout est en retard. Je suppose que la mémoire de toutes les applications est sur le point d'être échangée afin de libérer de l'espace pour le processus gourmand en mémoire, et que maintenant, tout revient lentement à la RAM lors de l'accès.
Existe-t-il un moyen de déplacer explicitement tout ce qui est possible du basculement vers la RAM? Ou peut-être pas tout, mais juste quelques données de processus particuliers?
swapoff
si la mémoire est insuffisante: dans ce cas, l'espace d'échange restera fonctionnel :)Vous pouvez l'accorder avec un nombre compris entre 0 et 100
/proc/sys/vm/swappiness
.la source
sysctl
plutôt la commande. Dans ce cas, c'estsysctl vm.swappiness=x
.sysctl
commande de niveau supérieur pour l'interaction utilisateur. Le résultat final est identique, mais les interfaces de niveau supérieur sont généralement préférées pour une interaction directe de l'utilisateur. Un peu comme démarrer le moteur en court-circuitant les câbles d'allumage (niveau inférieur) au lieu de tourner la clé (niveau supérieur).Linux gère très bien la mémoire et vous ne devriez pas vous y opposer. Le paramètre vm.swappiness (mentionné précédemment) ne le gêne pas. Vous êtes plus susceptible de rencontrer des problèmes étranges lorsqu’il fait les choses autrement.
Qu'est-ce que vous avez lancé qui était si mémoire faim? Peut-il être réglé? S'il n'a pas ses propres directives de limite de mémoire, vous pouvez également consulter ulimit.
la source
convert -density 200 file.pdf jpegs/file.jpg
. Pour une raison quelconque, il utilise beaucoup de mémoire, mais vous avez raison: il peut être réglé. Quoi qu'il en soit, la situation est possible avec n'importe quelle application :)convert
a pour-limit
argument de contrôler l'utilisation de la mémoire par rapport à la mémoire, et vous devriez les consulter. Réglage-limit memory 512MB
ou similaire serait bien. Il serait également probablement utile de spécifier un MAGICK_TEMPORARY_PATH explicite et de le nettoyer une fois votre commande terminée.Si vous avez de la mémoire disponible pour toutes vos applications, vous pouvez régler le swappiness sur 0 pour que rien ne soit échangé. Par exemple, qemu-kvm est une cible importante pour que le VMM soit échangé, car il "semble" être inactif la plupart du temps. J'ai vu jusqu'à 80% de la mémoire d'une mémoire qemu-kvm écrite en swap. Les ordinateurs virtuels fonctionnant dans qemu-kvm deviendront presque insensibles car ils sont à court d'échange (bien que l'invité n'ait aucune idée de ce qui se passe). La machine virtuelle invitée pensera que ses performances sont excellentes, même si, en réalité, elle traîne terriblement. Lorsque de nombreuses machines virtuelles se «réveillent» et commencent à faire des choses, la charge peut atteindre une charge moyenne de plus de 30, même sur du matériel d'entreprise avec une mémoire et un disque suffisamment volumineux. J'imagine que c'est un échec dans la conception qemu-kvm prête à l'emploi.
J'espère que ça aide quelqu'un.
la source
Je vous déconseille d'essayer de surpasser le sous-système de machine virtuelle dans le noyau. Il est EXTREMEMENT peu probable que vous disposiez de suffisamment d'informations pour prendre de meilleures décisions. Et si vous le forcez à faire quelque chose de mal, vous finirez par ralentir les choses.
la source
Si vous parvenez à redémarrer le système, vous devriez le faire (et prendre moins de temps que d’essayer une autre solution).
la source
Pour copier une partie de ma réponse de cette question .
Pour que vous sachiez comment fonctionne le swappiness accordable. Cela fonctionne en indiquant au sous-système de machine virtuelle de rechercher les pages à permuter lorsque le% de mémoire mappée aux tables de pages de processus + valeur de swappiness est> 100. Ainsi, un paramètre de 60 fera en sorte que le système commence à paginer les pages obsolètes à partir du tableau de pages de processus. lorsqu'il utilise plus de 40% de la mémoire de votre système. Si vous souhaitez autoriser vos programmes à utiliser davantage de mémoire aux dépens du cache, vous souhaiterez réduire la valeur swappiness.
la source
Le processus est-il toujours en cours d'exécution? Ouvrez un terminal et voyez si vous pouvez repérer le ou les processus qui ont été lancés. (ps aux | grep nomprocess peut être un peu plus facile) Utilisez le PID kill -9 pour les tuer s'ils sont toujours en cours d'exécution. Faites attention à ce que vous tuez. Si vous ne connaissez pas le processus, ne le tuez pas! Aussi, postez la sortie de free -m afin que nous puissions voir si vous utilisez toujours beaucoup de swap.
Si les choses continuent à ralentir, il se peut que tout ce que vous avez lancé soit toujours en cours d'exécution. Je ne désactiverais jamais l'échange si vous ne savez pas vraiment ce que vous faites ou si vous aimez vivre à la limite. =)
la source
Je crois qu’il n’existe aucun moyen vraiment efficace de forcer les données de disque non échangées sous Linux à partir de la mémoire. Lorsque swapoff / swapon est une solution efficace, mais elle est sale et peut facilement rendre votre système instable. Dans les cas où il y a plus de données dans l'échange que dans la mémoire libre, il sera difficile d'imaginer une politique efficace que Linux puisse employer pour décider quelles données vont être stockées en mémoire et quelles pièces sont conservées sur le disque.
Résumé: Laissez simplement Linux restaurer progressivement ses performances de manière normale. Son sous-système de machine virtuelle est organisé de telle manière qu'il s'efforce et se déplace constamment vers un état d'équilibre idéal.
la source
Vider le cache des tampons
Si vous souhaitez les vider, vous pouvez utiliser cette chaîne de commandes.
Vous pouvez indiquer au noyau Linux de supprimer divers aspects des éléments mis en cache en modifiant l'argument numérique de la commande ci-dessus.
REMARQUE: nettoyez la mémoire des objets inutiles (noyau 2.6.16 ou plus récent). Assurez-vous toujours de lancer d'abord la synchronisation pour vider les choses utiles du disque !!!
Pour libérer pagecache:
Pour libérer les dentiers et les inodes:
Pour libérer pagecache, dentries et inodes:
Ce qui précède est destiné à être exécuté en tant que root. Si vous essayez de les utiliser en utilisant sudo, vous devrez modifier légèrement la syntaxe pour obtenir un résultat similaire à celui-ci:
la source