Ela*_*ate 5 scripting cpu benchmark multithreading
我是一名学生,想要对 NGS 管道进行基准测试,根据它分配给它的内核数量和输入文件的大小来监控性能。出于这个原因,我编写了一个 bash 脚本,使用不同的 nr_of_cores 参数和输入文件多次调用它,并记下完成时间和其他统计信息。整个过程大约需要一天时间来完成各种场景。(当然,大部分时间都花在使用单核运行最大的文件上,所以我不会在此期间阻塞整个服务器)
我可以访问共享的 64 核服务器来运行它。然而,根据一天中的时间和试图完成项目的人,共享服务器的空闲内核数量变化很大。(我将测试的最高 nr_of_cores 是 36,带有一个小文件。)
我的问题:有没有一种简单的方法可以让我的 bash 脚本在执行命令之前等待它知道 [X] 个内核可用?我认为这样,我会得到更可靠的数据,我不会减慢运行更紧急任务的人的速度,而且我可以随时启动脚本,而不是等到我碰巧看到 htop 发现这是一个缓慢的一天.
谢谢!
假设您有能力告诉系统稍后运行它,并且系统管理员是明智的并且已at
安装,您可以使用以下命令在负载级别足够低(默认情况下为零,但系统管理员可以为阈值设置任意值):
batch << EOF
<command>
EOF
Run Code Online (Sandbox Code Playgroud)
除此之外,我知道执行此操作的唯一方法是自己轮询负载平均值,并在负载平均值低于某个阈值时触发命令。如果您决定走这条路,您想要查看的是 中的第一个字段/proc/loadavg
,它给出了 1 分钟的平均值。