Kworker thread memiliki penggunaan CPU yang tinggi

0

Saya memiliki utas kworker dengan penggunaan CPU yang tinggi, yang menyebabkan layar sentuh saya sangat lambat dan tidak responsif. Menjalankan beaglebone dengan Debian.

 uname -r
 4.1.15-ti-rt-r43

 pid user     pr   ni     virt    res   shr s %cpu %mem time+     command
 90 root      20   0       0      0      0 R 34.7  0.0  14:16.48 kworker/u2:2

Saya tidak dapat menginstal / menggunakan perf karena saya menjalankan kernel 4.1.15 dan perf hanya tersedia di 3.16 jadi saya tidak dapat melacak utasnya.

Saya mencoba beberapa solusi yang saya temukan online, tetapi tidak ada yang berhasil.

1) https://stackoverflow.com/questions/10846747/origin-of-a-kworker-thread

    $ echo workqueue:workqueue_queue_work > /sys/kernel/debug/tracing/set_event
    $ cat /sys/kernel/debug/tracing/trace_pipe 

Keluaran:

     python3-748   [000] d.h2   714.802127: workqueue_queue_work: work struct=ddec2368 function=flip_worker workqueue=dcd80600 req_cpu=2 cpu=4294967295
kworker/u2:2-67    [000] d.h2   714.817350: workqueue_queue_work: work struct=ddec2368 function=flip_worker workqueue=dcd80600 req_cpu=2 cpu=4294967295
kworker/u2:2-67    [000] d.h3   714.832576: workqueue_queue_work: work struct=ddec2368 function=flip_worker workqueue=dcd80600 req_cpu=2 cpu=4294967295
     python3-745   [000] d.s3   714.834340: workqueue_queue_work: work struct=ddd22e08 function=mcp251x_tx_work_handler [mcp251x] workqueue=dcff0200 req_cpu=2 cpu=429496$
irq/145-can1-737   [000] d..2   714.835555: workqueue_queue_work: work struct=ddd22e18 function=mcp251x_irq_work_handler [mcp251x] workqueue=dcff0200 req_cpu=2 cpu=42949$
kworker/u2:2-67    [000] d.h2   714.847801: workqueue_queue_work: work struct=ddec2368 function=flip_worker workqueue=dcd80600 req_cpu=2 cpu=4294967295


 $ cat /proc/90/stack
[<ffffffff>] 0xffffffff

2) Menonaktifkan /sys/firmware/ascpi/gpe##

Namun, folder ascpi itu bahkan tidak ada di beaglebone saya.

3) https://askubuntu.com/questions/33640/kworker-what-is-it-and-why-is-it-hogging-so-much-cpu

echo l > /proc/sysrq-trigger untuk membuat backtrace, output di akhir dmesg

Keluaran:

[ 3581.845525] sysrq: SysRq : Changing Loglevel
[ 3581.850338] sysrq: Loglevel set to 1

masalahnya adalah saya tidak mengerti mengapa masalah ini ada, atau dari mana asalnya - dan kemudian lebih lanjut, bagaimana menyelesaikannya.

Saya menjalankan GUI dan juga menjalankan CAN (python-can / socketCAN). Olahpesan CAN dapat dikendalikan melalui GUI.

Perilaku yang saya temukan adalah: Ketika GUI mulai - tidak ada utas kworker yang berat. Ketika CAN dimulai untuk pertama kalinya - utas kworker memakan 15-40% CPU.

Saya memiliki sakelar yang memungkinkan saya untuk berhenti mengirim pesan CAN (CAN on / off). Sekarang ketika saya mematikan CAN melalui GUI, thread kworker naik menggunakan 60% dari CPU.

Saya kira ada sesuatu yang mulai ketika antarmuka BISA pertama kali diaktifkan dan kemudian melanjutkan seluruh. Bagaimana cara menentukan dan memperbaiki ini?

T

avelampudi
sumber
Apakah itu juga terjadi ketika tidak ada GUI yang berjalan? Sudahkah Anda mencoba membongkar modul kernel yang tidak perlu? Perangkat apa yang terhubung melalui USB atau apa pun?
Daniel B
Saya mengujinya - Saya menjalankan GUI dan juga menjalankan CAN (python-can / socketCAN). Olahpesan CAN dapat dikendalikan melalui GUI. Perilaku yang saya temukan adalah: Ketika GUI mulai - tidak ada utas kworker yang berat. Ketika CAN dimulai untuk pertama kalinya - utas kworker memakan 15-40% CPU. Saya memiliki sakelar yang memungkinkan saya untuk berhenti mengirim pesan CAN (CAN on / off). Sekarang ketika saya mematikan CAN melalui GUI, thread kworker naik menggunakan 60% dari CPU. Saya kira ada sesuatu yang mulai ketika antarmuka BISA pertama kali diaktifkan dan kemudian terus berlanjut. Bagaimana cara menentukan dan memperbaiki ini?
avelampudi
mode turbo di bios?
DeerSpotter
/sys/devices/system/cpu/cpu0/cpufreq bahkan tidak memiliki file boost untuk sistem saya - kecuali ada tempat lain yang akan diaktifkan / dinonaktifkan. bagaimana cara turbo memperbaiki ini? (atau menjadi penyebab masalah)
avelampudi