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

136

Je suis récemment passé à la version bêta de Kubuntu Natty 1 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 problème de bogue, mais comme je n'ai même pas trouvé d'explication raisonnable sur kworker, je me suis dit que je devrais le savoir en premier.

Davorao
la source
Étrange, kworker fonctionne et contribue aux réveils de 10%, mais je n’ai aucun programme Kubuntu installé. Alos Nepomuk n'est pas installé.
jeudi
1
de la réponse de afrazier, je pense maintenant que cela a quelque chose à voir avec le noyau (le k dans kworker est donc pour le noyau). C'est pourquoi vous auriez également kworker sur votre machine Ubuntu.
davorao
1
Cette réponse peut également être utile pour découvrir ce que fait kworker
anarcat
1
Vous n'auriez pas dû prendre cette dernière mise à jour du système d'exploitation. Si vous avez de la chance, le prochain va le réparer.
novembre

Réponses:

109

"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 tâches allouées " système "le temps nécessaire pour exécuter les processus. Ce n'est pas quelque chose qui peut être retiré en toute sécurité du système de quelque manière que ce soit, et n'a 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 ), ainsi que de vastes rapports faisant état de confusion et de problèmes avec le 2.6.38 (bien que beaucoup de ces rapports contiennent le mot "Natty", je présume donc. ces personnes n’ont utilisé aucun noyau 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 de fermer des services ou des 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 problème lors d’une future mise à niveau du noyau (et la plupart des causes les plus courantes ont été résolues).

Emmet Hikory
la source
1
J'ai eu un problème de connexion lent qui, je pense, est lié à cela; Je parviens à y remédier en retardant tout ce qui est commencé de cette manière: askubuntu.com/a/484856/46437
Aquarius Power
1
C’est peut-être superflu, mais félicitations pour une réponse très clairement articulée. C'est un anglais très bien exprimé, monsieur.
Jon Carter
81

Qu'est-ce que Kworker? kworkerdé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:1est celui sur votre premier cœur de processeur, kworker/1:1celui sur votre deuxième cœur, etc.

Pourquoi kworker monopolise-t-il votre processeur? Pour savoir pourquoi un kworker gaspille votre processeur, vous pouvez créer des traces de processeur: surveillez la charge de votre processeur (avec topou autre) et, dans les moments de forte charge kworker, exécutez-la echo l > /proc/sysrq-triggerpour créer une trace. (Sur Ubuntu, cela nécessite que vous vous connectiez avec sudo -s). Faites-le plusieurs fois, puis observez les traces à la fin de la dmesgsortie. 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 comme ça 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 fait penser à un problème dans le e1000emodule de carte Ethernet, et a effectivement sudo rmmod e1000efait disparaître immédiatement la charge de processeur élevée [ bogue e1000e n ° 26 ].

Tanius
la source
4
echo l > /proc/sysrq-triggersemble ne pas fonctionner sur le proxymox en disant sysrq: SysRq : This sysrq operation is disabled.tristement.
hak8or
1
sysrq doit être réactivé avec sysctl -w kernel.sysrq = 1 voir askubuntu.com/questions/911522/…
Sébastien
Comment avez-vous compris que le problème était dû à e1000? Juste parce qu'il était gardé répété?
onurcanbektas
@ onurcanbektas Oui - le résultat le plus fréquemment répété est la cause la plus probable. Parce que les backtraces sont des contrôles ponctuels avec lesquels le processeur est occupé alors qu’il est surchargé.
tanius le
70

Pourquoi kworker monopolise-t-il votre processeur (suite)? Comme alternative à mon autre réponse ici , Perf est un moyen plus professionnel d’analyser les tâches du noyau qui monopolisent votre processeur:

  1. Installer perf:

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

    (Le second paquet doit correspondre à la version de votre noyau. Vous pouvez d’abord installer linux-tools-commonet appeler perfpour le laisser vous dire quel paquet 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
    

    (Navigation dans le graphe d'appel avec , , , et Enter.)

Tanius
la source
2
Sur mon système, fonctionnant sur une machine virtuelle VMware, l’utilisation de perfJ’ai retracé le problème jusqu’au sd_modmodule de noyau. La désactivation de SCSI dans le vmxfichier a empêché le chargement du module et a ramené le système à une vitesse normale:scsi0.present = "FALSE"
feklee
E: Impossible de localiser le paquet linux-tools-3.11.0-15-generic E: Impossible de trouver un paquet par glob 'linux-tools-3.11.0-15-generic' E: Impossible de trouver un paquet par regex 'linux-tools-3.11.0-15-generic'
Paddy
@Paddy: Veuillez vérifier à nouveau la réponse :-) "Le paquetage [linux-tools - * - generic] doit correspondre à la version de votre noyau. Vous pouvez d’abord installer simplement linux-tools-common et appeler perf pour le laisser vous dire quel paquetage il Besoins."
tanius
8

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é!

Erik Aronesty
la source
1
J'ai remarqué que la fusion de Kworker était due à l'exécution d'une machine virtuelle spécifique. Il s'avère que l'un d'eux exécutait un système NFS avec mon hôte pour partager des fichiers. Cependant, il était loin d'être complet. Le démontage du NFS a "résolu" le problème. Je suppose que je vais partager avec un montage sshfs.
Programster
4

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

CedCannes
la source
1
Quelqu'un peut-il expliquer pourquoi cela se produit? Comment XCHI est connecté?
GuySoft
0

Je pense que désactiver Nepomuk peut vous aider:

http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2-kubuntu-lucid-10-04/

Extenseur
la source
merci mais j'ai depuis installé une nouvelle copie de Kubuntu 11.04 et le problème mentionné précédemment a disparu.
davorao
1
Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
fossfreedom