Linux系统中,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。它不仅包括了正在使用CPU的进程,也包括处于不可打断的睡眠状态的进程—它们是在等待其它系统资源如磁盘 I/O 等的进程。而CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。
有诸多方式监测系统平均负载,比如最常用的uptimetop工具:

uptime命令

uptime会显示系统运行时间、用户数量及平均负载:

$ uptime
20:53:21 up 2:19, 3 users, load average: 0.07, 0.02, 0.00

平均负载的数字从左到右的含义依次为:

  • 最近 1 分钟的平均负载为 0.07
  • 最近 5 分钟的平均负载为 0.02
  • 最近 15 分钟的平均负载为 0.00

top命令

top命令可以实时的显示Linux系统的运行状态:

$ top

下面是系统进程状态的显示:

top - 21:01:32 up  2:27,  2 users,  load average: 0.03, 0.02, 0.00
Tasks: 261 total, 1 running, 190 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.0 us, 1.5 sy, 0.0 ni, 97.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8144440 total, 5453688 free, 939500 used, 1751252 buff/cache
KiB Swap: 7810044 total, 7810044 free, 0 used. 6794636 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

5834 f1dev 20 0 610168 107712 78048 S 1.7 1.3 0:04.87 chrome

2150 f1dev 20 0 1190912 116464 81708 S 1.0 1.4 0:14.88 compiz

5801 f1dev 20 0 771976 158536 113124 S 1.0 1.9 0:07.18 chrome

第一行的队列信息和uptime命令的输出完全一致。

系统平均负载和CPU核心数的关系

可以使用nproclscpu或者grep命令查看系统中的处理器数量:

$ nproc
2
或者
$ lscpu
或者
$ grep 'model name' /proc/cpuinfo | wc -l
2

假设系统负载如下:

$ uptime
20:53:21 up 2:19, 3 users, load average: 1.00, 0.40, 3.35

如果一个单CPU系统上表示在过去一分钟内系统刚好满载运行;在5分钟内CPU有 60%处于空闲状态;而在15分钟内,有235%的超载。
如果是在一个双核系统中表示在过去一分钟内系统有一个CPU处于完全空闲状态,另一个CPU被使用;在5分钟内,CPU平均160% 处于空闲状态;而在15分钟内,有135%的超载,也就是说最近的 15 分钟平均有1.35个进程等待CPU时间。

平均负载案例分析

首先安装stresssysstat工具:

# stress:一个Linux系统压力测试工具。
# sysstat:监控和分析系统的性能工具,包括mpstat(cpu详细信息)、pidstat(进程性能分析)命令、iostat等。
$ sudo apt install stress sysstat

同一个Linux系统打开三个终端,在第一终端模拟CPU使用率100%场景:

$ stress --cpu 1 --timeout 600
stress: info: [6684] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

第二个终端运行uptime

# -d 参数表示高亮显示变化的区域
$ watch -d uptime
21:40:12 up 3:06, 4 users, load average: 1.00, 0.50, 0.20

在第三个终端运行 mpstat 查看 CPU 使用率的变化:

# -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
21时40分01秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
21时40分06秒 all 50.45 0.30 0.50 0.00 0.00 0.00 0.00 0.00 0.00 48.75
21时40分06秒 0 100.00 0.60 0.60 0.00 0.00 0.00 0.00 0.00 0.00 4.40
21时40分06秒 1 6.02 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 93.37

从终端二看到1分钟的平均负载会慢慢增加到1.00;终端三正好有一个CPU使用率为100%,但它的iowait只有0,说明平均负载的升高正是由于CPU使用率的升高。
那么到底是哪个进程导致CPU使用率为100%,可以使用top命令来或使用pidstat命令来查看:

# 间隔 5 秒后输出一组数据
$ pidstat -u 5 1
Average: UID PID %usr %system %guest %CPU CPU Command
Average: 1000 6685 100.00 0.00 0.00 99.60 - stress

从这里可以明显看到,stress 进程的 CPU 使用率为 100%。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux31175 人正在系统学习中

