Origin of a kworker-thread

前端 未结 5 1603
萌比男神i
萌比男神i 2021-02-05 07:41

On my newly installed system using kernel 3.2 I see a kworker-thread which is constantly consuming CPU. I\'d like to find out which part of kernel/module has created this workqu

5条回答
  •  感动是毒
    2021-02-05 08:26

    (Seems to me this is rather off topic here, but here's the answer I posted on unix.stackexchange.com.)

    I found this thread on lkml that answers your question a little. (It seems even Linus himself was puzzled as to how to find out the origin of those threads.)

    Basically, there are two ways of doing this:

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

    For this you will need ftrace to be compiled in your kernel.

    This will output what threads are all doing, and is useful for tracing multiple small jobs.

    cat /proc/THE_OFFENDING_KWORKER/stack
    

    This will output the stack of a single thread doing a lot of work. It may allow you to find out what caused this specific thread to hog the CPU (for example). THE_OFFENDING_KWORKER is the pid of the kworker in the process list.

提交回复
热议问题