查看平均负载:

$ uptime20:32:31 up 33 min,  1 user,  load average: 0.72, 0.63, 0.70

结果解释:

20:32:31 // 当前时间
up 33 min  // 系统运行时间
1 user  // 正在登录的用户数
0.72, 0.63, 0.70  // 分别为过去 1 分钟、5 分钟、15 分钟的平均负载

平均负载:处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数。
可运行状态进程:正在使用 CPU 或正在等待 CPU 的进程。ps 后看到的 R 状态的进程。
不可中断进程:正处于内核态关键流程中的进程,且这些流程不可打断,如等待硬件设备 I/O 响应。ps 后看到的 D 状态的进程。是系统对进程和硬件设备的一种保护机制。

平均负载的理想情况是等于 CPU 数。

查看 CPU 个数:

$ grep 'model name' /proc/cpuinfo | wc -l

平均负载案例分析

准备

$ apt install stress
$ sudo apt install sysstat

stress 是一个 Linux 系统压力测试工具。
sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。案例中会用到 mpstat 和 pidstat。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看 CPU 的性能指标及所有 CPU 的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 及上下文切换等性能指标。

测试前的平均负载:

$ uptime20:53:18 up 54 min,  1 user,  load average: 0.47, 0.46, 0.58

案例一:CPU 密集型进程

在第一个终端运行 stress,模拟 CPU 使用率 100% 的场景:

$ stress --cpu 1 --timeout 600

在第二个终端运行 uptime,查看平均负载的变化情况:

# -d 参数表示高亮显示变化的区域
$ watch -d uptime
... load average: 1.43, 1.00, 0.78

1 分钟的平均负载增加到 1.43。

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

# -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
Linux 4.13.0-45-generic (yjp-VirtualBox)    2019年04月23日     _x86_64_    (2 CPU)21时05分22秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
21时05分27秒  all   33.19    0.00    1.46   11.84    0.00    0.58    0.00    0.00    0.00   52.92
21时05分27秒    0   98.55    0.00    1.45    0.00    0.00    0.00    0.00    0.00    0.00    0.00
21时05分27秒    1    4.83    0.00    1.47   17.02    0.00    0.63    0.00    0.00    0.00   76.05

有一个 CPU 的使用率为 98.55%,而 iowait 为 0,说明平均负载升高是由 CPU 使用率过高导致。

用 pidstat 查看导致 CPU 使用率过高的进程:

# 间隔 5 秒后输出一组数据
$ pidstat -u 5 1
Linux 4.13.0-45-generic (yjp-VirtualBox)    2019年04月23日     _x86_64_    (2 CPU)21时11分15秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
21时11分20秒  1000      6697   98.01    1.00    0.00   99.00     0  stress

案例二:I/O 密集型进程

模拟 I/O 压力:

$ stress -i 1 --timeout 600

第二个终端中查看平均负载变化情况:

$ watch -d uptime
...load average: 1.93, 1.46, 1.21

1 分钟的平均负载慢慢升高到了 1.93

第三个终端中查看 CPU 使用率变化情况:

$ mpstat -P ALL 5 1
Linux 4.13.0-45-generic (yjp-VirtualBox)    2019年04月23日     _x86_64_    (2 CPU)21时20分51秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
21时20分56秒  all    2.60    0.00    1.52   41.28    0.00    1.84    0.00    0.00    0.00   52.76
21时20分56秒    0    0.60    0.00    0.40    0.60    0.00    0.40    0.00    0.00    0.00   97.99
21时20分56秒    1    4.92    0.00    2.58   88.76    0.00    3.51    0.00    0.00    0.00    0.23Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    2.60    0.00    1.52   41.28    0.00    1.84    0.00    0.00    0.00   52.76
Average:       0    0.60    0.00    0.40    0.60    0.00    0.40    0.00    0.00    0.00   97.99
Average:       1    4.92    0.00    2.58   88.76    0.00    3.51    0.00    0.00    0.00    0.23

其中一个 CPU 使用率为 2.58%,而 iowait 为 88.76%,说明平均负载升高由 I/O 引起。

pidstat 查找高 I/O 进程:

$ pidstat -u 5 1
Linux 4.13.0-45-generic (yjp-VirtualBox)    2019年04月23日     _x86_64_    (2 CPU)21时21分22秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
21时21分27秒     0         8    0.00    0.20    0.00    0.20     1  rcu_sched
21时21分27秒     0        16    0.00    0.20    0.00    0.20     1  ksoftirqd/1
21时21分27秒     0       176    0.00    1.20    0.00    1.20     1  kworker/1:1H
21时21分27秒     0       177    0.00    0.40    0.00    0.40     0  kworker/0:1H
21时21分27秒     0       199    0.00    0.40    0.00    0.40     0  jbd2/sda1-8
21时21分27秒     0       866    5.78    1.39    0.00    7.17     1  snapd
21时21分27秒     0      1425    1.20    0.80    0.00    1.99     1  Xorg
21时21分27秒     0      1815    0.00    0.20    0.00    0.20     0  dockerd
21时21分27秒  1000      3350    0.80    1.59    0.00    2.39     0  compiz
21时21分27秒     0      6754    0.00    0.20    0.00    0.20     1  kworker/u4:1
21时21分27秒  1000      6987    0.20    4.98    0.00    5.18     0  stress
21时21分27秒  1000      6988    0.40    0.20    0.00    0.60     1  watch
21时21分27秒  1000      7087    0.20    0.20    0.00    0.40     1  pidstat

场景三:大量进程场景

模拟 8 个进程:

$ stress -c 8 --timeout 600

1 分钟的平均负载慢慢升高到了 8:

$ watch -d uptime
...load average: 8.00, 4.17, 2.43

