如何使用bash命令创建CPU峰值

6 浏览
0 Comments

如何使用bash命令创建CPU峰值

我想在Linux机器上创建近乎100%的负载。这是一个四核系统,我希望所有核心都以全速运行。理想情况下,CPU负载会持续一段指定的时间,然后停止。我希望在bash中有一些技巧。我在考虑使用某种无限循环。

0
0 Comments

如何使用bash命令创建CPU峰值

有时候我们可能需要测试计算机的性能或者监测计算机在高负载下的表现。在这种情况下,我们可以使用bash命令来创建一个CPU峰值。下面将介绍如何通过一个简单的bash命令来实现这个目标。

首先,我们需要打开终端,并输入以下命令,然后按回车键执行:

yes > /dev/null &

为了充分利用现代的CPU,一行命令可能不足够,我们可能需要重复执行这个命令来占用全部的CPU资源。

要结束这个过程,只需输入以下命令:

killall yes

这个想法最初出现在这里,虽然它最初是为Mac用户设计的,但在*nix系统上也可以使用。

此命令的一个用户表示:“非常好用,感谢!值得补充的是:这个命令会使每个CPU核心的一个超线程达到最大负载。所以,一个双核心CPU(每个核心有2个线程)将获得每个yes命令25%的负载(假设系统此前处于空闲状态)。”

还有一位用户补充说:“这个命令的每次迭代会使Android设备的CPU负载增加25%,最多可以迭代4次,超过这个次数将不再产生效果(即使在时钟速率方面也是如此)。”

如果您有多个终端会话或tmux标签,您可以简单地运行yes > /dev/null命令,然后在完成后按下CTRL+C键停止执行。

通过上述方法,我们可以使用简单的bash命令来创建CPU峰值,以测试计算机性能或监测计算机在高负载下的表现。

0
0 Comments

如何用bash命令创建CPU峰值

有时候我们需要测试计算机的性能,或者模拟高CPU负载的情况。下面是一种用bash命令创建CPU峰值的方法。

你可以使用以下命令来创建一个CPU负载:

dd if=/dev/zero of=/dev/null

如果你想在更多的核心上产生负载,可以尝试使用fork命令:

fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd

将花括号中的命令重复多次,次数等于你想要产生的线程数(这里是4个线程)。按下回车键即可停止(确保没有其他dd命令在运行,否则也会被杀死)。

dd命令主要涉及I/O而不是CPU使用率。

这种方法适用于大多数情况。在我的情况下,其他方法无法完全将CPU负载峰值提高到100%。通过在并行执行四个进程的同时使CPU负载峰值稳定地达到100%。只需四行代码和一个“wait”命令。

从/dev/zero读取并写入/dev/null并不是一个很好的负载生成器,你需要运行很多次才能产生显著的负载。更好的方法是使用以下命令:

dd if=/dev/urandom | bzip2 -9 >> /dev/null

/dev/urandom需要更多的工作来生成输出,而bzip2将花费很多的精力来尝试压缩它,所以整体的CPU使用率比“填充一个块并丢弃它”要高得多。

使用`jobs -p | xargs kill`只杀死你创建的进程。

在CentOS 7中,我不得不用'pkill -e ^dd'替换'killall dd'。

你可以尝试使用"pbzip2"代替"bzip2",它是多线程的,可以占用所有的核心。

在我的系统上,从/dev/urandom压缩数据比压缩到bzip2更多,所以它可能不是一个很好的负载生成器。一种解决方法是将bzip2命令链接在一起,这样随机数据可以被重复使用,并且dd占据了总CPU的相对较小部分:

dd if=/dev/urandom | bzip2 -9 | bzip2 -9 | bzip2 -9 | bzip2 -9 >> /dev/null

这与提问者的要求并不矛盾-他们只要求一种使CPU忙碌的方法,而没有指定是内核模式还是用户模式的活动。从/dev/urandom的dd命令将创建高内核模式活动,并且尝试压缩该数据会增加用户模式因素。忙碌的CPU就是忙碌的CPU...

对我来说,解决方案是`dd if=/dev/urandom of=/dev/null`,可以将CPU运行到100%。

这种方法是否适用于Windows?

如果在`top`中所有的CPU都处于100%负载,为什么这个解决方案被认为“不是一个很好的负载生成器”?有其他度量指标应该被测量吗?

对于需要测试多个CPU的人来说,我发现`cat /dev/zero | pbzip2`要比`/dev/urandom`效果好-urandom在明显单线程的随机数据生成上阻塞,而/dev/zero可以更快地产生零。即使它可以轻松压缩,但是需要做这项工作(以及分发900kB大小的零块)会产生几乎任意大小的CPU负载。

0
0 Comments

如何使用bash命令创建CPU峰值

有时候我们需要测试一些与CPU相关的功能或者性能,这时候我们可以使用stress命令来创建CPU峰值。stress命令不仅可以测试CPU的性能,还可以测试内存和磁盘的性能。

下面的命令演示了如何使用stress命令来让两个CPU核心在60秒内达到峰值:

stress --cpu 2 --timeout 60

如果你使用的是Fedora系统,你可以使用以下命令来安装stress:

sudo yum install stress

如果你使用的是CentOS系统,则需要先添加EPEL仓库,然后使用以下命令来安装stress:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

对于OS X系统,你可以使用brew来安装stress:

brew install stress

注意,在某些情况下,你可能需要指定虚拟核心的数量。例如,对于四核的MacBook Pro,你可能需要指定8个核心来达到峰值。

另外,如果你的CPU支持超线程技术,你还需要测试虚拟核心,以便进行全面的负载测试。

对于基于Debian的系统,你可以使用以下命令来安装stress:

sudo apt-get install stress

通过使用上述的bash命令,你可以轻松地创建CPU峰值,以测试CPU的性能和功能。

0