报错是这么冒出来的。进程列表里多个内核工作线程合计占用两成处理器,应用本身很闲,负载却一直降不下来。
真正麻烦的地方在于,几个原因的现象几乎一样。磁盘或网络中断处理集中在少数核上。也可能是某个内核模块存在忙等或者反复重试。
另外,大量小文件写入触发频繁回写。
动手时先看内核线程的分布
ps -eo pid,comm,pcpu --sort=-pcpu | head
再往下确认中断集中在哪些核
cat /proc/interrupts | head -20
接着重启中断均衡服务
systemctl restart irqbalance
剩下的就是核对是否有异常回写
vmstat 1 5
这台环境是别人交接的,不少默认值被动过,只能一项项核。
恢复的判定其实很直接。内核线程占用降到百分之五以下,中断分布均匀,负载恢复正常。
补一句。同名线程的工作内容完全不同,要靠内核栈才能分清是哪个子系统在跑;盲目升级内核不如先看中断分布和 IO 模式,改配置往往更快见效。报错文案容易误导,真正的原因往往在相邻那一层的日志里。