搜索
首页运维linux运维Linux平均负载Load问题的详解
Linux平均负载Load问题的详解Mar 12, 2019 pm 05:24 PM
linux

本篇文章给大家带来的内容是关于Linux平均负载Load问题的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

有一回面试,面试官提了一个问题,cpu 使用率不高,但是 Load (平均负载) 很高,你如何查找问题?

当时我不明白 Load 的意思,面试官解释说这个指标反映不可中断状态的进程比较多。我遂根据过往后端开发经验,回答可能系统中 io 阻塞比较多,多发于网络 io 问题,用命令 netstat -tnp 看看 tcp 连接中 time_wait 状态多不多...

我知道我的回答很片面,事后复习,做笔记。

什么是平均负载

熟悉 Linux 者知道,使用 top uptime 命令可以查看 load average 指标。

使用 man uptime 查看 Load average 解释:

System load averages is the average number of processes that are either in a runnable or uninterruptable state.   A  process  in  a  runnable state  is  either using the CPU or waiting to use the CPU.  A process in uninterruptable state is waiting for some I/O access, eg waiting for disk.  The averages are taken over the three time intervals.  Load averages are not normalized for the number of CPUs in a system, so a  load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.

理解关键地方,平均负载是指,在单位时间内,系统中处于 可运行状态 与 不可中断状态 的平均进程数,简称平均活跃进程数。值得注意的是,它与 CPU 使用率没有直接关系

使用命令 ps aux 可以查看进程的状态 stat,如本文要注意的:

R 状态,可运行状态 ( Running / Runnable ),正在使用 CPU 或者正在等待 CPU 的进程D 状态,不可中断状态( Uninterruptitle Sleep, 又称 Disk Sleep ),正处于内核态关键流程中的进程,并且是不可中断的。

D 状态为何不可打断呢,举个例子,系统调用起硬件设备的 I/O 响应,为了保证数据的一致性,在磁盘设备返回数据前,它是不能倍其他进程或者中断打断的,如果被打断,就容易造成磁盘数据与进程数据不一致的问题。于是,不可中断(D)状态是系统对进程与硬件设备的一种保护机制。

平均活跃进程数,严格意义上,它是活跃进程数的指数衰减平均值(某个量的下降速度和它的值成比例)。通常情况下,理解为单位时间上的活跃进程数即可。

CPU 利用率与平衡负载

从 CPU 角度来说,Load average 只是反映单位时间内占用 CPU 的进程数量,而 CPU 利用率与进程数量没有直接关系,我们可以使用命令 top vmstat 查看 CPU 的利用率,有以下几个指标:

%us:表示用户空间程序的cpu使用率(没有通过nice调度)%sy:表示系统空间的cpu使用率,主要是内核程序。%ni:表示用户空间且通过nice调度过的程序的cpu使用率。%id:空闲cpu%wa:cpu运行时在等待io的时间%hi:cpu处理硬中断的数量%si:cpu处理软中断的数量%st:被虚拟机偷走的cpu

如何衡量合理的平均负载

一般来讲,Load average 低于 CPU 数量的话,机器性能满足服务需求,超出一些也没关系,Load average 不直接代表 CPU 利用率,可能是 io 阻塞比较多。当 Load average 高于 CPU 数量的 70%,就可能导致进程响应变慢,进而影响服务的正常功能。

从历史变化量来看

一般来讲,top uptime 提供 load average 三个时间点的指标,分别是:1分钟、5分钟、15分钟。这反映了系统最近的状态变化趋势。在实际生产环境中,我们需要做长期的监控记录。如果有异常的数值变化,比如平均负载数是CPU的两倍,需要分析调查问题。

从平衡负载与 CPU 利用率 这两类指标综合分析

两类指标的不同,组合出以下几种可能情况:

Load average 高,CPU use 高,要么运行了 CPU 密集型进程(线程),要么有大量等待 CPU 的进程(线程)调度Load average 高,CPU use 底,运行了 IO 密集型进程两者都比较低,正常Load average 底,CPU use 高,这是不存在的

模拟案例与工具

我们如何分析平衡负载与 CPU 利用率这两类指标不同组合的案例,寻找造成指标变化的来源?

