报错是这么冒出来的。进程列表里多个内核工作线程合计占用两成处理器,应用本身很闲,负载却一直降不下来。

真正麻烦的地方在于,几个原因的现象几乎一样。磁盘或网络中断处理集中在少数核上。也可能是某个内核模块存在忙等或者反复重试。

另外,大量小文件写入触发频繁回写。

动手时先看内核线程的分布

ps -eo pid,comm,pcpu --sort=-pcpu | head

再往下确认中断集中在哪些核

cat /proc/interrupts | head -20

接着重启中断均衡服务

systemctl restart irqbalance

剩下的就是核对是否有异常回写

vmstat 1 5

这台环境是别人交接的,不少默认值被动过,只能一项项核。

恢复的判定其实很直接。内核线程占用降到百分之五以下,中断分布均匀,负载恢复正常。

补一句。同名线程的工作内容完全不同,要靠内核栈才能分清是哪个子系统在跑;盲目升级内核不如先看中断分布和 IO 模式,改配置往往更快见效。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189