您可以让您的基准测试工具通过http或其他一些流行的协议获取新版本的程序和测试数据。如果您不想使用 http,您可以考虑使用网络文件系统(例如NFS和GlusterFS)。
在我看来,您将在单个“主”服务器上启动您的脚本,然后它会产生 5 个 bash 进程。他们每个人都将登录到远程“从”服务器并执行基准测试工具。基准测试工具将从某个(可能是“主”)服务器获取新程序和数据,然后执行它,测量时间/内存/等并在标准输出上返回这些值,因此 ssh 会将其传递回主服务器服务器,它是 bash 进程。然后,您将 bash 会话输出重定向到文件。
testmaster.sh -> 5*(testnode.sh -> ssh
-> fetch_and_benchmark -> output -> (ssh) -> testnode.sh -> file)
testmaster.sh 必须每秒检查所有文件是否已经存在,然后读取并比较结果。这听起来可能很糟糕,但相信我,如果你不手动完成所有这些事情会更好,而且脚本相对容易编写。
关于确保您在所有盒子上拥有相同的环境......不要让任何人靠近您的测试节点并且不要对它们做任何事情。
我不建议虚拟化,因为它会以您无法预测的方式改变您的测试结果。虚拟机不能像纯机一样快,也不仅仅是“它慢了 20%”。有些事情要慢得多,有些则慢得多。如果您不介意,请使用虚拟化和快照,但您说您在多个节点上测试事物,每个节点都有不同的内核,所以我想您会非常认真地对待它。
啊,还有一件事。Linux 有一种有趣的释放内存的方式(就像“在有人需要它之前不要释放它”)。有些东西会被缓存。可以肯定的是,您必须在每次测试会话后重新启动测试机器。