皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景

admin 6个月前 (07-18) 科技 74 0

做性能测试的必备知识系列,可以看下面链接的文章哦

https://www.cnblogs.com/poloyy/category/1806772.html

 

stress 先容

Linux 系统压力测试工具,这里通过异常历程模拟平均负载升高的场景

 

来看看 stress 下令行参数的解说

 

字段 寄义
-?、--help 辅助文档
--version、-v 版本号
-q 退出
-n 显示已完成指令的情形
-t N、--timeout N 运行 N 秒后住手
--backoff N 守候 N 微秒后最先运行
-c N、--cpu N
  • 发生 N 个历程
  • 每个历程频频的盘算随机数的平方根
  • 模拟 CPU 盘算密集型场景
-i N、--io N
  • 发生 N 个历程
  • 每个历程频频挪用 sync()
  • 模拟 I/O 密集型场景
-m N、--vm N
  • 发生 N 个历程
  • 每个历程不停挪用内存分配 malloc()内存释放 free() 函数

--vm-bytes B

指定 malloc() 时内存的字节数,默认256MB
--vm-hang N 指定执行 free() 前守候的秒数
-d N、 --hdd N
  • 发生 N 个历程
  • 每个历程执行 write() unlink() 的历程
--hdd-bytes B 

每个 hdd worker 写入 B 字节(默以为1GB)

 

Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size)

时间单元可以为秒 s,分m,小时h,天d,年y,文件巨细单元可以为 K,M,G

 

sysstat 先容

  • 包罗了常用的 Linux 性能工具,用来监控和剖析系统的性能
  • 接下来会用到 mpstat 和 pidstat 两个下令
  • 后面用单独一篇详细解说内里包罗的所有下令

 

mpstat

  • 常用的多核 CPU 性能剖析工具
  • 实时查看每个 CPU 的性能指标以及所有 CPU 的平均指标

 

pidstat

  • 常用的历程性能剖析工具
  • 实时查看历程的 CPU、内存、I/O 以及上下文切换等性能指标

 

安装两个工具

提供百度云盘链接

链接:https://pan.baidu.com/s/1YENSYaGw7Ar1Z8hf8CXGqA

提取码:2tpc

放到 Linux 下的某个目录

 

解压

tar -zxvf sysstat-12.1.5.tar.gz

tar -zxvf stress-1.0.4.tar.gz

 

划分进入解压后的两个文件夹执行以下下令

./configure

make&&make install

 

平均负载和 CPU 使用率的现实栗子

前言

  • 前面一篇文章也讲到了平均负载和 CPU 使用率的三个场景,接下来我们划分对这三个场景举例子
  • 需要打开三个终端接见同一个 Linux 机械哦
  • 我的 Linux 是虚拟机,2个cpu,2核

 

CPU 密集型历程

第一个终端

在第一个终端运行 stress 下令,模拟一个 CPU 使用率 100% 的场景

stress -c 1 -t 600

 

第二个终端

运行 uptime 查看系统平均负载情形,-d 参数示意高亮显示转变的区域

watch -d uptime

可以看到,1 分钟的平均负载会逐步增加到 1.00

 

第三个终端

运行 mpstat 查看 CPU 使用率的转变情形

mpstat -P ALL 5

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第1张

可以看出

  • 仅有一个 CPU 的使用率靠近 100%,但它的 iowait 只有 0
  • 这说明,平均负载的升高正是由于 CPU 使用率为 100%

 

接下来,就要排查是哪个历程导致 CPU 的使用率这么高的

 

使用 pidstat 下令

距离 5 秒后输出一组数据

pidstat -u 5 1

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第2张

从这里可以显著看到,stress 历程的 CPU 使用靠近 100%

 

I/O 密集型历程

第一个终端

运行 stress 下令,但这次模拟 I/O 压力,即不停地执行 sync()

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第3张

 

第二个终端

运行 uptime 查看系统平均负载情形,-d 参数示意高亮显示转变的区域

watch -d uptime

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第4张

可以看到,1 分钟的平均负载也会逐步增加到 1.00

 

第三个终端

运行 mpstat 查看 CPU 使用率的转变情形

mpstat -P ALL 5 1

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第5张

 

灵魂拷问

实在 iowait 并没有上去,反而照样系统态(%sys)升高了,这是怎么回事?岂非是工具的问题

 

回覆

  • iowait 无法升高是因为案例中 stress -i 使用的是 sync() 系统挪用,它的作用是刷新缓冲区内存到磁盘中
  • 对于新安装的虚拟机,缓冲区可能比较小,无法发生大的io压力
  • 这样大部分都是系统挪用的消耗
  • 以是,只看到系统 CPU 使用率升高

 

解决办法

使用 stress 的另一个参数 -d ,寄义上面已经说了哦

stress --hdd 1 -t 600 --hdd-bytes 4G

 

再通过 mpstat 看看指标

mpstat -P ALL 5

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第6张

可以看到

  • iowait 是显著升高了,虽然我们的 CPU 使用率也较高
  • 当做了几回实验之后,包罗启动了 2个、4个历程,发现 CPU 使用率仍然保持在 30%+,而 iowait 则不停升高,最高可到达40%+,而且平均负载也在不停升高
  • 以是可以看出平均负载的升高,很大缘故原由是因为 iowait 的不停升高

 

接下来,就要排查是哪个历程导致 iowait 这么高了

 

使用 pidstat 下令

距离 5 秒后输出一组数据,网络 10 次,查看最后的平均值

pidstat -u 5 10

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第7张

可以看到

kworker 写入字节的历程 和 stress 历程的 CPU 使用率都是偏高的

 

大量历程的场景

目的

当系统中运行历程超出 CPU 运行能力时,就会泛起守候 CPU 的历程

 

第一个终端

这次模拟 8 个历程

stress -c 8 -t 600

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第8张

 

第二个终端

运行 uptime 查看系统平均负载情形,-d 参数示意高亮显示转变的区域

watch -d uptime

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第9张

我的系统只有 4 个 CPU,比 8 个历程少得多,CPU 处于严重的过载状态,平均负载已经跨越 8 了

 

第三个终端

可以直接通过 pidstat 来查看历程的情形了,每隔 5s 网络一次,网络 5 次,看平均值

pidstat -u 5 5

皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景 第10张

可以看到

  • 8 个历程在竞争 4 个 CPU
  • 每隔历程守候 CPU 的时间(%wait)高达 50%
  • 这些超出 CPU 盘算能力的历程,导致 CPU 过载 

 

对于平均负载的一个明白和总结

  • 平均负载提供了一个快速查看系统整体性能的手段,反映了整的负载情形
  • 但只看平均负载自己,我们并不能直接发现到底是那里泛起了瓶颈

 

平均负载过高的剖析排查思绪

  • 有可能是 CPU 即密集型历程导致的
  • 平均负载过高不代表 CPU 使用率高,也有可能是 I/O 更密集了
  • 当发现平均负载过高时,可以通过 mpstat、pidstat 等工具,辅助剖析负载的泉源

 

通俗总结

平均负载过高是泛起性能瓶颈的显示,剖析瓶颈发生的源头和缘故原由,需要通过各种工具

,

联博以太坊

www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:皇冠app下载:性能测试必备知识(4)- 使用 stress 和 sysstat 剖析平均负载过高的场景

网友评论

  • (*)

最新评论

标签列表

    文章归档

      站点信息

      • 文章总数:1012
      • 页面总数:0
      • 分类总数:8
      • 标签总数:1411
      • 评论总数:883
      • 浏览总数:71284