首页 > 其他分享 >如何了解系统的负载情况

如何了解系统的负载情况

时间:2023-03-10 17:35:41浏览次数:44  
标签:负载 -- 0.00 系统 stress 了解 进程 CPU

1、如何了解系统的负载情况?

uptime

回车之后,会在命令窗口输出以下信息:
image

接下里解读上面的信息的含义:

15:54:23 //系统当前时间

up 3 days //系统已运行时间

3 users //登录用户数

load average: 0.00, 0.01, 0.05 //表示过去1分钟,5分钟,15分钟的平均负载数。这三个参数构成了系统负载趋势图。

2、什么是平均负载?
它是最常见也是最重要的系统指标。简单来说,平均负载时是单位时间内,系统处于可运行及不可中断状态的平均进程数,也就是平均活跃进程数。所以,它不仅包括了正在使用CPU的进程,还包括了等待CPU和等待I/O的进程。和CPU使用率没有直接关系。

什么是可运行状态的进程?

是指正在使用CPU或者正在等待CPU的进程。也就是我们用ps命令看到处于R状态的进程。

什么是不可中断状态的进程?

是指哪些处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的I/O响应,也就说我们用ps看到处于D状态的进程。这其实是系统对进程和硬件设备的一种保护机制。

3、平均负载为多少时合理?
平均负载最理想的情况是等于CPU个数。

查看cpu数

grep 'model name' /proc/cpuinfo

image

wc命令用法
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

-c 统计字节数。

-l 统计行数。

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

-help 显示帮助信息

--version 显示版本信息
wc用法实例: 统计cpu个数

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

当平均负载高于CPU数量70%的时候,就要排查负载高的原因了。
4、平均负载与CPU使用率区分
CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的。
I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高
大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也不会较高。
5、平均负载案例分析
工具介绍
stress 是一个 Linux系统压力测试工具,用作异常进程模拟平均负载升高的场景。

stress参数说明:

-? 显示帮助信息
-v 显示版本号
-q 不显示运行信息
-n,--dry-run 显示已经完成的指令执行情况
-t --timeout N 指定运行N秒后停止
--backoff N 等待N微妙后开始运行
-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根
-i --io 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
--vm-bytes B 指定malloc时内存的字节数 (默认256MB)
--vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器
-d --hadd n 产生n个执行write和unlink函数的进程
--hadd-bytes B 指定写的字节数,默认是1GB
--hadd-noclean 不要将写入随机ASCII数据的文件Unlink

时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G
sysstat 包含了常用的Linux性能工具,用来监控和分析系统的性能。

mpstat 是一个常用的多核 CPU性能分析工具,用来实时查看每个CPU 的性能指标,以及所有 CPU 的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O 以及上下文切换等性能指标。
常用的参数:

-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数
centos环境安装这两个工具
yum install stress

方式1:(不推荐,因为不能安装最新的版本,会导致没有%wait指标项)

yum install sysstat

方式2:使用rpm

wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm

rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
方式1安装后显示的sysstat版本:
image

方式2安装后显示的sysstat版本:
image

场景1:CPU密集型进程
1.首先,模拟一个CPU使用率100%的场景。在第一个终端输入以下命令

stress --cpu 1 --timeout 600
2.接着在第二个终端输入uptime命令查看平均负载的变化情况。

watch -d uptime
image

wacht可以帮你检测一个命令的运行结果,省得你一遍遍手动运行。

命令参数:

-n或--interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。

-d或--differences 用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。

-t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。

3.最后,在第三个终端运行mpstat查看CPU使用率的变化情况。

-P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据

mpstat -P ALL 5 1
image

4.查看哪个进程导致CPU使用率为100%

间隔5s输出一组数据

pidstat -u 5 1
终端2的平均负载慢慢超过1,从终端3可以看到CPU使用率接近100%,而它的iowait为0。这说明,平均负载的升高正是由于CPU的使用率为100%

场景2:I/O密集型进程
1.首先,模拟I/O压力,及不停地执行sync:

-i = --io

stress -i 1 --timout 600
2.在第二个终端执行uptime查看平均负载的变化情况:

wathc -d uptime
image

3.在第三个终端执行mpstat查看CPU使用率情况:

mpstat [选项] [<时间间隔>] [<次数>]可对比下mpstat -P ALL 5 1

mpstat -P ALL 5

Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 27.72 0.00 18.66 6.99 0.00 0.20 0.00 0.00 0.00 46.43
Average: 0 3.05 0.00 50.10 18.33 0.00 0.20 0.00 0.00 0.00 28.31
Average: 1 3.66 0.00 19.72 9.76 0.00 0.20 0.00 0.00 0.00 66.67
Average: 2 44.05 0.00 3.17 0.00 0.00 0.20 0.00 0.00 0.00 52.58
Average: 3 59.08 0.00 2.40 0.20 0.00 0.20 0.00 0.00 0.00 38.12
我们不难发现,平均负载会慢慢加到2.17,其中一个CPU的使用率达到
50.10,而iowait达到18.33。这说明平均负载的升高是由于大量I/O进程导致的。

4.查看是哪个进程导致iowait如何之高?