以下环境为 Linux Arch 4.19 / 4 CPU / 8G Memory

工具列表

stress 系统压力测试工具

sysstat 性能分析工具包:

mpstat 多核 CPU 分析性能工具,mp 的意思是 multi processors (多处理器)pidstat 进程性能分析工具,pid 意为进程 ID。它用于查看进程的 CPU、内存、I/O以及上下文切换等指标

模拟场景

使用 stress 可以模拟以下场景

CPU密集型进程

# 模拟一个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 1 --timeout 600

IO 密集型进程

stress 的 -i 选项,spawn N workers spinning on sync()

# 模拟一个进程不停的执行 sync
stress -i 1 --timeout 600
大量进程的场景
# 模拟16个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 16 --timeout 600

工具指标

mpstat -P ALL 5 监控所有 CPU,每隔5秒输出一组数据,注意指标 %usr 使用率,%iowait IO 阻塞时间,从这可以判断是 CPU 密集型还是 IO 密集型pidstat -u 5 1 统计间隔5秒内,使用过 CPU 的进程的数据,注意指标 %usr 使用率,%wait 等待使用 CPU 的时间,从这可以判断是否进程(线程)过多

以上是Linux平均负载Load问题的详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除
什么是linux设备节点什么是linux设备节点Apr 18, 2022 pm 08:10 PM

linux设备节点是应用程序和设备驱动程序沟通的一个桥梁;设备节点被创建在“/dev”,是连接内核与用户层的枢纽,相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。设备节点使用户可以与内核进行硬件的沟通,读写设备以及其他的操作。

Linux中open和fopen的区别有哪些Linux中open和fopen的区别有哪些Apr 29, 2022 pm 06:57 PM

区别:1、open是UNIX系统调用函数,而fopen是ANSIC标准中的C语言库函数;2、open的移植性没fopen好;3、fopen只能操纵普通正规文件,而open可以操作普通文件、网络套接字等;4、open无缓冲,fopen有缓冲。

linux怎么判断pcre是否安装linux怎么判断pcre是否安装May 09, 2022 pm 04:14 PM

在linux中,可以利用“rpm -qa pcre”命令判断pcre是否安装;rpm命令专门用于管理各项套件,使用该命令后,若结果中出现pcre的版本信息,则表示pcre已经安装,若没有出现版本信息,则表示没有安装pcre。

linux中什么叫端口映射linux中什么叫端口映射May 09, 2022 pm 01:49 PM

端口映射又称端口转发,是指将外部主机的IP地址的端口映射到Intranet中的一台计算机,当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上;可以通过使用动态或固定的公共网络IP路由ADSL宽带路由器来实现。

linux中eof是什么linux中eof是什么May 07, 2022 pm 04:26 PM

在linux中,eof是自定义终止符,是“END Of File”的缩写;因为是自定义的终止符,所以eof就不是固定的,可以随意的设置别名,linux中按“ctrl+d”就代表eof,eof一般会配合cat命令用于多行文本输出,指文件末尾。

linux怎么查询mac地址linux怎么查询mac地址Apr 24, 2022 pm 08:01 PM

linux查询mac地址的方法:1、打开系统,在桌面中点击鼠标右键,选择“打开终端”;2、在终端中,执行“ifconfig”命令,查看输出结果,在输出信息第四行中紧跟“ether”单词后的字符串就是mac地址。

手机远程linux工具有哪些手机远程linux工具有哪些Apr 29, 2022 pm 05:30 PM

手机远程linux工具有:1、JuiceSSH,是一款功能强大的安卓SSH客户端应用,可直接对linux服务进行管理;2、Termius,可以利用手机来连接Linux服务器;3、Termux,一个强大的远程终端工具;4、向日葵远程控制等等。

linux中lsb是什么意思linux中lsb是什么意思May 07, 2022 pm 05:08 PM

linux中,lsb是linux标准基础的意思,是“Linux Standards Base”的缩写,是linux标准化领域中的标准;lsb制定了应用程序与运行环境之间的二进制接口,保证了linux发行版与linux应用程序之间的良好结合。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),