https://blog.csdn.net/a642960662/category_11641226.html

一、stress简介

1、stress简介

stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试。

2、stress安装

安装:

sudo yum install stress

二、stress使用

1、stress命令

stress [OPTION [ARG]]

-c, --cpu N:产生N个进程,每个进程都循环调用sqrt函数产生CPU压力。
-i, --io N:产生N个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘上,产生IO压力。通过系统调用sync刷新内存缓冲区数据到磁盘中,以确保同步。如果缓冲区内数据较少,写到磁盘中的数据也较少,不会产生IO压力。在SSD磁盘环境中尤为明显,很可能iowait总是0,却因为大量调用系统调用sync,导致系统CPU使用率sys 升高。
-m, --vm N:产生N个进程,每个进程循环调用malloc/free函数分配和释放内存。
    --vm-bytes B:指定分配内存的大小
    --vm-stride B:不断的给部分内存赋值,让COW(Copy On Write)发生
    --vm-hang N :指示每个消耗内存的进程在分配到内存后转入睡眠状态N秒,然后释放内存,一直重复执行这个过程
    --vm-keep:一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)
-d, --hdd N:产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
    --hdd-bytes B:指定文件大小

--hdd-noclean:不要将写入随机ASCII数据的文件Unlink
-t, --timeout N:在N秒后结束程序        
--backoff N:等待N微秒后开始运行
-q, --quiet:程序在运行的过程中不输出信息
-n, --dry-run:输出程序会做什么而并不实际执行相关的操作
--version:显示版本号
-v, --verbose:显示详细的信息

2、CPU测试

stress --cpu 2 --timeout 60

开启2个CPU进程执行sqrt计算,60秒后结束

3、IO测试

stress --io 2 --timeout 60s

开启2个IO进程,执行sync系统调用,刷新内存缓冲区到磁盘

使用stress无法模拟iowait升高,但sys升高。stress -i参数表示通过系统调用sync来模拟IO问题,但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。使用SSD磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高。

stress --io 2 --hdd 2 --timeout 60s

开启2个IO进程,2个磁盘IO进程

4、Memory测试

stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s

开启2个进程分配内存,每次分配1GB内存,保持100秒后释放,100秒后退出。

5、磁盘IO测试

stress --hdd 2 --hdd-bytes 10G --backoff 2000000

开启2个磁盘IO进程,每次写10GB数据到磁盘

三、stress测试场景

1、CPU密集型进程

stress --cpu 2 --timeout 600

模拟启动2个CPU密集型进程

uptime

查看系统平均负载,如下:

mpstat -P ALL 5 1

查看CPU使用情况,如下:

pidstat -u 5

查看进程负载情况,如下:

(1)通过uptime可以观察系统平均负载较高。

(2)通过mpstat观察到CPU0和CPU2的用户态CPU使用率很高,而iowait为0,说明进程是CPU密集型。进程使用CPU密集导致系统平均负载变高、CPU使用率变高。

(3)可以通过pidstat查看是stress进程导致CPU使用率较高。

2、IO密集型进程

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

模拟1个worker调用sync刷新内存缓冲区write到磁盘。

uptime

查看系统平均负载,如下:

mpstat -P ALL 5

查看CPU使用情况,如下:

(1)可以通过uptime观察到,系统平均负载很高。

(2)通过mpstat观察到内核态CPU使用率很低,但iowait很高,一直在等待IO处理,说明进程是IO密集型。进程频繁进行IO操作,导致系统平均负载很高而CPU使用率不高。

3、等待CPU进程

本机4个逻辑CPU,模拟8个进程。

stress -c 8 --timeout 600

模拟8个CPU密集型进程

uptime

查看系统平均负载,如下:

mpstat -P ALL 5

查看CPU使用率情况,如下:

pidstat -u 5

查看进程的CPU使用情况,如下:

(1)通过uptime观察到系统平均负载很高

(2)通过mpstat观察到用户态CPU使用率很高,iowait为0,说明进程是CPU密集型或者进程间存在CPU争用。

(3)通过pidstat观察到wait指标很高,说明进程间存在CPU争用,系统中存在大量进程在等待使用CPU。

四、stress-ng简介

1、stress-ng简介

stress-ng完全兼容stress, 并且在stress基础上增加数百个选项参数,支持产生各种复杂的压力。

