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