当前位置:首页 > Linux > 正文

Linux如何查看指定时段CPU负载?

使用 tophtop实时监控,或通过 sar -u查看历史数据(需安装sysstat),执行 sar -u 5 3可每5秒采样一次、共3次显示CPU使用率,包含用户态、内核态及空闲百分比。

在Linux系统中,查看一段时间内的CPU负荷是性能监控和故障排查的关键操作,以下是几种专业、可靠的方法,结合系统工具和日志分析,确保数据的准确性和实用性:


使用 sar 命令(推荐)

sar(System Activity Reporter)是 sysstat 工具包的核心组件,专门用于收集和报告历史系统负载数据,适合分析时间范围内的CPU使用率。

步骤:

  1. 安装 sysstat(若未安装):

    sudo apt install sysstat         # Debian/Ubuntu
    sudo yum install sysstat         # CentOS/RHEL

    安装后,系统会自动每10分钟收集一次数据(通过 /etc/cron.d/sysstat)。

  2. 查看特定时间段的CPU负荷

    Linux如何查看指定时段CPU负载?  第1张

    sar -u -s 10:00:00 -e 12:00:00  # 查看10:00到12:00的整体CPU使用率

    输出示例

    11:00:01 AM  CPU   %user   %nice  %system  %iowait  %idle
    11:10:01 AM  all   25.32    0.01     5.12      1.23   68.32
    11:20:01 AM  all   30.45    0.02     6.01      0.98   62.54
    • 关键指标
      • %user:用户进程占用CPU百分比。
      • %system:内核进程占用百分比。
      • %idle:CPU空闲百分比。
      • %iowait:等待I/O操作的百分比(值过高可能表示磁盘瓶颈)。
  3. 查看某一天的日志

    sar -u -f /var/log/sysstat/sa25  # 分析25号的数据(日志路径因系统而异)

使用 mpstat 命令

mpstat(同属 sysstat 工具包)提供多核CPU的详细统计,支持按时间间隔采样。

示例:

mpstat -P ALL 5 60                # 每5秒采样一次,共60次(5分钟),并显示所有CPU核心

输出关键项

  • %usr:用户空间占用。
  • %sys:内核空间占用。
  • %iowait:I/O等待。
  • %idle:空闲率。

使用 vmstat 命令

vmstat 提供简化的系统资源概览,适合快速检查。

示例:

vmstat 10 30                      # 每10秒采样一次,共30次(5分钟)

输出解析

  • r:运行队列长度(若持续>CPU核心数,表示CPU饱和)。
  • us/sy/id:分别对应用户态、内核态、空闲CPU百分比。

结合 tophtop 实时监控

虽然 top 是实时工具,但可通过日志重定向记录一段时间的数据:

top -b -d 10 -n 60 > cpu_log.txt  # 每10秒采样,共60次(10分钟),结果保存到文件

grep 分析日志:

grep "Cpu(s)" cpu_log.txt          # 提取所有CPU摘要行

自定义脚本监控

通过Shell脚本定期记录数据(无需 sysstat):

#!/bin/bash
end=$((SECONDS+300))  # 监控5分钟
while [ $SECONDS -lt $end ]; do
    echo "$(date '+%H:%M:%S') $(top -bn1 | grep "Cpu(s)")" >> cpu_usage.log
    sleep 10
done

运行后,cpu_usage.log 将包含时间戳和CPU负载快照。


如何选择最佳方法?

场景 推荐工具 优势
分析历史数据(如昨日) sar 自动归档,支持灵活时间范围查询
实时多核监控 mpstat 按核心详细统计
快速资源概览 vmstat 轻量级,同时显示内存/进程状态
临时诊断 top + 日志 无需安装额外工具

注意事项

  1. sysstat 数据存储
    • 日志路径:/var/log/sysstat/saXX(XX为日期)。
    • 数据保留时长由 /etc/sysstat/sysstat 中的 HISTORY 参数控制(默认28天)。
  2. 高负载诊断
    • %idle 持续低于 10%,表示CPU资源紧张。
    • %iowait 高于 15% 可能暗示磁盘I/O瓶颈。
  3. 权限要求:访问历史日志需 rootsudo 权限。

引用说明

  • sarmpstat 文档:参考 man sar 或 sysstat官方文档。
  • Linux性能监控标准:基于《Systems Performance: Enterprise and the Cloud》方法论(Brendan Gregg著)。
  • 数据安全建议:操作符合Linux审计规范,不影响系统稳定性。

通过上述方法,可精准定位CPU瓶颈,优化系统性能,建议优先部署 sysstat 并定期检查日志,以建立长期性能基线。

0