CPU负载与使用率详解及监控方法
1. CPU负载与使用率的概念辨析1.1 核心定义差异CPU负载定义为在特定时间点使用或等待使用CPU核心的进程数量。对于单核系统当负载值超过1时表明存在进程需要等待CPU资源。而在多核系统中负载值可以超过1而不引发性能问题因为存在多个核心可以并行处理任务。CPU使用率则表示CPU处理非空闲任务的时间百分比这个指标必须在特定时间间隔内测量获得。计算方式通常为100%减去CPU空闲时间的百分比。1.2 系统核心数的影响理解负载值必须结合系统核心数进行解释。通过以下命令可获取核心信息cat /proc/cpuinfo | grep coreuptime命令显示的负载平均值分为1分钟、5分钟和15分钟三个时间维度uptime2. CPU使用率计算方法2.1 基于vmstat的实现vmstat命令提供近实时的CPU活动监控关键输出列包括us用户模式运行时间sy内核模式运行时间id空闲时间waI/O等待时间st虚拟机窃取时间计算脚本示例echo CPU Usage: $[100-$(vmstat 1 2|tail -1|awk {print $15})]%2.2 通过/proc/stat分析/proc/stat文件包含系统启动以来的累计CPU时间统计各字段含义user用户模式时间nice低优先级进程时间system内核模式时间idle空闲时间iowaitI/O等待时间irq硬件中断时间softirq软件中断时间计算脚本cat /proc/stat|grep cpu |tail -1|awk {print ($5*100)/($2$3$4$5$6$7$8$9$10)}|awk {print CPU Usage: 100-$1}2.3 使用top命令监控top命令显示实时系统状态其中CPU行包含us用户空间占用百分比sy内核空间占用百分比id空闲百分比多核系统计算示例top -bn2 | grep %Cpu | tail -1 | grep -P (....|...) id, |awk {print CPU Usage: 100-($8/4) %}3. 工程实践要点3.1 测量间隔选择瞬时测量可能产生偏差建议采用多次采样取平均生产环境推荐1-5秒的采样间隔长期监控应记录历史趋势数据3.2 多核系统特殊处理负载值需要除以核心数进行归一化CPU使用率可能超过100%需按核心数折算需区分整体CPU和单个核心的状态3.3 性能分析建议结合负载和使用率指标综合判断高负载但低使用率可能指示I/O瓶颈持续高使用率需检查进程资源占用