linux 性能需求,Linux性能分析-平均负载

平均负载的理解

一般系统变慢时,我们会使用top或uptime命令来查看下系统的负载情况

[root@localhost shell]# uptime

13:51:08 up 5 days, 21:50, 3 users, load average: 0.00, 0.02, 0.05

load average:0.00,0.02,0.05 分别代表了1min/5min/15min的平均负载,那么平均负载到底是什么意思呢?

使用man uptime查看下详细的说明

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.

可以看到,平均负载统计的是 处于runnable or uninterruptable状态的进程数量,并且这个数据需要和系统的cpu数量进行比较才有意义。

场景模拟

平均负载,计算的是进程对系统资源的需求程度,包括CPU和IO,所以平均负载高,CPU使用率不一定高。

下面模拟三种场景,这三种场景的平均负载都很高,但是分别对应的CPU密集型进程、IO密集型进程、大量等待CPU调度的进程组。

首先安装stress,stress是一个压力测试工具。

yum install -y epel-release

yum install -y stress

第一种:CPU密集型

用stress执行下面的命令,模拟占用一个核

stress --cpu 1 --timeout 600

在新开的终端中查看不同核的占用情况,5代表等待5秒,20代表一共打印20次数据

可以看到第三个核的CPU占用率是100%

[root@localhost shell]# mpstat -P ALL 5 20

Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2020年07月07日 _x86_64_(4 CPU)

14时11分49秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

14时11分54秒 all 25.29 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 74.66

14时11分54秒 0 0.60 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.20

14时11分54秒 1 14.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 85.80

14时11分54秒 2 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

14时11分54秒 3 86.23 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 13.57

14时11分54秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

14时11分59秒 all 25.23 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 74.72

14时11分59秒 0 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

14时11分59秒 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

14时11分59秒 2 0.40 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.40

14时11分59秒 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

在另一个终端中,打印进程对CPU的占用情。可以看到pid为6325的stress的进程占用cpu达到100%

[root@localhost shell]# pidstat -u 5 10

Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2020年07月07日 _x86_64_ (4 CPU)

14时13分11秒 UID PID %usr %system %guest %CPU CPU Command

14时13分16秒 0 1891 0.40 0.00 0.00 0.40 3 X

14时13分16秒 0 2581 0.60 0.20 0.00 0.79 3 gnome-shell

14时13分16秒 0 2604 0.00 0.20 0.00 0.20 0 ibus-daemon

14时13分16秒 0 2668 0.00 0.20 0.00 0.20 0 goa-identity-se

14时13分16秒 0 2847 0.20 0.00 0.00 0.20 3 vmtoolsd

14时13分16秒 0 6325 99.40 0.00 0.00 99.40 1 stress

14时13分16秒 0 6487 0.00 0.20 0.00 0.20 3 pidstat

14时13分16秒 UID PID %usr %system %guest %CPU CPU Command

14时13分21秒 0 1891 0.40 0.00 0.00 0.40 3 X

14时13分21秒 0 2581 0.80 0.00 0.00 0.80 3 gnome-shell

14时13分21秒 0 6325 100.00 0.00 0.00 100.00 1 stress

14时13分21秒 0 6487 0.20 0.20 0.00 0.40 3 pidstat

14时13分21秒 UID PID %usr %system %guest %CPU CPU Command

14时13分26秒 0 500 0.00 0.20 0.00 0.20 0 xfsaild/dm-0

14时13分26秒 0 1891 0.60 0.40 0.00 1.00 1 X

14时13分26秒 0 2581 1.00 0.40 0.00 1.40 1 gnome-shell

14时13分26秒 0 6206 0.20 0.20 0.00 0.40 1 gnome-terminal-

14时13分26秒 0 6325 100.00 0.00 0.00 100.00 2 stress

14时13分26秒 0 6487 0.00 0.20 0.00 0.20 3 pidstat

第二种IO密集型

安装stress-ng

yum install stress-ng

执行下面的命令,模拟IO密集

stress-ng -i 1 --hdd 1 --timeout 600

查看mpstat,可以看到iowait%明显提高

[root@localhost shell]# mpstat -P ALL 5 20

Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2020年07月07日 _x86_64_ (4 CPU)

14时30分20秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

14时30分25秒 all 0.81 0.00 12.68 37.67 0.00 1.83 0.00 0.00 0.00 47.02

14时30分25秒 0 0.22 0.00 15.08 32.59 0.00 1.11 0.00 0.00 0.00 51.00

14时30分25秒 1 1.65 0.00 22.63 37.65 0.00 0.41 0.00 0.00 0.00 37.65

14时30分25秒 2 0.88 0.00 8.10 43.98 0.00 3.06 0.00 0.00 0.00 43.98

14时30分25秒 3 0.00 0.00 4.75 36.29 0.00 2.81 0.00 0.00 0.00 56.16

查看哪个应用的IO占比较高,可以看到stress的应用,对磁盘的写入很大

[root@localhost shell]# pidstat -d 5 10 | grep "stress"

UID PID kB_rd/s kB_wr/s kB_ccwr/s Command

14时32分34秒 0 6730 0.00 549011.95 143466.14 stress-ng-hdd

14时32分34秒 0 6731 0.00 0.00 13406.37 stress-ng-io

第三种大量进程场景

执行下面命令,模拟16个进程执行

stress -c 16 --timeout 600

查看uptime,可以看到最近一分钟的平均负载显著升高

[root@localhost shell]# uptime

14:38:53 up 5 days, 22:38, 4 users, load average: 12.05, 5.38, 2.74

查看进程的cpu占用,可以看到stress的进程占用cpu为20左右,大量的stress进程在竞争cpu

[root@localhost shell]# pidstat -u 5 5

Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 2020年07月07日 _x86_64_ (4 CPU)

14时38分26秒 UID PID %usr %system %guest %CPU CPU Command

14时38分31秒 0 1891 0.00 0.18 0.00 0.18 2 X

14时38分31秒 0 2581 0.18 0.18 0.00 0.37 1 gnome-shell

14时38分31秒 0 7225 23.29 0.00 0.00 23.29 3 stress

14时38分31秒 0 7226 23.48 0.00 0.00 23.48 0 stress

14时38分31秒 0 7227 23.11 0.00 0.00 23.11 3 stress

14时38分31秒 0 7228 23.29 0.00 0.00 23.29 0 stress

14时38分31秒 0 7229 23.29 0.00 0.00 23.29 3 stress

14时38分31秒 0 7230 23.11 0.00 0.00 23.11 2 stress

14时38分31秒 0 7231 23.11 0.00 0.00 23.11 1 stress

14时38分31秒 0 7232 23.11 0.00 0.00 23.11 0 stress

14时38分31秒 0 7233 23.29 0.00 0.00 23.29 1 stress

14时38分31秒 0 7234 23.11 0.00 0.00 23.11 2 stress

14时38分31秒 0 7235 23.29 0.00 0.00 23.29 1 stress

14时38分31秒 0 7236 23.48 0.00 0.00 23.48 2 stress

14时38分31秒 0 7237 23.29 0.00 0.00 23.29 0 stress

14时38分31秒 0 7238 23.29 0.00 0.00 23.29 3 stress

14时38分31秒 0 7239 23.11 0.00 0.00 23.11 1 stress

14时38分31秒 0 7240 22.92 0.00 0.00 22.92 2 stress

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值