[转帖]Linux性能分析:理解系统平均负载的更多相关文章

  1. Linux性能调优 | 01 平均负载的理解和分析

    01 uptime命令 通常我们发现系统变慢时,我们都会执行top或者uptime命令,来查看当前系统的负载情况,比如像下面,我执行了uptime,系统返回的了结果. [root@lincoding ...

  2. Linux性能优化-理解平均负载

    1 平均负载含义 当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况. 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数.错误定义:单位时间内的c ...

  3. 【Linux性能调优一】观大局:系统平均负载load average

    要测试linux系统性能及调优,首先要从全局检查linux的平均负载 1.什么是平均负载 load average 系统平均负载,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数, ...

  4. 【转】一文掌握 Linux 性能分析之 I/O 篇

    [转]一文掌握 Linux 性能分析之 I/O 篇 这是 Linux 性能分析系列的第三篇,前两篇分别讲了 CPU 和 内存,本篇来看 IO. IO 和 存储密切相关,存储可以概括为磁盘,内存,缓存, ...

  5. 【原创】一文掌握 Linux 性能分析之 I/O 篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 一文掌握 Li ...

  6. linux系统平均负载高(load average)

    系统平均负载高(load average) 问题现象 两个案例都是:系统平均负载高,但cpu,内存,磁盘io都正常 什么是系统平均负载 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进 ...

  7. Linux性能分析工具top命令详解

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. top命令说明 [www.linuxidc.com@linuxidc-t-tomcat-1 ...

  8. 【转】一文掌握 Linux 性能分析之网络篇

    [转]一文掌握 Linux 性能分析之网络篇 比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看.监控,又包括网络链路上的包转发时延.吞吐量.带宽等指标分析.包括但不限于以下分析工具: pin ...

  9. 一文掌握 Linux 性能分析之网络篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 这是 Linu ...

  10. Linux 性能分析工具汇总合集

    出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识, ...

随机推荐

  1. .NET技术分享日活动-202104

    2021年4月27日下午,个人组织举办了山东地区的山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NET ...

  2. 玩转云上数据湖,解析Serverless 技术落地

    导读: 本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DLI)中的技术落地.Serverless是DLI将计算能力服务化和产品化关键技术,与传统IAAS和PAAS技术 ...

  3. LiteOS内核源码分析:静态内存Static Memory

    摘要:本文带领大家一起剖析了LiteOS静态内存模块的源代码,包含静态内存的结构体.静态内存池初始化.静态内存申请.释放.清除内容等. 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要 ...

  4. 2023 年汽车行业向好发展,火山引擎 VeDI 助力车企数智转型

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 2023 年的汽车市场,预计能有一个向好的转型. 据中汽协公布的 2022 年 1-11 月累计汽车销量数据,达到 243 ...

  5. Django中安装websocket

    完整代码: https://gitee.com/mom925/django-system项目结构: 先安装所需库: pip install channels下面将websocket作为插件一样的只需要 ...

  6. 【docker】运维相关名词 Iaas-Paas和Saas docker镜像设置 启动与停止常用命令 镜像相关命令 容器相关命令

    目录 上节回顾 今日内容 1 什么是Iaas-Paas和Saas 2 docker 启动设置镜像 2.1 启动与停止常用命令 3 镜像相关命令 4 容器相关命令 练习 上节回顾 # 1 flask-s ...

  7. vi / vim 键盘图(清晰打印版,桌面背景好图)

    PDF File https://files.cnblogs.com/files/RioTian/vivim-graphical.zip?t=1704439837&download=true ...

  8. AtCoder Beginner Contest 204 (AB水题,C题DFS,D题位运算DP,E题BFS好题)

    补题链接:Here A - Rock-paper-scissors 石头剪刀布,两方是一样的则输出该值,否则输出该值 int s[4] = {0, 1, 2}; void solve() { int ...

  9. 【有奖体验】AI 都这么厉害了,可以看图生成文字描述!

    立即体验基于函数计算部署[图生文]一键部署图像描述模型: https://developer.aliyun.com/topic/aigc_fc 人工智能生成内容(Artificial Intellig ...

  10. kafka集群三、增加密码验证

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...