首页  编辑  

如何排查Kworker高CPU问题

Tags: /计算机文档/Linux & Unix/   Date Created:
如果Linux Kworker CPU高,可以按下面的方法排查:

首先 进入 root模式,例如 su 或者 sudo su -
然后 运行下面指令创建 backtrace:
echo l > /proc/sysrq-trigger
再用 dmesg 查看输出经常消耗CPU的call trace,例如:
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]
 找到后,运行 sudo rmmod e1000e 停止消耗CPU的模块。

安卓下排查CPU高问题:

adb shell
top -n 1 查看占用CPU的进程,记录其PID,例如51,然后:
cat /proc/<pid>/stack

就可以查看调用堆栈了,可以运行多次,看到最多的函数,就是占用CPU高的地方。