前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux kworker 占用CPU过高情况解决

Linux kworker 占用CPU过高情况解决

原创
作者头像
用户4988085
修改2021-07-28 17:50:19
21.5K0
修改2021-07-28 17:50:19
举报
文章被收录于专栏:建站知识

kworker是3.x内核引入的,kworker 指工作者线程,用来执行工作队列中的work,一般由kthreadd建立,下面为大家分享一下Linux kworker 占用CPU过高情况。

先打开HTOP

代码语言:javascript
复制
 htop

然后按H K(大写)

我们看到Kworker/0:0+events占用了大量CPU,下面参考下人家的回答

什么是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回溯中经常发生的情况,希望它可以指出问题的根源。

安装perf

代码语言:javascript
复制
 sudo dnf install perf.aarch64 #我用的华为云鲲鹏arm的,自行修改

记录所有CPU上10S回溯记录

代码语言:javascript
复制
 sudo perf record -g -a sleep 10

然后会在当前目录下生成一个perf.data

用以下命令查看

代码语言:javascript
复制
 sudo perf report

我们看到arch_cpu_idle占用大量CPU。于是问了Fedora telegram群里的,翻了下arch/arm64/kernel/process.c

结论居然根本没有其他进程在使用CPU,Linux会自动保存CPU运作。(以后我会把博客转到自己的网站上zhyz.ru)

doesn’t this mean that simply no other process is using the CPU? from what I see, this is like the “Idle task” in Windows

补充:不知道是不是BUG现在2个线程都满了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档