web-dev-qa-db-fra.com

Ubuntu 16.04 kworker utilisant constamment un processeur élevé

Sur un ordinateur Ubuntu 16.04, j'ai vu kworker occuper 80% du processeur de manière cohérente.

J'ai généré un rapport de performance:

  • Sudo apt-get install linux-tools-common linux-tools-$(uname -r)
  • Enregistrez environ 10 secondes de traces de fond sur tous les processeurs Sudo perf record -g -a sleep 10
  • Affichez-le avec Sudo perf report.

Les premiers résultats sont:

Samples: 47K of event 'cycles:ppp', Event count (approx.): 38282161158
  Children      Self  Command          Shared Object                  Symbol
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] ret_from_fork
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] kthread
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] worker_thread
+   77.00%     0.13%  kworker/3:3      [kernel.kallsyms]              [k] process_one_work
+   76.26%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] rpm_idle
+   75.98%     0.06%  kworker/3:3      [kernel.kallsyms]              [k] rpm_suspend
+   75.97%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] pm_runtime_work
+   75.84%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] __rpm_callback
+   75.82%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_idle
+   75.76%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] __pm_runtime_suspend
+   75.64%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] rpm_callback
+   75.61%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_suspend
+   75.51%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] usb_suspend_both
+   73.51%     0.15%  kworker/3:3      [kernel.kallsyms]              [k] usb_control_msg
+   71.97%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] usb_start_wait_urb
+   68.38%     0.05%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb
+   68.33%     0.30%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb.part.8
+   67.75%     0.82%  kworker/3:3      [kernel.kallsyms]              [k] usb_hcd_submit_urb
+   60.96%    60.41%  kworker/3:3      [kernel.kallsyms]              [k] xhci_hub_control
+   55.99%     0.12%  kworker/3:3      [kernel.kallsyms]              [k] hub_suspend
+   54.97%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] set_port_feature
+   19.36%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_resume_interface.isra.8
+   19.35%     0.02%  kworker/3:3      [kernel.kallsyms]              [k] hub_resume
+   19.32%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] hub_activate
+   18.78%     0.08%  kworker/3:3      [kernel.kallsyms]              [k] hub_ext_port_status
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] ret_from_fork
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] kthread
+   10.44%     0.51%  ksoftirqd/3      [kernel.kallsyms]              [k] smpboot_thread_fn

Je ne sais pas comment reproduire. Il disparaît après un redémarrage. Que se passe-t-il?

2
sunapi386

Même problème ici sur un ordinateur portable Dell XPS et un noyau 4.4.0-130

Je l'ai corrigé en désactivant gestion dynamique de l'alimentation USB dans le noya

J'ai ajouté usbcore.autosuspend=-1 à la ligne de commande de démarrage de mon noyau:

GRUB_CMDLINE_LINUX_DEFAULT="<existing stuff> usbcore.autosuspend=-1"
  • Pour le faire en permanence, ouvrez le fichier de configuration grub

    Sudo nano /etc/default/grub
    

et ajoutez le drapeau décrit ci-dessus.

  • Ensuite, vous devez mettre à jour votre grub via

    Sudo update-grub
    
  • Après le redémarrage, tout devrait bien se passer, le processeur occupé est maintenant libre de faire quelque chose d'utile :)

Désactiver le mode dynamique PM peut avoir une incidence sur la durée de vie de la batterie lorsque des périphériques USB sont connectés, mais peu de périphériques USB sont capables de gérer ce mode ....

2
Francois P.

J'avais un problème similaire sur un ordinateur portable Dell. J'ai lu que c'était dû à un bogue du noyau et que cela pourrait être tempéré en effaçant une partie du cache du noyau en écrivant des valeurs dans un fichier dans /sys, mais je doute que cela vous aide.

Je sais que les processus kworker ne peuvent pas être supprimés. Si je dois en croire d’autres réponses à la même question sur Askubuntu/Unix, kworker sont des processus d’espace réservé qui correspondent à l’activité du noyau.

Les solutions proposées ci-dessous sont les plus évidentes et susceptibles de donner des résultats (si elles n’ont pas encore été essayées), aux moins probables.

Juste au cas où vous ne l’auriez pas encore fait, je vous suggère de mettre à jour votre noyau avec la dernière version disponible des référentiels (Sudo apt update). La mise à jour du noyau nécessite généralement un redémarrage pour voir l'effet.

Sinon, vous pouvez essayer d'installer Ubuntu 18.04, dont la version du noyau est 4.15.0-22 et intègre probablement un correctif.

Si vous avez recherché votre question dans Google, vous avez probablement déjà trouvé des rapports de bogues correspondant à votre description. Vous devriez lire à travers les commentaires qu’ils contiennent parfois des solutions ou des solutions de contournement. Le lien ci-dessous semble correspondre étroitement au vôtre, bien qu'il soit un peu intriguant car le correctif aurait dû arriver dans le noyau Ubuntu à ce jour (commentaire n ° 18).

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488426

Quelque chose que je n'ai pas essayé quand j'ai rencontré le bogue utilisait une application de limitation du processeur, telle que cpulimit ou cputool (Sudo apt install cpulimit ou Sudo apt install cputool). Je ne sais pas s'il y a une chance pour que cette approche fonctionne. Je doute que cela puisse fonctionner avec un processus aussi non standard.


Remarque: Vous voudrez peut-être ajouter le résultat de uname -mr à votre question et aux futures questions chaque fois que cela concerne le noyau Linux.

Écris une réponse si tu trouves quelque chose qui fonctionne.

0
Mathieu CAROFF