si(softirq):表示 CPU 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行。
st(steal):表示 CPU 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。
排查用户 CPU 使用率高
用户 CPU 使用率反映了应用程序的繁忙程度,通常与我们自己写的代码息息相关。
操作步骤:
1)、通过 top 命令找到 CPU 消耗最多的进程号;
2)、通过 top -Hp 进程号命令找到 CPU 消耗最多的线程号(列名仍然为 PID);
3)、通过printf “%x\n” 线程号命令输出该线程号对应的 16 进制数字;
4)、PID进程在内核调用情况。如果是Java应用可通过 jstack 进程号 | grep 16进制线程号 -A 10 命令找到 CPU 消耗最多的线程方法堆栈。
是非 Java 应用可使用 perf
perf top -p 7574
如果提示perf: command not found,使用yum install perf安装。