我最近升级到了 Kubuntu Natty Beta 1,并且进程kworker遇到了很多问题。有时它几乎使用了我一半的 CPU。此外,奇怪的是它似乎影响了我的 USB 端口;每当我插入 USB 驱动器时,进程kworker都会进入超驱动器,让我无法工作。
我曾考虑过提交错误,但由于我什至没有找到任何关于kworker是什么的合理解释,我想我应该先找出来。
Emm*_*ory 134
“kworker”是内核工作线程的占位进程,它执行内核的大部分实际处理,尤其是在有中断、定时器、I/O 等的情况下。这些通常对应于任何分配的绝大多数“系统”运行进程的时间。它不是可以以任何方式安全地从系统中删除的东西,并且与 nepomuk 或 KDE 完全无关(除了这些程序可能会进行系统调用,这可能需要内核做一些事情)。
有一些报告说在 2.6.36 开发期间开始的相对空闲系统的 kworker 活动过多(示例讨论),以及关于 2.6.38 的混淆和问题的广泛报告(尽管其中许多报告包含“Natty”一词,所以我认为这些人没有使用 2.6.35(在 Ubuntu 10.10 中分发)和 2.6.38(在 Ubuntu 11.04 中分发)之间的任何内核。
我发现了很多关于为一个或另一个用户“修复”这个问题的报告。大多数“修复”似乎与各种内核的更新有关。在更新可以跟踪到特定问题的地方,似乎通常是某些驱动程序或内核服务已被修补以防止行为不端:我的印象是内核中有非常多的东西可以导致行为这被视为过度使用 kworker。
如果您发现系统由于 kworker 活动过多而无法使用,我建议您尝试少做一些事情。如果您认为自己没有做任何事情,请尝试关闭长时间运行的服务或计时器(RSS 阅读器、邮件阅读器、文件索引器、活动跟踪器等)。如果这不起作用,请尝试重新启动。如果您的系统允许您在预引导环境中启用或禁用硬件,请尝试关闭您不使用的硬件。如果在您执行任何操作之前每次重新启动时都发生这种情况,您可以尝试卸载一些东西,但此时您需要运行系统调用分析工具来追踪似乎导致这种过载的特定应用程序。
希望您的特定系统在未来的内核升级中不再表现出这种行为(并且许多最常见的原因已得到解决)。
tan*_*ius 98
什么是kworker? kworker意味着一个 Linux 内核进程在做“工作”(处理系统调用)。您可以在进程列表kworker/0:1中包含其中几个:第一个 CPU 内核上kworker/1:1的一个,第二个CPU 内核上的一个,等等。
为什么 kworker 会占用你的 CPU?要找出 kworker 浪费 CPU 的原因,您可以创建 CPU 回溯:观察您的处理器负载(top或其他),并在高负载时刻通过kworker,执行echo l > /proc/sysrq-trigger以创建回溯。(在 Ubuntu 上,这需要您使用 登录sudo -s)。这样做几次,然后在dmesg输出结束时观察回溯。看看 CPU 回溯中经常发生什么,它希望能指出问题的根源。
示例:e1000e。就我而言,我几乎每次都发现这样的回溯:
Call Trace:
delay_tsc+0x4a/0x80
__const_udelay+0x2c/0x30
e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
e1000e_has_link+0x55/0xd0 [e1000e]
e1000_watchdog_task+0x5e/0x960 [e1000e]
Run Code Online (Sandbox Code Playgroud)
它暗示我e1000e以太网卡模块中存在问题,并且确实sudo rmmod e1000e使高 CPU 负载立即消失 [ e1000e bug #26 ]。
tan*_*ius 87
为什么 kworker 会占用你的 CPU(续)?作为我在此处的其他答案的替代方案,Perf 是一种更专业的方法来分析哪些内核任务占用了您的 CPU:
安装perf:
sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
Run Code Online (Sandbox Code Playgroud)
(第二个包必须与你的内核版本匹配。你可以先安装 justlinux-tools-common并调用perf让它告诉你它需要哪个包。)
在所有 CPU 上记录大约 10 秒的回溯:
sudo perf record -g -a sleep 10
Run Code Online (Sandbox Code Playgroud)分析你的录音:
sudo perf report
Run Code Online (Sandbox Code Playgroud)
(导航调用图与?,?,?,?和Enter。)
小智 12
只为让大家知道。我遇到了这个问题,安装了 perf(这是一个很棒的工具),它指向了自旋锁定和 XFS。那指向NFS。然后我意识到我的一个坐骑空间不足。释放空间导致 kworker CPU 降至 0。
很明显,这可能是繁忙的 NFS 服务器上驱动器空间不足的症状!
| 归档时间: |
|
| 查看次数: |
534244 次 |
| 最近记录: |