2、stress-ng安装

stress-ng源码下载:

https://kernel.ubuntu.com/~cking/tarballs/stress-ng/

编译:

make

安装:

sudo make install

3、stress-ng命令


  1. stress-ng [OPTION [ARG]]
  2. stress-ng --cpu 2 --cpu-method pi

产生2个worker做圆周率算法压力

stress-ng --cpu 2 --cpu-method all

产生2个worker迭代使用30多种不同的压力算法,包括pi, crc16, fft等

stress-ng --sock 2

产生2个worker调用socket相关函数产生压力

stress-ng --tsc 2

产生2个worker读取tsc产生压力

stress-ng --sock 4 --taskset 0-1,3

strss-ng将压力指定到指定CPU上

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux30020 人正在系统学习中
量化IT技术交流群


QQ群名片

【转帖】Linux性能优化(一)——stress压力测试工具的更多相关文章

  1. lLinux 下 Stress 压力测试工具

    作者信息 邮箱:sijiayong000@163.com Q Q:601566386 Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这 ...

  2. Mysql优化概述及其压力测试工具

    衡量指标 TPS:Transactions Per Second (每秒传输的事物处理个数) ,这是指服务器每秒处理的事物数,支持事物的存储引擎如Innodb等特有的一个性能指标; QPS:Queri ...

  3. 九款Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...

  4. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  5. Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般 ...

  6. Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程

    Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论   一.http_load 程序 ...

  7. Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...

  8. 三种web性能压力测试工具

    三种web性能压力测试工具http_load webbench ab小结 题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://w ...

  9. 几款Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...

  10. web性能压力测试工具http_load/webbench/ad

    http_load 下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz 程序非常小,解压后也不到100K 居家 ...

随机推荐

  1. SSH默认端口从22修改为其他端口

    1.在终端中使用root权限登录到您的Linux服务器. 2.打开终端,并使用适合您的文本编辑器(如vi.nano等)打开SSH配置文件.例如,通过运行以下命令之一: vi /etc/ssh/sshd ...

  2. linux中创建新用户并且放到用户组中

    1.打开终端并以 root 用户身份登录到 Linux 系统 2.使用以下命令创建一个新用户 sudo useradd -m username 将 "username" 替换为你要 ...

  3. JavaScript异步编程3——Promise的链式使用

    目录 概述 详论 1️⃣回调地狱 2️⃣Promise实现 参考 概述 在上一篇文章<JavaScript异步编程2--结合XMLHttpRequest使用Promise>中,简要介绍了A ...

  4. 聊聊游戏业务怎么用高斯Redis

    摘要:其实游戏客户对数据库的诉求是很明确的,数据库应当"放心存放心用". 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第27期:聊聊游戏业务怎么用高斯 ...

  5. 不同数据库模式下DATE类型的行为解析

    摘要:本文章主要介绍了GaussDB(DWS)数据类型中的DATE类型在不同数据库模式下且在不同应用场景下的行为表现及对比. 本文分享自华为云社区<GaussDB(DWS)数据类型之DATE类型 ...

  6. 云小课|细数那些VMware虚拟机的恢复招式

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:当遭遇误操作.病毒 ...

  7. 在线一键生成安卓证书keystore 文件

    在线一键生成安卓证书 keystore 文件 一般的打包工具都会有默认的安卓证书提供,但如果你需要上架需要用自己申请安卓证书 keystore 文件打包 apk 现有方便方便的工具,直接在网页就可以申 ...

  8. 企业需要知道的5个 IAM 最佳实践

    在之前的文章中,我们了解了在代码发布到 GitHub 之前如何管理用户权限.但你知道吗?人为错误竟然是迄今为止数据泄露的主要原因!根据统计,高达95%的数据泄露是由配置错误和不良网络环境引起的.黑客通 ...

  9. Three.js 入门

    Demo代码地址: https://gitee.com/s0611163/three.js-demo Three.js Three.js下载 从GitHub上下载一个Release版本,https:/ ...

  10. ACM | 新版 C++ 特性

    本文来自 OI wiki,转载仅作学习记录使用. 注意 :考虑到算法竞赛的实际情况,本文将不会全面研究语法,只会讲述在算法竞赛中可能会应用到的部分. 本文语法参照 C++11 标准.语义不同的将以 C ...