web-dev-qa-db-fra.com

Comment savoir quel processus est à l'origine de l'utilisation de kswapd?

Je vois que kswapd utilise 100% de CPU ... comment puis-je savoir pour quel processus kswapd est tellement utilisé?

22
Deshawn

kswapd gère l'espace de swap en réponse à des demandes de mémoire supérieures à celles physiquement disponibles pour les processus tous.

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).

Ainsi, la question réelle est "quels processus ont le plus grand fardeau sur la mémoire qui font que kswapd doit constamment paginer".

Il est plus facile d'y répondre en utilisant "top" et en passant en mode de tri d'utilisation de la mémoire.

17
Paul

Vous pouvez l'écrire .. mais vous pouvez aussi le faire via le haut

Courez en haut puis appuyez sur O suivi de p puis entrez

Maintenant, tous les processus sont triés par utilisation de swap et vous pouvez voir ceux qui l'utilisent

9
Mike

Si vous utilisez Ubuntu 15.10 ou une version ultérieure, cela peut en fait être le résultat de n bogue , surtout 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 à chaud pour les machines virtuelles Xen et Hyper-V.

8
Zenexer

Il semble également y avoir un bogue dans 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 (sauf ssh Shell), beaucoup de RAM (plus de 700 Mo) gratuits et aucun SWAP utilisé du tout. Pas de swapin, pas de swapout également.

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 plusieurs machines dans un court laps de temps. Il semble que les machines qui sont inactives, ainsi que les machines qui sont sous haute pression, soient moins (!) Probablement 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 à 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:

  • Le redémarrage des machines affectées échoue souvent car le processus d'arrêt commence à se bloquer quelque part.
  • Il n'y a pas de connexion directe à Internet. Les causes étrangères sont peu probables.
  • Cela semble dépendre du type de charge de travail que les machines traitent du point de vue de la charge, car nous avons des machines qui n'ont jamais (encore) été affectées.
  • Désolé, je ne peux pas être plus précis sur ce que nous faisons et pourquoi.
  • Oui, je spécule. Parce que c'est un effet extrêmement déroutant, aujourd'hui.
6
Tino