CPU性能指标
CPU使用率
描述CPU的繁忙程度,涵盖用户态、系统态、等待I/O及中断处理等场景,是最直观的负债指标。 - 用户CPU:指运行用户应用程序的时间占比。数值高意味着应用程序繁忙,是排查业务逻辑的重点。 - 系统CPU:自内核态运行的时间占比,处理系统调用等。数值高通常指向驱动或系统服务的瓶颈。 - IO等待:指CPU等待IO操作完成的时间。高值说明系统有大量IO请求排队,需排查磁盘或网络瓶颈。 - 软硬中断:处理硬件或软件异步时间的时间。高值通常意味着正在处理大量网络包接受或磁盘IO完成事件。
平均负载
描述系统繁忙程度,指单位时间内处于可运行或不可中断状态的平均进程数。若数值持续高于逻辑CPU核心数,则表明系统负载过重。通常关注过去1分钟、5分钟和15分钟的数值变化。
上下文切换
描述CPU调度频繁程度,操作系统调度基础,涉及进程状态的保存与恢复。分为自愿与非自愿切换。过多的非自愿切换通常意味着CPU资源紧张,会带来额外的系统开销。
CPU缓存命中率
现代CPU多级缓存的关键指标。命中率越高,内存访问延迟越低,程序执行效率越高。
CPU性能分析工具
系统CPU使用率:vmstat, mpstat, top, sar
进程CPU使用率:top, pidstat, ps
平均负载: uptime, top
上下文切换: vmstat(系统), pidstat -w(进程)
中断与软中断:top, vmstat, /proc/interrupts
深度事件剖析:perf(强大的全能分析工具,性能追踪及火焰图),execsnoop (能够实时监控进程创建和执行情况,特别适合捕捉那些难以用传统工具检测到的短期进程)
CPU性能诊断流程
核心思路:现象观察->缩小范围->定位源头->深度剖析。从现象到本质,层层递进。
判断全局状态
top:提供系统概览、进程状态和CPU使用率等核心指标,发现异常指标,作为分析起点。判断问题出在系统层面还是进程层面,定位到具体的进程、线程,或识别出IO、中断等系统级瓶颈
vmstat(系统视角):提供进程、内存、IO、上下文切换和中断的整体信息,从全局判断系统状态。pidstat(进程视角):精确展示每个进程和县城的CPU、内存和上下文切换情况,定位具体进程问题。深度剖析
perf:对CPU事件、缓存命中率、指令频率进行采样,深入进程内部找到性能热点代码,实现精准瓶颈定位。execsnoop:用于实时监控系统中短生命周期进程的执行,对于一闪而过的短时进程导致的CPU异常,能精准捕捉执行痕迹,是排查此类隐蔽问题的利器。
分析示例
- 场景一:用户CPU使用率高 使用pidstat定位高消耗进程,结合perf top分析调用链,精准锁定热点函数。
- 场景二:系统CPU使用率高 通过vmstat排查上下文切换与中断,结合/proc/softirqs深入分析内核态行为。
- 场景三:iowait过高 利用dstat或sar区分磁盘与网络IO瓶颈,进而追踪自具体的阻塞进程。
- 场景四:软中断频繁 查看/proc/softirqs确认中断类型(如网络接收), 针对性分析子系统性能。