web-dev-qa-db-fra.com

Kworker, de quoi s'agit-il et pourquoi accapare-t-il autant de ressources processeur?

Je suis récemment passé à la version 1 de Kubuntu Natty et j'ai eu beaucoup de problèmes avec le processus kworker. À certains moments, il utilise presque la moitié de mon processeur. Aussi, étrangement, cela semble affecter mes ports USB; chaque fois que je connecte une clé USB, le processus kworker passe en hyperdrive, me laissant incapable de travailler.

J'ai pensé à un bogue, mais comme je n'ai même pas trouvé d'explication raisonnable sur quoi kworker je me suis dit que je devrais le savoir en premier.

131
davorao

"kworker" est un processus fictif pour les threads de travail du noyau, qui effectuent la majeure partie du traitement réel du noyau, en particulier dans les cas d'interruptions, de minuteries, d'E/S, etc. Ils correspondent généralement à la grande majorité des " système "le temps nécessaire pour exécuter les processus. Ce n'est pas quelque chose qui peut être supprimé du système de quelque manière que ce soit, et n'a absolument aucun lien avec nepomuk ou KDE (sauf que ces programmes peuvent faire des appels système, ce qui peut nécessiter que le noyau fasse quelque chose).

Certains rapports font état d’une activité excessive de kworker pour les systèmes relativement inactifs commençant au cours du développement du 2.6.36 ( exemple de discussion ), et de nombreux rapports faisant état de confusion et de problèmes avec le 2.6.38 (bien que beaucoup de ces rapports incluent Word). "Natty", je présume donc que ces personnes n'ont utilisé aucun noyau compris entre 2.6.35 (distribué dans Ubuntu 10.10) et 2.6.38 (distribué dans Ubuntu 11.04).

J'ai trouvé de nombreux rapports de quelque chose qui "corrige" ceci pour un utilisateur ou un autre. La plupart des "correctifs" semblent être liés aux mises à jour du noyau de différentes sortes. Lorsque la mise à jour peut être liée à un problème spécifique, il semble que ce soit souvent un pilote ou un service du noyau qui a été corrigé pour ne pas se conduire mal: j'ai l'impression qu'il y a un très grand nombre d'éléments dans le noyau qui peuvent provoquer un comportement qui est observé comme une utilisation excessive de Kworker.

Si vous trouvez le système inutilisable en raison d'une activité excessive de kworker, je vous recommanderais d'essayer de faire moins de choses. Si vous pensez que vous ne faites rien, essayez d'arrêter les services ou les minuteries de longue durée (lecteurs RSS, lecteurs de courrier, indexeurs de fichiers, suiveurs d'activité, etc.). Si cela ne fonctionne pas, essayez de redémarrer. Si votre système vous permet d'activer ou de désactiver du matériel dans un environnement de prédémarrage, essayez de désactiver le matériel que vous n'utilisez pas. Si cela se produit à chaque redémarrage avant de faire quoi que ce soit, vous pouvez essayer de désinstaller certaines choses, mais à ce stade, vous devrez exécuter des outils de profilage syscall pour localiser des applications spécifiques qui semblent provoquer cette surcharge.

Il est à espérer que votre système spécifique cessera d'exprimer ce comportement lors d'une future mise à niveau du noyau (et la plupart des causes les plus courantes ont été résolues).

107
Emmet Hikory

Qu'est-ce que kworker? kworker désigne un processus du noyau Linux effectuant un "travail" (traitement des appels système). Vous pouvez en avoir plusieurs dans votre liste de processus: kworker/0:1 est celui de votre premier cœur de processeur, kworker/1:1 celui de votre deuxième cœur, etc.

Pourquoi kworker ralentit-il votre processeur? Pour savoir pourquoi un kworker gaspille votre processeur, vous pouvez créer des tracés de processeur: surveillez la charge de votre processeur (avec top ou et dans les moments de forte charge jusqu'à kworker, exécutez echo l > /proc/sysrq-trigger pour créer une trace. (Sous Ubuntu, vous devez vous connecter avec Sudo -s). Faites cela plusieurs fois, puis observez les traces à la fin de la sortie de dmesg. Voyez ce qui se produit fréquemment dans les traces du processeur, cela vous indique, espérons-le, la source de votre problème.

Exemple: e1000e. Dans mon cas, j'ai trouvé une trace de ce type presque à chaque fois:

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

Cela m'a laissé entendre que le module de la carte Ethernet e1000e posait un problème. En effet, un Sudo rmmod e1000e a fait disparaître immédiatement la charge de processeur élevée [ bogue e1000e n ° 26 ].

77
tanius

Pourquoi kworker traine-t-il votre processeur (suite)? Au lieu de mon autre réponse ici , Perf est un professionnel. manière d'analyser les tâches du noyau qui monopolisent votre processeur:

  1. Installez perf:

    Sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (Le second package doit correspondre à la version de votre noyau. Vous pouvez d’abord installer simplement linux-tools-common et appeler perf pour le laisser vous indiquer le paquet dont il a besoin.)

  2. Enregistrez environ 10 secondes de traces sur tous vos processeurs:

    Sudo perf record -g -a sleep 10
    
  3. Analysez votre enregistrement:

    Sudo perf report
    

    (Naviguez dans le graphe des appels avec , , , et Enter.)

68
tanius

Juste pour que tout le monde sache. J'ai rencontré ce problème, Perf installé (qui est un excellent outil), il a souligné le verrouillage de rotation et XFS. Cela a désigné NFS. Puis je me suis rendu compte que l’un de mes monts n’était plus assez grand. La libération d’espace a fait chuter le processeur kworker à 0.

Donc, apparemment, cela peut être un symptôme de manque d'espace disque sur un serveur NFS occupé!

8
Erik Aronesty

J'ai récemment installé Ubuntu Natty sur un lecteur externe USB WD Passport. Lorsque je démarre sur mon ordinateur, qui a environ deux ans, tout fonctionne à merveille. Lorsque je démarre sur mon nouvel ordinateur portable (système MSI gt680r), cela ralentit une fois que l'ordinateur est sorti de veille ou si je branche un autre disque USB.

Les processus Kworker prennent de plus en plus de processeurs et la souris se fige de temps en temps.

J'ai lu plusieurs solutions sur divers forums qui ne fonctionnaient pas.

Je suis allé dans la biographie de mon ordinateur portable, où il y avait:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

J'ai changé pour:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

et depuis, il ne gèle plus sur natty sur mon ordinateur portable.

J'activerais la main si et quand le problème est corrigé.

4
CedCannes
0
Extender