查看进程情况,8 个进程争抢 2 个 CPU:

$ pidstat -u 5 1
Linux 4.13.0-45-generic (yjp-VirtualBox)    2019年04月23日     _x86_64_    (2 CPU)21时34分56秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
21时35分02秒     0       176    0.00    0.20    0.00    0.20     1  kworker/1:1H
21时35分02秒     0       199    0.00    0.20    0.00    0.20     1  jbd2/sda1-8
21时35分02秒     0       763    0.20    0.00    0.00    0.20     0  accounts-daemon
21时35分02秒     0       866    3.15    0.79    0.00    3.94     1  snapd
21时35分02秒     0      1425    1.77    1.77    0.00    3.54     1  Xorg
21时35分02秒     0      2029    0.20    0.20    0.00    0.39     1  docker-containe
21时35分02秒  1000      3350    0.59    0.79    0.00    1.38     0  compiz
21时35分02秒  1000      4433    0.20    0.00    0.00    0.20     1  gnome-terminal-
21时35分02秒  1000      7534   24.80    0.20    0.00   25.00     0  stress
21时35分02秒  1000      7535   21.46    1.77    0.00   23.23     1  stress
21时35分02秒  1000      7536   23.62    0.39    0.00   24.02     0  stress
21时35分02秒  1000      7537   22.83    0.59    0.00   23.43     1  stress
21时35分02秒  1000      7538   22.64    0.20    0.00   22.83     0  stress
21时35分02秒  1000      7539   21.85    1.57    0.00   23.43     1  stress
21时35分02秒  1000      7540   22.24    1.57    0.00   23.82     1  stress
21时35分02秒  1000      7541   23.82    0.20    0.00   24.02     0  stress
21时35分02秒  1000      7544    0.00    0.20    0.00    0.20     0  pidstat

参考
倪朋飞. Linux 性能优化实战

Linux 性能优化实战(倪朋飞)---平均负载相关推荐

  1. linux性能优化实战 倪朋飞,Linux性能优化实战:系统的swap变高(09)

    一.实验环境 1.操作系统 root@openstack:~# lsb_release -a No LSB modules are available. Distributor ID:Ubuntu D ...

  2. Linux 性能优化实战(倪朋飞)---系统中出现大量不可中断进程和僵尸进程怎么办?

    进程状态 可通过 top 或 ps 查看进程状态. $ topPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4480 yjp 20 0 6 ...

  3. linux下缓存命中测试,Linux 性能优化实战(倪朋飞)---查看缓存命中情况

    cachestat 提供了整个操作系统缓存的读写命中情况. cachetop 提供了每个进程的缓存命中情况.但是,cachetop 并不把直接 I/O 算进来. 安装 cachestat.cachet ...

  4. Linux 性能优化实战(倪朋飞)---CPU 使用率

    查看 CPU 使用率 对于 CPU 使用率,top 默认 3 秒时间间隔:ps 使用的是进程的整个生命周期. top 显示系统总体的 CPU 和内存使用情况,及各个进程的资源使用情况:ps 只显示每隔 ...

  5. linux性能优化实战学习笔记-(1)CPU性能分析工具与套路

    版权归Linux性能优化实战 作者倪鹏飞,本文主要是为学习.整理相关知识点,请勿用作商用,侵删. linux性能分析工具 下图来自:Brendan D. Gregg http://www.brenda ...

  6. 学习Linux性能优化实战-1

    文章目录 前言 平均负载 命令 进程调度 命令 相关文件 CPU使用率 perf 软中断 测试工具 前言 最近在极客时间上面发现了倪鹏飞老师的Linux性能优化实战,自己感觉讲得很好,有兴趣的朋友可以 ...

  7. Linux性能优化实战学习笔记:第十讲==中断

    Linux性能优化实战学习笔记:第十讲 一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 ? 1 2 3 4 5 6 7 wget http://www.tcp ...

  8. 推荐学习-Linux性能优化实战

    学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 推荐一个学习 ...

  9. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

最新文章

  1. hdu4421 2-sat(枚举二进制每一位)
  2. 程序猿果真有前端后端client吗
  3. opencv给视频打马赛克
  4. SpringMVC RedirectView的使用以及源码分析
  5. Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具
  6. 阿里云-CentOS7安装Vsftpd
  7. linux办公软件wps字体,linux版wps-office安装缺少的字体
  8. PHP基础教程(一)PHP快速入门
  9. NS3_Tutorial 中文版: 第一章 简介
  10. 场景文字识别论文阅读
  11. 使用mybatis的逆向工程易出现的错误
  12. cjk-ext-e 字体
  13. 用flask和html制作个人相册页面,Python编程flask使用页面模版的方法
  14. JVM:并发的可达性分析
  15. C++实现K-means,聚类原理解析(并用在图片像素点聚类)
  16. python-递增的三元子序列
  17. XWPFDocument 创建Word并且生成目录结构
  18. Nginx反向代理,通过域名直接访问指定的端口,比如8080
  19. 如何从网页中下载图片
  20. 《一年顶十年》,阅读和写作的意义

热门文章

  1. Ubuntu20.04使用zfs系统后以rootless方式安装docker测试
  2. 什么是跨境电商ERP呢?
  3. Ubuntu18.04系统下,gcc编译过程分析、命令参数介绍及ELF文件格式学习
  4. 如何创建公网NAT网关
  5. LAV Filters绿色版打开配置文件的方法
  6. 编译LAVFilters
  7. 福禄克为什么那么贵的这几个原因你要知道
  8. E6,E12,E24,E48,E96系列的电阻全部阻值
  9. Web端阿里云音视频通信推流、拉流demo
  10. myOracleTool