[转帖]理解平均负载

理解,平均,负载 · 浏览次数 : 0

小编点评

## CPU负载分析 **分析方法:** 1. **`uptime` 命令**:该命令可以显示系统当前的 CPU 使用率、内存使用率、I/O 使用率等信息。 2. **`mpstat` 工具**:该工具可以实时查看进程的 CPU、内存、I/O 和上下文切换等性能指标。 **分析结果:** **CPU 使用率:** * 平均 81.67% * 最低 79.11% * 最高 84.23% **内存使用率:** * 平均 16.94% * 最低 15.57% * 最高 17.91% **I/O 使用率:** * 平均 14.52% * 最低 12.17% * 最高 17.05% **其他指标:** * 平均 CPU 使用率 81.67%,高于正常范围 (30-50%)。 * 平均内存使用率 16.94%,高于正常范围 (10-25%)。 * 平均 I/O 使用率 14.52%,高于正常范围 (5-15%)。 **分析结论:** CPU 使用率和内存使用率略高于正常范围,可能存在系统性能问题。 I/O 使用率略低,说明系统在处理 I/O 请求的效率略低于正常。 **其他建议:** * 确定 CPU 使用率和内存使用率是否正常范围。 * 尝试找出导致系统性能问题的因素。 * 优化系统性能,例如减少进程间通信、减少开销操作等。

正文

https://www.jianshu.com/p/beb0b9f590d4
uptime命令
[test@localhost bin]$ uptime
 22:02:14 up  3:34,  2 users,  load average: 0.00, 0.01, 0.05
#22:02:14   //当前时间
#up  3:34    //系统运行时间
#2 users  //正在登陆用户数
#load average  //分别是:近1分钟、5分钟、15分钟的系统平均负载
  • 平均负载:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
  • 可运行状态的进程:指的是正在使用cpu或者正在等待cpu的进程,也就是我们常用ps命令看到的,处于R状态(Running或Runnable)的进程。
  • 不可中断的进程:则是处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(Uninterruptible Sleep 也称为Disk Sleep)的进程。

既然平均的是平均活跃进程数,那么最理想的,就是每个cpu上都刚好运行着一个进程,这样每个cpu都得到充分利用。

分析平均负载为多少时合理

我们知道,平均负载最理想的情况是等于cpu个数,所以在评判平均负载时,首先你要知道系统有几个cpu,这可以通过top命令,或者从文件 /proc/cpuinfo中读取:

[wanchao@localhost ~]$ grep 'model name' /proc/cpuinfo |wc -l
1
[wanchao@localhost ~]$ cat /proc/cpuinfo |grep 'processor' |wc -l
1
[wanchao@localhost ~]$ cat /proc/cpuinfo |grep 'cpu cores' |uniq
cpu cores   : 1

有了cpu个数,我们就可以判断出,当平均负载比cpu个数还大的时候,系统就已经出现了过载。如果1分钟、5分钟、15分钟三个值基本相同,或者相差不大,那就说明系统负载很平稳。
如果一分钟的值远小于15分钟的值,就说明系统最近1分钟的负责在减少,而过去15分钟内却有很大的负载;
反过来如果一分钟的值远大于15分钟的值,就说明最近1分钟的负载在增加,增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。
再举个例子,假设我们在一个单 CPU 系统上看到平均负载为 1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有 73% 的超载,而在 15 分钟内,有 698% 的超载,从整体趋势来看,系统的负载在降低。

那么,在实际生产环境中,平均负载多高时,需要我们重点关注呢?
在我看来,当平均负载高于 CPU 数量 70% 的时候,你就应该分析排查负载高的问题了。一旦负载过高,就可能导致进程响应变慢,进而影响服务的正常功能。
但 70% 这个数字并不是绝对的,最推荐的方法,还是把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。当发现负载有明显升高趋势时,比如说负载翻倍了,你再去做分析和调查。

扩展:
  • 查看哪个线程占用最多cpu:
[wanchao@localhost softwares]$ top -H -p 22452     //-H显示线程,-p按cpu占用排序
top - 19:23:24 up  7:47,  4 users,  load average: 1.05, 0.85, 0.45
Threads:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
%Cpu(s):100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1868660 total,  1191732 free,   189008 used,   487920 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1479500 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                             
 22452 root      20   0   41856   3276   1348 R 99.7  0.2   7:53.84 stress-ng-cpu  
[wanchao@localhost softwares]$ watch -d uptime
  • pidstat和mpstat辅助工具(sysstat官网源码下载地址:SYSSTAT (pagesperso-orange.fr)

    mpstat是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
[root@localhost ~]# mpstat -P ALL 5 1   
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain)     02/07/23    _x86_64_    (1 CPU)

00:02:58     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
00:03:03     all    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00
00:03:03       0    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00
Average:       0    0.00    0.00   99.19    0.00    0.00    0.81    0.00    0.00    0.00    0.00

pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标

[root@localhost ~]# pidstat -u 5 1
Linux 3.10.0-327.el7.x86_64 (localhost.localdomain)     02/07/23    _x86_64_    (1 CPU)

00:04:04      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
00:04:09        0       587    0.00    0.40    0.00    0.00    0.40     0  kworker/u256:31
00:04:09        0      1503    0.20    0.00    0.00    0.00    0.20     0  tuned
00:04:09        0      4744    0.20   98.62    0.00    0.00   98.81     0  stress-ng-io
00:04:09        0      4754    0.20    0.00    0.00    0.00    0.20     0  pidstat

Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0       587    0.00    0.40    0.00    0.00    0.40     -  kworker/u256:31
Average:        0      1503    0.20    0.00    0.00    0.00    0.20     -  tuned
Average:        0      4744    0.20   98.62    0.00    0.00   98.81     -  stress-ng-io
Average:        0      4754    0.20    0.00    0.00    0.00    0.20     -  pidstat

与[转帖]理解平均负载相似的内容:

[转帖]理解平均负载

https://www.jianshu.com/p/beb0b9f590d4 uptime命令 [test@localhost bin]$ uptime 22:02:14 up 3:34, 2 users, load average: 0.00, 0.01, 0.05 #22:02:14 //当前时

[转帖]Linux性能分析:理解系统平均负载

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

[转帖]深入理解mysql-第十二章 mysql查询优化-Explain 详解(下)

我们前面两章详解了Explain的各个属性,我们看到的都是mysql已经生成的执行计划,那这个执行计划的是如何生成的?我们能看到一些过程指标数据吗?实际mysql贴心为我们提供了执行计划的各项成本评估指标的以及优化器生成执行计划的整个过程的方法。 一、查看执行计划计算的成本数据 我们上边介绍的EXP

[转帖]如何理解 iowait

Linux中,%iowait 过高可能是个问题,严重的时候,它能使服务停止, 但问题是,多高才算高? 什么时候应该担心呢? 本文将讨论 iowait 的含义、相关的统计数据、原理以及 iowait的瓶颈问题 什么是 iowait Linux 中的解释 Show the percentage of t

[转帖]性能优化必备——火焰图

引言 本文主要介绍火焰图及使用技巧,学习如何使用火焰图快速定位软件的性能卡点。结合最佳实践实战案例,帮助读者加深刻的理解火焰图构造及原理,理解 CPU 耗时,定位性能瓶颈。 背景 当前现状 假设没有火焰图,你是怎么调优程序代码的呢?让我们来捋一下。 1. 功能开关法 想当年我刚工作,还是一个技术小白

[转帖]深入内存/主存:解剖DRAM存储器

https://zhuanlan.zhihu.com/p/561501585 2022/9/9更新:经过和评论区大佬的交流,准备研读一下JEDEC标准,主要是加深自己对banking和访存加速的理解(对应本文的第五节,主要问题集中在提出banking是为了隐藏row缺失造成的损失还是为了隐藏CPU和

[转帖]深入内存/主存:解剖DRAM存储器

https://zhuanlan.zhihu.com/p/561501585 2022/9/9更新:经过和评论区大佬的交流,准备研读一下JEDEC标准,主要是加深自己对banking和访存加速的理解(对应本文的第五节,主要问题集中在提出banking是为了隐藏row缺失造成的损失还是为了隐藏CPU和

[转帖]Linux性能调优,看这一篇就够了

调优是一件因地制宜的事情,生搬硬套可能适得其反。互联网企业,生产环境大多数都是linux操作系统,Linux服务器性能调优,是一个重要的课题。linux有成百上千的参数可以调整,对这些参数的理解,可以帮助我们更好的理解服务器工作的原理,帮助更快的找到瓶颈和解决问题。 为了帮助理解,先上一个Linux

[转帖]JVM系列之:GC调优基础以及初识jstat命令

本文为《深入学习 JVM 系列》第二十二篇文章 影响垃圾收集性能有三个主要的属性,垃圾收集调优又有三个基本原则,以及垃圾收集调优时需要采集的信息。如果想要对垃圾收集进行调优,则需要根据实际场景对不同属性做出取舍,理解调优的原则以及收集什么信息。 性能属性 吞吐量 吞吐量是评价垃圾收集器能力的重要指标

[转帖]nginx调优参数整理总结

nginx性能优化考虑点 当我需要进行性能优化时,说明我们服务器无法满足日益增长的业务。性能优化是一个比较大的课题,需要从以下几个方面进行探讨: 当前系统结构瓶颈了解业务模式性能与安全 当前系统结构瓶颈 首先需要了解的是当前系统瓶颈,用的是什么,跑的是什么业务。里面的服务是什么样子,每个服务最大支持