Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash脚本:观察时钟速度时的CPU压力测试_Linux_Bash_Parallel Processing - Fatal编程技术网

Linux Bash脚本:观察时钟速度时的CPU压力测试

Linux Bash脚本:观察时钟速度时的CPU压力测试,linux,bash,parallel-processing,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 $(( $(bern

我对这个论坛是全新的,对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
开始计算第35个伯努利数的任务,30秒后任务被终止

3.)我还通过打字发现

timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
我可以观察我的内核的时钟速度(每2秒更新一次)30秒(此时“超时30秒”将终止此任务)

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

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

“同时”。我希望我能清楚地表明我想要实现的目标。有人能帮我解决这个问题吗?谢谢你的评论

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

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

请注意,单个
&
不是打字错误。它不是逻辑的,并且在后台运行
bernoulli
脚本。

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

timeout 30s bash -c './bernoulli 35 & watch grep \"cpu MHz\" /proc/cpuinfo'
请注意,单个
&
不是打字错误。它不是逻辑的,它在后台运行
bernoulli
脚本。

怎么样

timeout 30s ./bernoulli 35 &
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
最后的
&
将使命令在后台运行,这样第二个
超时将在第一个
超时后几乎立即执行

PS:这是测试现代CPU相当糟糕的方法。您将只使用单核,而且很可能只使用有限的CPU部分(无sse等)。编写CPU基准并不是件小事,所以您可能希望使用一个已经可用的基准。例如,您可以使用类似于
sysbench--test=cpu--cpu max prime=20000 run的方法查看
sysbench
,如何

timeout 30s ./bernoulli 35 &
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
最后的
&
将使命令在后台运行,这样第二个
超时将在第一个
超时后几乎立即执行


PS:这是测试现代CPU相当糟糕的方法。您将只使用单核,而且很可能只使用有限的CPU部分(无sse等)。编写CPU基准并不是件小事,所以您可能希望使用一个已经可用的基准。例如,您可以使用类似于
sysbench--test=cpu--cpu max prime=20000 run

的东西查看
sysbench
,非常感谢您提供了非常快速的解决方案,也感谢您提供了额外的提示-我现在就来看看sysbench。哇,非常感谢您提供了非常快速的解决方案,也感谢您提供的额外提示-我现在将查看sysbench。非常感谢您提供了非常快速的响应!很好用!非常感谢您的快速响应!很好用!