【转帖】Linux性能优化(一)——stress压力测试工具
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命令
-
stress-ng [OPTION [ARG]]
-
-
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上

QQ群名片
【转帖】Linux性能优化(一)——stress压力测试工具的更多相关文章
- lLinux 下 Stress 压力测试工具
作者信息 邮箱:sijiayong000@163.com Q Q:601566386 Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这 ...
- Mysql优化概述及其压力测试工具
衡量指标 TPS:Transactions Per Second (每秒传输的事物处理个数) ,这是指服务器每秒处理的事物数,支持事物的存储引擎如Innodb等特有的一个性能指标; QPS:Queri ...
- 九款Web服务器性能压力测试工具
一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...
- Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
- Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般 ...
- Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程
Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论 一.http_load 程序 ...
- Web服务器性能压力测试工具
一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...
- 三种web性能压力测试工具
三种web性能压力测试工具http_load webbench ab小结 题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://w ...
- 几款Web服务器性能压力测试工具
一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般 ...
- web性能压力测试工具http_load/webbench/ad
http_load 下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz 程序非常小,解压后也不到100K 居家 ...
随机推荐
- Java 创建/编辑/删除Excel迷你图表
迷你图是Excel工作表单元格中表示数据的微型图表.使用迷你图可以非常直观的显示数据变化趋势,突出最大值.最小值,放在数据表格中可起到很好的数据分析效果.本文将通过Java代码示例介绍如何在Excel ...
- Linux神器strace的使用方法及实践
在Linux系统中,strace命令是一个集诊断.调试.统计与一体的工具,可用来追踪调试程序,能够与其他命令搭配使用,接下来就Linux系统调用工具strace的使用方法和实践给大家做个详细介绍,一起 ...
- 为什么vacuum后表还是继续膨胀?
摘要: 对于更新和删除操作频繁的表,会存在大量垃圾数据,导致磁盘空间的浪费和查询扫描时额外的IO开销,需要定期执行清理操作(vacuum)来控制行存表以及表上索引的膨胀.本文将对vacuum的原理以及 ...
- 带你认识图数据库性能和场景测试利器LDBC SNB
摘要:本文主要介绍基于交互式查询所用的数据生成器(下文简称Datagen),及LDBC SNB数据如何在华为图引擎服务GES中应用. 本文分享自华为云社区<[图数据库性能和场景测试利器LDBC ...
- 宝藏昇腾AI应用推荐!CANN带你体验黑白图像自动上色的快乐~
摘要:属于"你"那边的麦田 天空 河水 骏马 树木--会是什么颜色呢? 黑白与色彩 似乎把时代分割了两半~ 我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷. 翻开一张黑白 ...
- 【教程】app备案流程简单三部曲即可完成
[教程]app备案流程简单三部曲即可完成 APP备案流程包括以下步骤: 1. 开发者实名认证:在提交备案申请之前,开发者需要通过移动应用开发平台进行实名认证.这个步骤需要提供身份证号码.姓名.联系 ...
- 白嫖:GPT-4
众所周知,GPT-4需要充OpenAI 的 Plus才能使用,Plus则需要每月20美金. 很多同学很想体验GPT-4,但一方面不想花钱,一方面想花也没那么容易花出去(懂的都懂) 我看到有人分享可以免 ...
- Java kafka 设置从指定时间戳开始消费
包含的功能: 1.Java kafka 设置从指定时间戳开始消费 2.JdbcTemplate操作MySql 3.Java多线程消费kafka 4.Java获取kafka所有topic pom.xml ...
- 2024-01-17:lc的30. 串联所有单词的子串
2024-01-17:用go语言,给定一个字符串 s 和一个字符串数组 words. words 中所有字符串 长度相同. s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接 ...
- 库函数 | C++17 std::filesystem文件系统 用法指北
本文将针对常用的场景,对 std::filesystem 的使用逐一进行验证: 判断文件夹是否存在 创建单层目录 逐级创建多层目录 创建多级目录 当前文件路径 创建文件"from.dat&q ...