我最近升级到了Kubuntu Natty Beta 1,并且在处理kworker时遇到了很多问题。有时候,它几乎消耗了我一半的CPU。另外,奇怪的是它似乎影响了我的USB端口。每当我插入USB驱动器时,进程kworker就会进入超级驱动器,这使我无法工作。
我曾经考虑过要提交一个错误,但是由于我什至没有找到关于什么是kworker的合理解释,所以我认为我应该先找出答案。
我最近升级到了Kubuntu Natty Beta 1,并且在处理kworker时遇到了很多问题。有时候,它几乎消耗了我一半的CPU。另外,奇怪的是它似乎影响了我的USB端口。每当我插入USB驱动器时,进程kworker就会进入超级驱动器,这使我无法工作。
我曾经考虑过要提交一个错误,但是由于我什至没有找到关于什么是kworker的合理解释,所以我认为我应该先找出答案。
Answers:
“ 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阅读器,邮件阅读器,文件索引器,活动跟踪器等)。如果这不起作用,请尝试重新启动。如果您的系统允许您在预引导环境中启用或禁用硬件,请尝试关闭不使用的硬件。如果在每次重新启动之前发生这种情况,那么您可以尝试卸载东西,但是在这一点上,您将需要运行syscall分析工具来跟踪可能导致此过载的特定应用程序。
希望您的特定系统在将来的内核升级中不再表现这种行为(并且已经解决了许多最常见的原因)。
什么是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]
它向我暗示了e1000e
以太网卡模块中的问题,确实sudo rmmod e1000e
使高CPU负载立即消失了[ e1000e错误#26 ]。
echo l > /proc/sysrq-trigger
似乎对proxmox不好用sysrq: SysRq : This sysrq operation is disabled.
。
为什么kworker占用CPU(续)?作为我这里其他答案的替代方法,Perf是一种更专业的方法来分析哪些内核任务正在占用您的CPU:
安装perf
:
sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
(第二个软件包必须与您的内核版本匹配。您可以先安装just,linux-tools-common
然后调用perf
以告诉您它需要哪个软件包。)
记录所有CPU上大约10秒的回溯记录:
sudo perf record -g -a sleep 10
分析您的录音:
sudo perf report
(导航调用图与←,→,↑,↓和Enter。)
perf
将问题归结为sd_mod
内核模块。在vmx
文件中禁用SCSI将阻止模块加载并使系统恢复正常速度:scsi0.present = "FALSE"
只是让大家知道。我遇到了这个问题,安装了perf(这是一个很棒的工具),它指向旋转锁定和XFS。这指向了NFS。然后我意识到我的一个坐骑空间不足。释放空间会导致kworker CPU降至0。
因此,显然这可能是繁忙的NFS服务器上驱动器空间用尽的症状!
我最近在外置USB USB护照上安装了Ubuntu Natty。当我从大约有两年历史的台式机开始工作时,所有东西都像魅力一样。当我在新笔记本电脑(MSI gt680r系统)上启动时,从睡眠状态唤醒计算机或插入其他USB磁盘后,它的速度会降低。
Kworker进程占用的CPU越来越多,并且鼠标不时冻结。
我在各种无效的论坛上阅读了几种解决方案。
我进入笔记本电脑的BIOS,那里:
Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled
我更改为:
Hand XCHI OFF: disabled
EHCI Hand OFF: disabled
从那以后,它不再冻结在我笔记本电脑上的natty上。
如果问题何时得到纠正,我将启用退回功能。
我认为禁用Nepomuk可以帮助您:
http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2-kubuntu-lucid-10-04/