我曾考虑过要提交错误,但由于我什至没有找到关于kworker的合理解释。我想我应该先找出答案。
#1 楼
“ 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性能分析工具来跟踪可能导致此过载的特定应用程序。
希望您的特定系统在以后的内核升级中不再表现这种行为(并且已经解决了许多最常见的原因)。
评论
我有一个缓慢的登录问题,我认为与此有关;我设法通过延迟以这种方式启动的所有方法来解决此问题:askubuntu.com/a/484856/46437
–水瓶座力量
2015年4月2日在20:24
也许这是多余的,但对非常明确表达的回应表示敬意。先生,这是一些表达精良的英语。
–乔恩·卡特(Jon Carter)
16年5月24日在23:49
“ syscall性能分析工具可以跟踪可能导致此过载的特定应用程序”像哪个?我只能找到告诉我系统的哪个部分被调用的工具,这通常是很隐秘的,但是我想知道是哪个程序引起了系统调用(最好甚至是为什么)。
–法比安·罗林(FabianRöling)
20年1月13日在13:50
kworkers只是做工作进入工作队列,还是承担其他职责?
– Severyn Kozak
20-04-18在21:07
#2 楼
什么是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:禁用了该sysrq操作。可悲的是。
– hak8or
18年1月29日,0:51
sysrq需要使用sysctl -w kernel.sysrq = 1重新启用。请参见askubuntu.com/questions/911522/…
–塞巴斯蒂安
18年4月6日在6:36
您如何理解e1000是引起此问题的原因?仅仅因为它被重复了?
–onurcanbkts
19年7月15日在10:11
@onurcanbektas是–最频繁重复的结果是最可能的原因。因为回溯是现场检查,所以需要检查CPU占用的带宽。
– Tanius
19年7月16日在11:18
#3 楼
为什么kworker占用CPU(续)?作为我这里其他回答的替代方法,Perf是一种更专业的方法来分析哪些内核任务正在占用您的CPU:安装
perf
:sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
(第二个软件包必须与您的内核版本匹配。您可以仅安装
linux-tools-common
并调用perf
来告诉您它需要哪个软件包。)< br记录所有CPU上大约10秒钟的回溯记录:
sudo perf record -g -a sleep 10
分析记录:
sudo perf report
(用←,→,↑,↓和Enter导航调用图。)
评论
在我的系统上,使用perf在VMware虚拟机内部运行,我将问题追溯到sd_mod内核模块。在vmx文件中禁用SCSI会阻止模块加载并使系统恢复正常速度:scsi0.present =“ FALSE”
– feklee
15年12月28日在0:17
E:无法找到linux-tools-3.11.0-15-generic软件包E:找不到glob'linux-tools-3.11.0-15-generic'的软件包E:regex找不到任何软件包'linux-tools-3.11.0-15-generic'
–稻田
19-2-27在12:09
@Paddy:请再次检查答案:-)“ [linux-tools-*-generic]软件包必须与您的内核版本匹配。您可以首先仅安装linux-tools-common并调用perf使其告诉您哪个软件包需求。”
– Tanius
19年2月27日在18:22
对于RHEL和fedora,程序包名称为perf。即yum install perf。我用它来像perf top thich show那样显示哪些调用占用最多的周期。非常好。最好在您的答案中加入perf top。提出了两个不错的答案。
–akostadinov
20-4-11上午17:51
您可以只安装linux-tools-generic以获得最新版本。就我而言,原因是PCI到USB控制器的故障。
– Anton Yablokov
20年8月27日在2:56
#4 楼
只是让大家知道。我遇到了这个问题,安装了perf(这是一个很棒的工具),它指向旋转锁定和XFS。这指向了NFS。然后我意识到我的一个坐骑空间不足。释放空间会使kworker CPU降为0。因此,显然这可能是繁忙的NFS服务器上的驱动器空间用完的征兆!
评论
我注意到当运行特定的virtualbox时,kworker崩溃了。原来有人正在与我的主机一起运行NFS来共享文件。但是还远远不够。卸载NFS可解决此问题。我想我将与sshfs挂载共享。
–Programster
2014年4月22日在17:57
#5 楼
我最近在外置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上。
如果问题何时得到纠正,我将启用退回。
评论
谁能解释为什么会这样? XCHI如何连接?
–GuySoft
17年2月20日在10:27
#6 楼
我认为禁用Nepomuk可以为您提供帮助:http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2-kubuntu-lucid- 10-04 /
评论
谢谢,但是我之后安装了Kubuntu 11.04的新副本,前面提到的问题消失了。
– davorao
2011年5月6日18:32
尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
–fossfreedom♦
2014年3月7日10:37
评论
奇怪的是,kworker正在运行,并且对唤醒起了10%的作用,但是我没有安装Kubuntu程序。未安装Alos Nepomuk。从afrazier的反应来看,我现在认为它与内核有关(因此kworker中的k是内核)。因此,这就是为什么您还要在Ubuntu机器上运行kworker的原因。
这个答案也可能有助于找出kworker在做什么:unix.stackexchange.com/questions/22851/…
您不应该进行最后一次操作系统更新。如果幸运的话,下一个会修复它。
我有一台Dell T40,以下解决方案为我工作:askubuntu.com/questions/1044872/…