pidstat -u 5 1

Average: UID PID %usr %system %guest %wait %CPU CPU Command
Average: 0 9 0.00 0.20 0.00 0.80 0.20 - rcu_sched
Average: 0 23721 0.00 62.75 0.00 1.20 62.75 - stress
场景3:大量进程
当系统运行的进程超过CPU运行能力时,就会出现等待CPU的进程

1.在4个CPU机器,模拟8个进程

stress -c 8 --timout 600
2.因为只有4个CPU,少于8个进程,系统会处于过载状态。如下图,已经达到了12.24

watch -d uptime
image

3、接着用pidstat来看一下进程情况:

间隔5s输出一组数据,之后不再输出,如果想持续输出,则把1去掉

pidstat -u 5 1

09:54:54 AM UID PID %usr %system %guest %wait %CPU CPU Command
09:54:59 AM 0 15046 32.80 0.00 0.00 67.20 32.80 2 stress
09:54:59 AM 0 15047 38.80 0.00 0.00 61.20 38.80 1 stress
09:54:59 AM 0 15048 32.00 0.00 0.00 68.00 32.00 0 stress
09:54:59 AM 0 15049 51.40 0.00 0.00 48.80 51.40 2 stress
09:54:59 AM 0 15050 39.40 0.20 0.00 60.40 39.60 3 stress
09:54:59 AM 0 15051 27.00 0.00 0.00 72.40 27.00 1 stress
09:54:59 AM 0 15052 31.40 0.00 0.00 69.00 31.40 2 stress
09:54:59 AM 0 15053 31.80 0.00 0.00 67.80 31.80 3 stress
可以看出,8个进程在抢占4个CPU,每个进程等待CPU时间高达72.4%(看wait指标)。这些超出CPU计算能力的进程,最终导致CPU过载。

6、实验总结
导致CPU平均负载过高的原因有以下几点:

平均负载高有可能是CPU密集型进程导致;
平均负载高不一定是CPU使用率高了,还有可能是I/O更繁忙了;
当发现平均负载高了,可通过mpstat实时监控CPU,通过pidstat实时监控当前运行的进程。

标签:负载,--,0.00,系统,stress,了解,进程,CPU
From: https://www.cnblogs.com/kaka-qiqi/p/17204149.html

相关文章

  • 该如何选择适合企业发展的邮件系统?
    很多人将邮件服务器单纯的理解为帮助企业收发邮件,其实邮箱类服务器不但可以收发邮件,还能够通过更多广受欢迎的功能实现更多企业管理的需求。如邮箱类服务器拥有邮件整理的......
  • LVS+keepalived+nginx+redis+mysql集群负载
    背景:梳理知识体系,关于架构,有做过一个项目,是关于双机热备高可用的方案。两台机器相对独立,两套一模一样且独立运行的系统,客户要求实现高可用。经过和架构部的商讨,通过lvs+ke......
  • ASP.NET Core - 配置系统之配置提供程序
    3.配置提供程序上面提到,通过IConfigurationBuilder的实现类对象,我们可以自由地往配置系统中添加不同的配置提供程序,从而获取不同来源的配置信息。.NETCore中,微软提供......
  • Jmeter - 性能监控系统搭建
    性能监控系统InfluxDB存储压力测试结果,go语言开发,8086端口#新建容器网络$dockernetworkcreategrafana#运行容器$cd~/volumes$dockerrun-d--name=infl......
  • UF获得系统时间UF_ask_system_info(&info)
    voidPartEdit::formatThedate()//获得系统时间{ //获得日期 UF_initialize(); UF_system_info_tinfo; UF_ask_system_info(&info); //格式化日期 stringformatdate=......
  • 永久免费开源在线客服系统软件推荐收藏
        TTKEFU是一款网页即时发起聊天的客服系统,基于网页、微信公众平台、小程序、微信商城与客服间建立沟通的一种传统意义上的交互在线客服系统,功能强大,品质过硬,口碑......
  • nodeBB 论坛系统安装配置
    nodeBB开源论坛系统安装配置参考官方文档:https://docs.nodebb.org/installing/os/ubuntu/一、安装1.1准备Ubuntu操作系统安装Ubuntu20.044GB内存硬盘300GB......
  • Ubuntu Win11双系统安装
    1.下载Ubuntu镜像这里推荐下载清华源的Ubuntu镜像,国外官网下载太慢。清华大学开源软件镜像站。进入18.04(推荐)版本,下载ubuntu-18.04.6-desktop-amd64.iso镜像2.制作启动......
  • 电脑输入法仅桌面,登录系统后不能切换输入法,只能输出英文,不打出汉字
    情况描述:输入法在锁屏界面可以切换输入法,登录进去电脑后没办法切换输入法,而且没办法打出汉字。输入法显示仅桌面定位搜狗输入法路径我这里的搜狗输入法安装路径C:\ProgramF......
  • 了解以下RFID(关于我Android端竞赛方面的)
    射频识别(RFID)是RadioFrequencyIdentification的缩写。无线射频识别即射频识别技术(RadioFrequencyIdentification,RFID),是自动识别技术的一种,通过无线射频方式进行非接......