GNU/Linux >> Belajar Linux >  >> Linux

Asal utas kworker

Jadi, setelah beberapa waktu saya menemukan solusinya. Sebenarnya Anthon benar, itu adalah subsistem ACPI yang mengirimkan interupsi. Di saya sistem Saya menonaktifkan interupsi berikut dan kworker-thread menjadi tenang.

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

Namun sampai sekarang belum mengidentifikasi IRQ palsu apa yang berasal dari gpe08 dan gpe1B .


(Menurut saya ini agak di luar topik di sini, tapi inilah jawaban yang saya posting di unix.stackexchange.com.)

Saya menemukan utas ini di lkml yang sedikit menjawab pertanyaan Anda. (Tampaknya bahkan Linus sendiri bingung bagaimana cara mengetahui asal utas tersebut.)

Pada dasarnya, ada dua cara untuk melakukannya:

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

Untuk ini, Anda memerlukan ftrace untuk dikompilasi di kernel Anda.

Ini akan menampilkan semua utas yang dilakukan, dan berguna untuk melacak beberapa pekerjaan kecil.

cat /proc/THE_OFFENDING_KWORKER/stack

Ini akan menampilkan tumpukan dari satu utas yang melakukan banyak pekerjaan. Ini memungkinkan Anda untuk mengetahui apa yang menyebabkan utas khusus ini memonopoli CPU (misalnya). THE_OFFENDING_KWORKER adalah pid dari kworker dalam daftar proses.


Linux
  1. Apa itu sysadmin?

  2. Apa?

  3. Apa Arti Karakter Khusus Dalam Echo {a..z}?

  1. Apa itu Sertifikat SSL?

  2. Apa itu ioremap()

  3. Apa yang dilakukan % di string shell Linux?

  1. Apa itu pengguna Linux?

  2. Apa yang Dilakukan "lc_all=c"?

  3. Apa yang dimaksud dengan gema $? melakukan?