千家信息网

Linux的平均负载是什么

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"Linux的平均负载是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux的平均负载是什么"吧!什么是平均负载平均负载可以
千家信息网最后更新 2025年02月23日Linux的平均负载是什么

这篇文章主要讲解了"Linux的平均负载是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux的平均负载是什么"吧!

什么是平均负载

平均负载可以对于我们来说及熟悉又陌生,但我们问平均负载是什么,但大部分人都回答说平均负载不就是单位时间内CPU使用率吗?其实并不是这样的,如果可以的话,可以 man uptime 来了解一下平均负载的详细信息。

简单的说平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是说平均活跃进程数,它和CPU使用率并没有直接关系。这里解释一下可运行状态和不可中断这两个词。

可运行状态:

指正在使用CPU或者正在等待CPU的进程,我们使用ps命令查看处于R状态的进程

不可中断状态:

进程则是正处于内核态关键流程中的进程,并且这些流程是不可中断的。例如:常见的等待硬件设备I/O的响应,也就是我们在ps命令查看处于D状态的进程

比如,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程中断或者打断的,这个时候的进程处于不可中断状态,如果此时的进程被打断了,就容易出现磁盘数据和进程数据不一致的问题。

所以,不可中断状态实际上是系统进程和硬件设备的一种保护机制。

因此,你可以简单理解为,平均负载就是平均活跃进程数。平均活跃进程数,直观上的理解就是单位时间内的活跃进程数,但它实际上是活跃进程数的指数衰减平均值。既然是平均活跃进程数,那么理想状态,就是每个CPU上都刚好运行着一个进程,这样每个CPU都会得到充分的利用。例如平均负载为2时,意味着什么呢?

在只有2个CPU的系统上,意味着所有的CPU刚好被完全占用

在4个CPU的系统上,意味着CPU有50%的空闲

而在只有1个CPU的系统上,则意味着有一半的进程竞争不到CPU

平均负载和CPU使用率

现实工作中,我们经常容易把平均负载和CPU使用率混淆,所以在这里,我也做一个分区。

可能你会疑惑,既然平均负载代表的是活跃进程数,那平均负载高了,不就意味着CPU使用率高吗?

我们还是要回到平均负载的含义上来,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数,所以,它不仅包括了正常使用CPU的进程,还包括了等待CPU和等待I/O的进程。

而CPU使用率,是单位时间内CPU的繁忙情况的统计,跟平均负载并不一定完全对应,例如:

CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的

I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高

大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率会很高

平均负载案例

这里我们需要安装几个工具sysstat、stress、stress-ng

这里Centos的sysstat版本会老一点,最好升级到最新版本。手动rpm安装或者源码安装

场景一、CPU密集型

1、运行一个stress命令,模拟一个CPU使用率100%场景

$ stress --cpu 1 --timeout 600

2、开启第二个终端,uptime查看平均负载的变化情况

$ watch -d uptime

09:40:35 up 80 days, 18:41, 2 users, load average: 1.62, 1.10, 0.87 3、开启第三个终端,mpstat 查看CPU使用率的变化情况

$ mpstat -P ALL 5 2010:06:37 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle10:06:42 AM all 31.50 0.00 0.35 0.00 0.00 0.00 0.00 0.00 0.00 68.1510:06:42 AM 0 1.20 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 98.0010:06:42 AM 1 7.21 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 92.3810:06:42 AM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0010:06:42 AM 3 17.43 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 82.36# -P ALL 表示监控所有CPU,后面数字5 表示间隔5秒输出一次数据

从第二个终端可以看到,1分钟平均负载增加到1.62,从第三个终端我们可以看到有一个CPU使用率100%,但iowait为0,这说明平均负载的升高正式由CPU使用率为100%

那我们查看是那个进程导致了CPU使用率为100%呢?我们可以使用pidstat来查看:

#每5秒输出一次数据

$ pidstat -u 5 110:08:41 AM UID PID %usr %system %guest %wait %CPU CPU Command10:08:46 AM 0 1 0.20 0.00 0.00 0.00 0.20 0 systemd10:08:46 AM 0 599 0.00 1.00 0.00 0.20 1.00 0 systemd-journal10:08:46 AM 0 1043 0.60 0.00 0.00 0.00 0.60 0 rsyslogd10:08:46 AM 0 6863 100.00 0.00 0.00 0.00 100.00 3 stress10:08:46 AM 0 7303 0.20 0.20 0.00 0.00 0.40 2 pidstat

从这里我们可以看到是stress这个进程导致的。

场景二、I/O密集型进程

1、我们使用stress-ng命令,但这次模拟I/O压力,既不停执行sync:

#--hdd表示读写临时文件#-i 生成几个worker循环调用sync()产生io压力$ stress-ng -i 4 --hdd 1 --timeout 600

2、开启第二个终端运行uptime查看平均负载情况

$ watch -d uptime10:30:57 up 98 days, 19:39, 3 users, load average: 1.71, 0.75, 0.69

3、开启第三个终端运行mpstat查看CPU使用率

$ mpstat -P ALL 5 2010:32:09 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle10:32:14 AM all 6.80 0.00 33.75 26.16 0.00 0.39 0.00 0.00 0.00 32.9010:32:14 AM 0 4.03 0.00 69.57 19.91 0.00 0.00 0.00 0.00 0.00 6.4910:32:14 AM 1 25.32 0.00 9.49 0.00 0.00 0.95 0.00 0.00 0.00 64.2410:32:14 AM 2 0.24 0.00 10.87 63.04 0.00 0.48 0.00 0.00 0.00 25.3610:32:14 AM 3 1.42 0.00 36.93 14.20 0.00 0.28 0.00 0.00 0.00 47.16

