GNU/Linux >> Tutoriels Linux >  >> Linux

Origine d'un thread kworker

Donc, après un certain temps, j'ai trouvé la solution. En fait Anthon a raison, c'est le sous-système ACPI qui envoie les interruptions. Sur mon J'ai désactivé les interruptions suivantes et le thread kworker s'est calmé.

echo disable > /sys/firmware/acpi/interrupts/gpe1B
echo disable > /sys/firmware/acpi/interrupts/gpe08

Cependant, jusqu'à présent, nous n'avons pas identifié les fausses IRQ provenant de gpe08 et gpe1B .


(Il me semble que c'est plutôt hors sujet ici, mais voici la réponse que j'ai publiée sur unix.stackexchange.com.)

J'ai trouvé ce fil sur lkml qui répond un peu à votre question. (Il semble que même Linus lui-même était perplexe quant à la façon de découvrir l'origine de ces fils.)

Fondamentalement, il existe deux façons de procéder :

$ echo workqueue:workqueue_queue_work > /sys/kernel/debug/tracing/set_event
$ cat /sys/kernel/debug/tracing/trace_pipe > out.txt
(wait a few secs)

Pour cela, vous aurez besoin que ftrace soit compilé dans votre noyau.

Cela affichera ce que font tous les threads et est utile pour tracer plusieurs petits travaux.

cat /proc/THE_OFFENDING_KWORKER/stack

Cela produira la pile d'un seul thread faisant beaucoup de travail. Cela peut vous permettre de découvrir ce qui a causé ce thread spécifique à monopoliser le CPU (par exemple). THE_OFFENDING_KWORKER est le pid du kworker dans la liste des processus.


Linux
  1. Qu'est-ce qu'un administrateur système ?

  2. Que fait "lc_all=c" ?

  3. Que signifient les caractères spéciaux dans Echo {a..z} ?

  4. Qu'est-ce que le RAID ?

  5. Que fait % dans les chaînes du shell Linux ?

Qu'est-ce que SSH ?

Qu'est-ce que SFTP ?

Qu'est-ce qui arrive dans GNOME 42 ?

Qu'est-ce que l'analphabétisme numérique ?

Qu'est-ce que Termux sur Android ?

Quel est le moyen le plus rapide d'exécuter un script ?