Bravoboy Software Development Engineer

linux cpu idle异常排查

2019-01-14

背景

线上有一台机器突然有cpu idle报警。登录机器发现,使用top命令查看发现进程cpu占用率比较高。同时发现system状态占比达到20%+。
使用mpstat -P ALL 1 查看每个cpu消耗情况

看上图,发现有几个cpu的软中断占比很高,分布不均衡。
使用这个命令:watch -n1 -d cat /proc/interrupts 可以看到主要是哪些中断数比较多。
发现中断号:67-78 这几个比较多。同时发现他们分布的cpu确实不均衡,和mpstat观察的效果一致。那么需要我们手动设置中断在不同的cpu运行,均衡负载。下面是设置以后的效果

sar -I XALL 1 | grep -v 0.00 也可以查看具体是哪些中断比较多
dstat命令可以查看每秒中断数和进程切换数

资料

lscpu命令可以看到机器的具体的cpu配置。

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
Thread(s) per core:    1
Core(s) per socket:    6
Socket(s):             2

CPU(s)就是逻辑的cpu数 = Socket(s) * Core(s) per socket * Thread(s) per core

Socket(s) 表示主板上面的槽位个数,等于芯片数
Core(s) per socket 表示每个芯片上面的cpu 核数
Thread(s) per core 表示每个核同时运行的线程数,> 1就是表示开启了超线程。

参考这篇文章


下一篇 rocksdb filter

Content