1

我有一个项目,我在一个网格中有多个节点,它们作为存储和计算节点运行。这些节点是异构的,从专用服务器硬件到alix 板,甚至是运行 OpenWRT 的 Mikrotik 路由器板(尽管主要由 alix 板组成)。

我正在通过sigar java API收集系统性能指标,例如 RAM、SWAP 和 CPU 使用率。这工作得很好。

我的下一个任务是获取这些性能值并将它们组合起来,以便我能够以这样一种方式对我的主机进行排序,以便我可以说出哪个主机最能处理计算请求。这几乎可以被认为是 Windows 使用 Windows 性能指数为您的计算机提供性能分数的相同方式。

我的第一次尝试是添加 RAM、SWAP 和 CPU 使用率的使用百分比(对于 Linux,我将负载值缩放到 0 到 1 之间的值)。然后选择得分最低的主机进行计算操作。

有没有人对如何做到这一点有更好的想法。我的方式感觉非常“hacky”,而不是我想要处理这个项目中的工作的那种方式。

谢谢

4

1 回答 1

1

我会估计任务的要求并放置一台机器来匹配。你可能有很多小工作和一份大工作。如果您先分配小型作业,则最大的服务器可能很忙,而较小的服务器可能太小了。您可能希望将小任务分配给小服务器,而将大机器留给更大的任务。

您还将有需要更多 CPU 或更多内存的任务。

我不会考虑使用 SWAP。Java 不能在 SWAP 空间中运行,因此您需要确保它永远不需要它。

于 2013-01-15T18:12:51.517 回答