Je vois que kswapd utilise 100% de CPU ... comment puis-je savoir pour quel processus kswapd est tellement utilisé?
Je vois que kswapd utilise 100% de CPU ... comment puis-je savoir pour quel processus kswapd est tellement utilisé?
Réponses:
kswapd gère l'espace de swap en réponse à des demandes de mémoire supérieures à celles physiquement disponibles pour tous les processus.
Il est indépendant du processus, il ne s'intéresse qu'à quelles pages sont accessibles et quand (c'est plus complexe que cela bien sûr, mais pour garder les choses simples, nous pouvons aussi bien les voir de cette façon).
La vraie question est donc "quels processus ont le plus de fardeau sur la mémoire, ce qui fait que kswapd doit constamment paginer".
Il est plus facile de répondre à cette question en utilisant «top» et en passant en mode de tri d'utilisation de la mémoire.
top
me dit qu’aucun temps n’est consacré à l’attente des E / S et que près de 100% du temps est consacré au système. Plus d'informations: kswapd utilise souvent 100% CPU lorsque le swap est en cours d'utilisation
Vous pouvez l'écrire .. mais vous pouvez aussi le faire via le haut
Run top puis appuyez sur O puis sur p puis entrez
Maintenant, tous les processus sont triés par utilisation de swap et vous pouvez voir ceux qui l'utilisent
Si vous utilisez Ubuntu 15.10 ou une version ultérieure, cela peut en fait être le résultat d' un bogue , en particulier si votre système est une machine virtuelle sans partition de swap (par exemple, AWS EC2). Le problème existe sur d'autres distributions , mais, au moment de l'écriture, il n'est pas clair si le même correctif fonctionne universellement.
Une solution temporaire:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Notez que cela désactivera l'ajout de RAM / CPU pour les machines virtuelles Xen et Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
cela l'atténue une fois qu'il commence à se produire. J'ai maintenant de manière préventive la commande sur un travail cron et cela semble aider, ou du moins limiter la durée du massacre OOM lorsque je suis loin de l'ordinateur.
Il semble également y avoir un bug kswapd
quelque part, espérons-le uniquement sur les noyaux plus anciens.
Presque chaque jour maintenant, kswapd va sursauter au hasard sur certaines machines d'un plus gros cluster (avec un noyau non actuel, cependant). 100% CPU sur les deux processus kswapd. Aucun autre processus en cours d'exécution (à l'exception du shell ssh), beaucoup de RAM libre (plus de 700 Mo) et aucun SWAP utilisé. Pas de swapin, pas de swap aussi.
Rien n'explique encore pourquoi une machine particulière est touchée et une autre ne l'est pas. Il ne semble pas être complètement aléatoire, car il frappe généralement plus d'une machine dans un court laps de temps. Il semble que les machines qui sont inactives, ainsi que les machines sous haute pression, soient moins (!) Susceptibles d'être touchées par l'effet. Il doit donc faire quelque chose avec la charge de travail et ne frappe que si la machine n'est ni inactive ni très occupée.
Si le problème survient, rien ne sert plus. Tuer tous les processus (qui ne sont pas devenus impossibles à tuer), démonter tous les systèmes de fichiers, rien.kswapd
reste toujours à 100% CPU. Je soupçonne une course de spinlock dans les noyaux SMP, mais il est également probable que je me trompe.
Voir peut-être ma réponse serverfault.com/questions/316995/#493257
Remarques: