Der*_*ler 223 debian performance benchmarking
我目前正在调试 Cacti 安装并希望创建 CPU 负载来调试我的 CPU 利用率图。
我试图简单地运行cat /dev/zero > /dev/null
,它运行良好,但只使用了 1 个核心:
有没有更好的方法在负载下测试/最大化系统资源?
小智 255
尝试stress
它几乎相当于 Windows consume.exe
:
oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd
Run Code Online (Sandbox Code Playgroud)
jll*_*gre 127
无需安装任何额外的软件包,您的旧外壳可以单独完成。
这个单线程将100%加载您的四个核心1:
for i in 1 2 3 4; do while : ; do : ; done & done
Run Code Online (Sandbox Code Playgroud)
它的工作原理非常简单,它启动了四个无限循环。他们每个人都在重复空指令 ( :
)。每个循环都能够以 100% 的速度加载 CPU 内核。
如果您使用bash
,ksh93
和其他支持范围的 shell(即 notdash
或 old ksh
),您可以使用这种不可移植的语法:
for i in {1..4}; do ...
Run Code Online (Sandbox Code Playgroud)
替换4
与CPU的数量,你想,如果加载不同4
。
假设您在启动这些循环之一时没有后台作业已经在运行,您可以使用该命令停止负载生成:
for i in 1 2 3 4; do kill %$i; done
Run Code Online (Sandbox Code Playgroud)
回答@underscore_d 的评论,这是一个增强版本,它简化了很多停止加载,还允许指定超时(默认为 60 秒)。 A Control-C也会杀死所有失控的循环。这个 shell 函数至少在bash
和下工作ksh
。
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
Run Code Online (Sandbox Code Playgroud)
1请注意,当 CPU 支持每个内核多个线程(超线程)时,操作系统会将负载分派到所有虚拟 CPU。在这种情况下,加载行为取决于实现(每个线程可能报告为 100% 忙或不忙)。.
rko*_*egi 27
一种替代方法是
openssl speed -multi $(grep -ci processor /proc/cpuinfo)
Run Code Online (Sandbox Code Playgroud)
或(如果存在 nproc)
openssl speed -multi $(nproc --all)
Run Code Online (Sandbox Code Playgroud)
OpenSSL 几乎总是出现在现在的发行版中,所以不需要额外的包。
Pus*_*ade 24
我制作了一个简单的 python 脚本,它的作用相同。您可以控制要加载的 CPU 内核数。这样做的好处是它不会消耗除 cpu 之外的任何其他资源。(我认为 Mark johnson 的想法会消耗大量 I/O 资源,这在这里是不受欢迎的。)
from multiprocessing import Pool
def f(x):
# Put any cpu (only) consuming operation here. I have given 1 below -
while True:
x * x
# decide how many cpus you need to load with.
no_of_cpu_to_be_consumed = 3
p = Pool(processes=no_of_cpu_to_be_consumed)
p.map(f, range(no_of_cpu_to_be_consumed))
Run Code Online (Sandbox Code Playgroud)
只需从终端运行此脚本$ python temp1.py
。完成后,您需要终止脚本。
这是我加载 3 个内核时的 CPU 消耗输出。
小智 13
开始二
sha1sum /dev/zero &
Run Code Online (Sandbox Code Playgroud)
系统中每个核心的命令。
停止
killall sha1sum
Run Code Online (Sandbox Code Playgroud)
或者
kill sha1sum
Run Code Online (Sandbox Code Playgroud)
小智 9
我一直在开发压力 ng,这是一种更新的压力工具,可以对 Linux 系统的各个方面施加压力。有关更多信息,请参阅http://kernel.ubuntu.com/~cking/stress-ng/
用法类似于压力
$ stress-ng --cpu 4 --vm 2 --fork 8 --switch 4 --timeout 1m
stress-ng: info: [32254] dispatching hogs: 4 cpu, 8 fork, 4 switch, 2 vm
stress-ng: info: [32254] cache allocate: default cache size: 8192K
Run Code Online (Sandbox Code Playgroud)
安装
sudo apt-get install stress-ng
Run Code Online (Sandbox Code Playgroud)
我一般走cpuburn套件:
sudo apt-get install cpuburn
for i in {1..4}; do burnK7 & done
Run Code Online (Sandbox Code Playgroud)
将 4 替换为您拥有或想要强调的核心数/HT 线程数。
注意:这会同时强调尽可能多的芯片面积,它被编程为产生最大的功耗。我不得不第二次写这篇文章,不知何故我的机器不喜欢它:-(
您也可以按顺序执行 cpuburn:
burnP6 & burnP6 & burnP6 & burnP6 &
[1] 28520
[2] 28521
[3] 28522
[4] 28523
Run Code Online (Sandbox Code Playgroud)
当你想阻止他们时:
killall burnP6
Run Code Online (Sandbox Code Playgroud)
您还可以乘以burnP6 &
匹配系统上 CPU 内核的数量。