2013-01-15 19 views
1

我有一个项目,其中有一个网格中有多个节点在作为存储和计算节点运行。这些节点是异构的,从专用服务器硬件到alix boards甚至是运行OpenWRT的Mikrotik路由器板(尽管主要由alix板组成)。如何将系统性能值量化为单个性能值

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

我的下一个任务是获取这些性能值并将它们组合起来,这样我就能够以我可以说哪个主机最能够处理计算请求的方式排列主机。这几乎可以认为是与Windows性能指标相比,Windows为计算机提供了性能评分的相同方式。

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

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

谢谢

回答

1

我会得到一个任务的需求估计和放置一台机器来匹配。你可能有许多小工作和一份大工作。如果您先分配小型作业,那么最大的服务器可能会很忙,而较小的小型机器可能太小。您可能希望将小任务分配给小型服务器,并让大型机器承担更大的任务。

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

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

+0

我的主管要我使用贪婪近似算法(用于解决背包问题),以便将任务分配给特定节点。此外,节点并不仅限于使用一个特定的任务,应用程序是多线程的,并且可以处理对节点的多个请求。 – tensai