stress-ng 压力测试、taskset 绑定cpu

一、stress-ng  

CentOS 7 的EPEL源包含2个压力测试工具,一个是标准的stress,另一个是其升级版stress-ng。

1、安装stress-ng   

yum install -y epel-release.noarch && yum -y update
yum install -y stress stress-ng

2、使用方法

stress的参数
-c 2 : 生成2个worker循环调用sqrt()产生cpu压力

-i 1 : 生成1个worker循环调用sync()产生io压力

-m 1 : 生成1个worker循环调用malloc()/free()产生内存压力

运行2worker CPU压力40分钟,CPU占用率稳定在20%左右

3、示例

# stress -c 2 -i 9 -m 8
stress: info: [5100] dispatching hogs: 2 cpu, 9 io, 8 vm, 0 hdd

# uptime
 00:16:48 up 41 min,  3 users,  load average: 21.05, 20.64, 16.66

4、stress-ng的参数

stress-ng的参数有几百项,可以模拟复杂的压力测试,但是兼容stress的参数。 主要使用参数:

-c N :运行N worker CPU压力测试进程
--cpu-method all :worker从迭代使用30多种不同的压力算法,包括pi, crc16, fft等等

-tastset N:将压力加到指定核心上

-d N:运行N worker HDD write/unlink测试

-i N:运行N worker IO测试

示例:运行8 cpu, 4 fork, 5 hdd, 4 io, 50 vm, 10小时

stress-ng --cpu 8 --cpu-method all --io 4 --vm 50 -d 5  --fork 4 --timeout 36000s

二、taskset

taskset命令,可用于进程的CPU调优,可以把服务器上运行的某个进程,指定在某个CPU上工作。

1、执行以下命令,获取进程状态(以下操作以进程test.sh为例,对应的pid为23989)

ps aux | grep test.sh

2、执行以下命令,查看进程当前运行在哪个CPU上。

taskset -p 进程号

taskset -p 23989

3、执行以下命令,指定进程运行在第二个CPU(CPU1)上。

taskset -pc 1 进程号

例如:taskset -pc 1 23989

也可以使用如下命令在启动程序时绑定CPU(启动时绑定到第二个CPU)上。

taskset -c 1 ./test.sh&

taskset -c 8-15 sysbench cpu --threads=8 run

 

posted @ 2022-01-20 16:33  凡人半睁眼  阅读(2636)  评论(0编辑  收藏  举报