如何在 Linux 服务器上查看当前系统的负载情况以及各个核心的 CPU 使用率?

IT巴士 65 0

一、系统负载与 CPU 使用率的定义

在 Linux 系统中,系统负载(Load Average) 表示一段时间内系统处于可运行或不可中断状态的进程数(即 CPU 资源竞争压力的量化指标),而 CPU 使用率 则反映 CPU 核心的实际工作时间占比。两者结合可全面评估服务器的性能状态。


二、查看系统负载的核心工具

1. uptime 命令
$ uptime23:10:01 up 15 days,  3:22,  2 users,  load average: 0.02, 0.05, 0.10
  • 功能:快速获取系统运行时间、用户数和负载平均值。

  • 负载值解读

    • 三个数值分别表示过去 1分钟、5分钟、15分钟 的平均负载。

    • 参考标准:若负载值接近或超过 CPU 核心数(如 4 核负载超过 4),可能表示资源紧张。

2. top 命令
$ top# 首行显示负载信息,第三行显示总体 CPU 使用率
  • 操作技巧

    • 按 1 键展开所有 CPU 核心的详细使用率。

    • 按 Shift + H 查看线程级资源占用。

3. htop 工具(增强版 top)
$ htop  # 需提前安装(apt/yum install htop)
  • 优势

    • 彩色界面直观显示每个核心的负载(横向进度条)。

    • 支持鼠标交互和进程树查看。


三、深入分析 CPU 使用率

1. mpstat(多核统计工具)
$ mpstat -P ALL 1  # 每1秒刷新所有核心数据
  • 输出示例

    %usr   %nice   %sys  %iowait  %irq  %soft  %idle
    12.3    0.0     1.2     0.5    0.1    0.2    85.7
  • 关键指标

    • %idle:CPU 空闲率,持续低于 20% 需警惕。

    • %iowait:等待 I/O 的时间占比,高值可能预示磁盘瓶颈。

2. sar(历史数据分析)
$ sar -u 1 3      # 实时监控(每秒1次,共3次)$ sar -P ALL       # 查看历史所有核心记录
  • 应用场景:结合 -s 和 -e 参数分析特定时间段的性能趋势。

3. /proc/stat 原始数据
$ cat /proc/stat | grep cpucpu  1000 200 300 4000 50 0 0 0 0 0cpu0 500 100 150 2000 25 ...
  • 字段解析

    • 依次为用户态、低优先级用户态、系统态、空闲、I/O等待、硬件中断等时间单位(单位:jiffies)。

    • 通过计算差值可得到实时使用率。


四、可视化与自动化工具推荐

  1. Glances
    跨系统监控工具,集成 CPU/内存/网络数据,支持 Web 端访问:

    $ pip install glances$ glances
  2. nmon
    生成 CSV 格式报告,适合长期性能分析:

    $ nmon -f -s 60 -c 1440  # 每60秒采样,持续1天
  3. Prometheus + Grafana
    企业级监控方案,通过 Node Exporter 采集数据,Grafana 展示动态仪表盘。


五、常见问题与优化建议

  1. 负载高但 CPU 使用率低

    • 可能原因:I/O 阻塞(检查磁盘 iostat)或大量僵尸进程(ps aux | grep 'Z')。

  2. 单核满载问题

    • 定位方法:pidstat -u -p <PID> 1 追踪进程,结合 perf top 分析热点函数。

  3. 长期优化策略

    • 使用 cgroups 限制资源分配。

    • 通过 taskset 绑定进程到特定核心,减少上下文切换。

通过 uptimetopmpstat 等工具可快速定位负载问题,结合历史数据(sar)和可视化方案(如 Grafana)可实现深度监控。建议根据场景选择工具组合,并建立基线数据以便异常对比。


标签: #Linux服务器负载分析