gpt4 book ai didi

linux - kworker线程的起源

转载 作者:IT王子 更新时间:2023-10-29 00:21:53 36 4
gpt4 key购买 nike

在我新安装的使用内核 3.2 的系统上,我看到一个不断消耗 CPU 的 kworker 线程。我想找出内核/模块的哪一部分创建了这个工作队列。

如何跟踪名为“kworker/0:3”的 kworker 线程到它在内核空间中的起源?

我试图查看/sys/kernel/debug/tracing/events/workqueue,但无法弄明白。

最佳答案

(在我看来这不是主题,但这是我在 answer 上发布的 unix.stackexchange.com。)

我找到了 this thread on lkml这稍微回答了你的问题。 (似乎连 Linus 自己都对如何找出这些线程的来源感到困惑。)

基本上,有两种方法可以做到这一点:

$ 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 - kworker线程的起源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846747/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com