【问题标题】:Bash script: CPU stress test while watching clock speedBash 脚本:在查看时钟速度的同时进行 CPU 压力测试
【发布时间】:2016-08-13 19:31:18
【问题描述】:

我是这个论坛的新手,也是 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.) 我发现通过使用“超时”命令,我可以在指定时间后终止任务。例如,

timeout 30s ./bernoulli 35

启动计算第 35 个伯努利数的任务,并在 30 秒后终止该任务。

3.) 我也通过打字发现了这一点

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

我可以在 30 秒内观察我的内核的时钟速度(每 2 秒更新一次)(此时“超时 30 秒”会终止此任务)。

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

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

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

【问题讨论】:

    标签: linux bash parallel-processing


    【解决方案1】:

    怎么样

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

    最后的&amp; 将使命令在后台运行,因此第二个timeout 将在第一个之后几乎立即执行。

    PS:这是测试现代 CPU 的相当糟糕的方法。您将仅使用单核,并且很可能仅使用 CPU 的有限部分(无 sse 等)。编写 CPU 基准测试并非易事,因此您可能希望使用已经可用的基准测试之一。例如,您可以使用sysbench --test=cpu --cpu-max-prime=20000 run 之类的内容查看sysbench

    【讨论】:

    • 哇,非常感谢您提供非常快速的解决方案以及您的额外提示 - 我现在将看看 sysbench。
    【解决方案2】:

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

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

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

    【讨论】:

    • 非常感谢您的快速响应!完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2011-12-29
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多