2013-01-15 50 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