从这里可以看到,1分钟平均负载会慢慢增加到1.71,其中一个CPU的系统CPU使用率升到63.04。这说明,平均负载的升高是由于iowait升高。

那么我们到底是哪个进程导致的呢?我们使用pidstat来查看:

$ pidstat -u 5 1Average: UID PID %usr %system %guest %wait %CPU CPU CommandAverage: 0 1 0.00 0.19 0.00 0.00 0.19 - systemdAverage: 0 10 0.00 0.19 0.00 1.56 0.19 - rcu_schedAverage: 0 599 0.58 1.75 0.00 0.39 2.33 - systemd-journalAverage: 0 1043 0.19 0.19 0.00 0.00 0.39 - rsyslogdAverage: 0 6934 0.00 1.56 0.00 1.17 1.56 - kworker/2:0-events_power_efficientAverage: 0 7383 0.00 0.39 0.00 0.78 0.39 - kworker/1:0-events_power_efficientAverage: 0 9411 0.00 0.19 0.00 0.58 0.19 - kworker/0:0-eventsAverage: 0 9662 0.00 97.67 0.00 0.19 97.67 - kworker/u8:0+flush-253:0Average: 0 10793 0.00 0.97 0.00 1.56 0.97 - kworker/3:2-mm_percpu_wqAverage: 0 11062 0.00 21.79 0.00 0.19 21.79 - stress-ng-hddAverage: 0 11063 0.00 1.95 0.00 1.36 1.95 - stress-ng-ioAverage: 0 11064 0.00 2.72 0.00 0.39 2.72 - stress-ng-ioAverage: 0 11065 0.00 1.36 0.00 1.75 1.36 - stress-ng-ioAverage: 0 11066 0.00 2.72 0.00 0.58 2.72 - stress-ng-io

可以发现是stress-ng导致的

场景三、大量进程的场景

当系统中运行进程超出CPU运行能力时,就会出现等待CPU的进程。

比如:我们使用stress,但这次模拟8个进程:

$ stress -c 8 --timeout 600

我们的系统只有4颗CPU,这时候要运行8个进程,是明显不够的,系统的CPU后严重过载,这时候负载值达到了4点多:

$ uptime10:56:22 up 98 days, 20:05, 3 users, load average: 4.52, 2.82, 2.67

接着我们运行pidstat来查看一下进程的情况:

$ pidstat -u 5 1Linux 5.0.5-1.el7.elrepo.x86_64 (k8s-m1) 07/11/2019 _x86_64_ (4 CPU)10:57:33 AM UID PID %usr %system %guest %wait %CPU CPU Command10:57:38 AM 0 1 0.20 0.00 0.00 0.00 0.20 1 systemd10:57:38 AM 0 599 0.00 0.99 0.00 0.20 0.99 2 systemd-journal10:57:38 AM 0 1043 0.60 0.20 0.00 0.00 0.79 1 rsyslogd10:57:38 AM 0 12927 51.59 0.00 0.00 48.21 51.59 0 stress10:57:38 AM 0 12928 44.64 0.00 0.00 54.96 44.64 0 stress10:57:38 AM 0 12929 45.44 0.00 0.00 54.56 45.44 2 stress10:57:38 AM 0 12930 45.44 0.00 0.00 54.37 45.44 2 stress10:57:38 AM 0 12931 51.59 0.00 0.00 48.21 51.59 3 stress10:57:38 AM 0 12932 48.41 0.00 0.00 51.19 48.41 1 stress10:57:38 AM 0 12933 45.24 0.00 0.00 54.37 45.24 3 stress10:57:38 AM 0 12934 48.81 0.00 0.00 50.99 48.81 1 stress10:57:38 AM 0 13083 0.00 0.40 0.00 0.20 0.40 0 pidstat

可以看出,8个进程抢占4颗CPU,每个进程等到CPU时间(%wait)高达50%,这些都超出CPU计算能力的进程,最终导致CPU过载。

感谢各位的阅读,以上就是"Linux的平均负载是什么"的内容了,经过本文的学习后,相信大家对Linux的平均负载是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

进程 使用率 状态 运行 系统 情况 数据 时间 终端 单位 场景 就是 意味 命令 密集型 一致 三个 只有 磁盘 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全对软件工程的认识 移动在汉单位网络技术岗 花生棒 vpn服务器 数据库程序代码怎么写 国内比较流行的服务器 重庆量化积分管理软件开发 远程连接服务器工具 临渭区第七届网络安全周 服务器人员需要做什么 哈利波特手游有什么样的服务器 2020年国土变更数据库操作 戴姆勒软件开发部门上机测试 数据库中储的是数据吗 android数据库多大 csgo被aug服务器检测自瞄 网络安全授课ppt模板 浙江宁波浪潮高密度服务器云空间 数据库如何查找共享 网络安全试卷1答案 wcf可否分页读取数据库 基站属于服务器吗 如何查服务器硬盘序列号 如何查看服务器磁盘损坏 湘潭正规软件开发哪家好 软件开发买什么笔记本电脑好 浙江橙树网络技术有限公司子公司 网络安全进校园活动形式 火影服务器崩溃9月28日 gis软件开发测绘能干吗 广州紫藤网络技术有限公司
0