[转帖]理解平均负载

理解,平均,负载 · 浏览次数 : 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繁忙情况的统计,跟平均负载并不一定完全对应。 有诸多方式监测系统平

[转帖]libvirt理解总结

一、libvit总结 libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。 二、libvirt特点 •libvirt是用于管理虚拟化平

[转帖]内存随机访问也比顺序慢,带你深入理解内存IO过程

https://zhuanlan.zhihu.com/p/86513504 平时大家都知道内存访问很快,今天来让我们来思考两个问题: 问题1: 内存访问一次延时到底是多少?你是否会进行大概的估算? 例如笔者的内存条的Speed显示是1066MHz,那是否可以推算出内存IO延时是1s/1066MHz=

[转帖]谈谈对K8S CNI、CRI和CSI插件的理解

K8S的设计初衷就是支持可插拔架构,解决PaaS平台不好用、不能用、需要定制化等问题,K8S集成了插件、附加组件、服务和接口来扩展平台的核心功能。附加组件被定义为与环境的其他部分无缝集成的组件,提供类似本机的特性,并扩展集群管理员可用的组件,扩展还可以用于添加自定义软硬件的支持;服务和接口提供了看似

[转帖]DISK BUSY的理解误区

前几天有个客户的系统存在性能问题,从AWR报告上我们看到是CPU使用率过高,同时GLOBAL CACHE方面的争用比较严重。系统中的烂SQL很多,数据库中很多几十GB的大表也没有分区,总之问题很多。不过这套系统使用了闪存盘,虽然IOPS高达3-4万,不过磁盘IO的性能还可以。USER IO平均值为2

[转帖]Intel关NUMA的内存编址

https://zhuanlan.zhihu.com/p/454928730 最近在做某国产化平台相关的适配, 不管NUMA的性能和实现方式都和Intel有较大不同, 作为比较对象, 理解Intel的NUMA实现是很有必要的. 虽然从软件角度, 打开NUMA会带来额外的复杂度, 但是从硬件角度, 关

[转帖]RabbitMQ学习笔记01:初识与安装

https://www.cnblogs.com/alongdidi/p/rabbitmq_overview.html 原作者写的真好. 前言 本人是一名运维工程师,在此公司接触到 RabbitMQ ,平时针对此软件的工作内容就是集群的安装以及配置监控等,对其的理解也仅仅是知道其是一种消息队列的服务,

[转帖]Win11激活怎么跳过联网?Win11跳过联网激活图文教程

https://www.zmtc.com/pc/3876.html 从Windows 11开始,微软要求用户需先联网激活系统才能进入桌面,这导致没有网络环的用户就无法完成激活步骤。此外,很多电商平台销售的笔记本,一旦联网激活过,就不再提供7天无理由退货。所以很多用户都希望Win11能跳过联网激活,今

[转帖]什么是DPDK?DPDK的原理及学习学习路线总结

https://zhuanlan.zhihu.com/p/397919872 一、什么是DPDK 对于用户来说,它可能是一个性能出色的包数据处 理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创 新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。 DPDK用软件的方式在通用多