Bash脚本:在观看时钟速度的同时进行CPU压力测试

时间:2016-04-20 21:16:02

标签: linux bash parallel-processing

我是这个论坛的新手,也是bash的新手,所以请耐心等待:)。

我想编写一个bash脚本来进行CPU压力测试,同时观察时钟速度。因此,我做了以下几点:

1。)对于CPU压力测试,我创建了一个名为" bernoulli"使用以下代码:

#!/bin/bash
# argument 1: n

function bernoulli() 
{ 
    if (( $1 < 3 ))
    then
        echo 1
    else
        echo $(( $(bernoulli $(( $1 - 1 ))) + $(bernoulli $(( $1 - 2 ))) ))
    fi
}
bernoulli $1

2。)我已经发现通过使用&#34;超时&#34;命令我可以在指定的时间后杀死一个任务。例如,

timeout 30s ./bernoulli 35

开始计算第35个bernoulli数的任务,任务在30秒后被杀死。

3。)我也通过输入

找到了
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo

我可以观看核心的时钟速度(每2秒更新一次)30秒(此时#34;超时30秒&#34;杀死此任务)。

我想要的是什么:我想进行上述压力测试并同时观察时钟速度。换句话说,我会以某种方式运行两个命令

timeout 30s ./bernoulli 35
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo

&#34;同时&#34;。我希望我能说清楚自己想要达到的目标。任何人都可以帮我解决问题吗?非常感谢每一条评论!

2 个答案:

答案 0 :(得分:1)

您可以在专用的shell中运行它们:

timeout 30s bash -c './bernoulli 35 & watch grep \"cpu MHz\" /proc/cpuinfo'

请注意,单&不是拼写错误。它不是逻辑,它在后台运行bernoulli脚本。

答案 1 :(得分:1)

怎么样

timeout 30s ./bernoulli 35 &
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
最后的

&会让命令在后台运行,这样第二个timeout几乎会在第一个sysbench之后立即执行。

PS:这是测试现代CPU的相当差的方法。你将只锻炼单核,很可能只是你CPU的有限部分(没有sse等)。编写CPU基准测试并非易事,因此您可能希望使用已有的基准测试。例如,您可以使用sysbench --test=cpu --cpu-max-prime=20000 run等内容查看focus