OK,谢谢官方大大查验,问题已经解决了。
问题是由USB 电源管理引发的中断风暴,我写一下我的方法,供大家参考。
排查过程:
第一步:进入SSH,查看 top
显示 kworker/0:1+pm
(内核电源管理线程)和 ksoftirqd/0
(CPU0 软中断线程) 长期占满 CPU0,导致性能下降。
第二步:用 火焰图 和 perf
分析:火焰图中 xhci_hub_control
、pm_runtime_suspend
等函数占比极高,结合 perf
采样,定位到 USB 设备频繁电源状态切换(挂起/唤醒) 触发内核任务。

第三步:设备电源配置检查:bash # 查看 USB 设备电源策略(默认多为 auto,即自动休眠/唤醒) cat /sys/bus/usb/devices/usb1/power/control
发现 USB 设备处于自动电源管理(auto
),导致高频中断和内核任务。
第四步:临时修复:禁用 USB 自动电源管理 bash # 遍历所有 USB 根集线器,强制禁用自动电源管理(立即生效,重启失效) for usb_dev in /sys/bus/usb/devices/usb*; do echo "on" > "$usb_dev/power/control" done。
修复以后,cpu占用瞬间正常了,可以确定就是它的问题。

第五步,永久固化,设置一个 crontab
开机自动执行 bash sudo crontab -e # 进入 crontab 编辑界面(默认编辑器为 nano)
。添加开机触发任务 在文件末尾添加以下内容(@reboot
表示系统重启时自动执行):bash @reboot for usb_dev in /sys/bus/usb/devices/usb*; do echo "on" > "$usb_dev/power/control"; done
保存退出。按 Ctrl + X
→ 提示“Save modified buffer?”,按 Y
→ 按 Enter
确认保存路径。
最后,重启检验,cpu占用下来了,重启也不会有问题。
唯一的问题是,为了装perf我重新处理了一下内核,导致现在飞牛的升级会失败,提示“文件不完整”。