Linux下通过纯指令进行CPU压测

本文最后更新于:2024年5月4日 凌晨

方法一

拉起两个进程,执行文件拷贝,输出空文件。可压测到100%,持续执行。

1
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done

方法二

持续计算圆周率,bc命令。可压测到100

1
2
# 计算小数点后5000位
echo "scale=5000; 4*a(1)" | bc -l -q

方法三

编写一个循环,可压测到65%左右,持续执行。

1
2
3
4
5
6
7
8
9
# 编写一个脚本文件,持续执行该循环,往空文件中写入1。实际不会生成新文件。
# filename=cputest.sh
while [ 1 ]
do
echo 1 >> /dev/null
done
# 添加执行权限
# 或执行chmod +x cputest.sh
chmod 777 cputest.sh

方法四

模拟用户不断地访问,并发进程,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ************常规执行*************
# 不会占用过多资源
# !/bin/bash
Njob=15 #任务总数
for ((i=0; i<$Njob; i++)); do
{
echo "progress $i is sleeping for 3 seconds zzz…"
sleep 3
}
done
echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时
# ************并发执行*************
# !/bin/bash
Njob=15
for ((i=0; i<$Njob; i++)); do
echo "progress $i is sleeping for 3 seconds zzz…"
sleep 3 & #循环内容放到后台执行
done
wait #等待循环结束再执行wait后面的内容
echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时

压测脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
# 并发运行的最佳实践
# 总进程数
Sp=2500
# 并发数,并发数过大可能造成系统崩溃
Qp=250
# 存放进程的队列
Qarr=();
# 运行进程数
run=0
# 将进程的添加到队列里的函数
function push() {
Qarr=(${Qarr[@]} $1)
run=${#Qarr[@]}
}
# 检测队列里的进程是否运行完毕
function check() {
oldQ=(${Qarr[@]})
Qarr=()
for p in "${oldQ[@]}";do
if [[ -d "/proc/$p" ]];then
Qarr=(${Qarr[@]} $p)
fi
done
run=${#Qarr[@]}
}
# main
for((i=0; i<$Sp; i++));do
#for i in `seq 500000`; do curl -o /dev/null -s -w %{http_code}:%{time_total} http://www.baidu.com ;echo " "; done
echo "running $i "
sleep 3 &
push $!
while [[ $run -gt $Qp ]];do
check
sleep 0.1
done
done
echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时

Linux下通过纯指令进行CPU压测
http://www.codestar.top/2023/10/12/Linux/Linux下通过纯指令进行CPU压测/
作者
mini小新
发布于
2023年10月12日
更新于
2024年5月4日
许可协议