GNU/Linux >> Linux の 問題 >  >> Linux

kworker スレッドの起源

それで、しばらくして解決策を見つけました。実際、Anthon は正しく、割り込みを送信するのは ACPI サブシステムです。 私の system 次の割り込みを無効にして、kworker-thread を落ち着かせました。

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

しかし、これまで gpe08 からの偽の IRQ が何であるかは特定されていません。 そして gpe1B .


(これはここではかなり話題から外れているように思えますが、これが unix.stackexchange.com に投稿した回答です。)

あなたの質問に少し答える lkml のこのスレッドを見つけました。 (Linus 自身でさえ、それらのスレッドの出所を見つける方法について困惑していたようです。)

基本的に、これを行うには 2 つの方法があります:

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

このためには、ftrace をカーネルでコンパイルする必要があります。

これは、スレッドがすべて行っていることを出力し、複数の小さなジョブをトレースするのに役立ちます。

cat /proc/THE_OFFENDING_KWORKER/stack

これは、多くの作業を行っている単一のスレッドのスタックを出力します。この特定のスレッドが CPU を占有する原因を特定できる場合があります (たとえば)。 THE_OFFENDING_KWORKER プロセス リスト内の kworker の pid です。


Linux
  1. システム管理者とは何ですか?

  2. 何をしますか?

  3. エコー$は何ですか?行う??

  1. SSL証明書とは何ですか?

  2. ioremap() とは

  3. % は Linux シェル文字列で何をしますか?

  1. 「lc_all=c」は何をしますか?

  2. In Echo {a..z}では特殊文字は何を表していますか?

  3. RAIDとは何ですか?