我建立了一個4核(2GHz)和16核(1.8GHz)虛擬機的集羣。集羣的創建和連接沒有問題。但是現在我想對集羣進行一些深入的瞭解,我發現這兩個虛擬機的性能使用情況分佈不均勻。具有4個內核的那個總是處於100%CPU使用率,而16核心機器大部分時間處於空閒狀態。H2O簇性能使用情況分佈不均勻
在集羣生成期間是否必須進行其他配置?因爲對我來說,這兩個更強大的機器是空閒的,而較弱的機器完成所有的工作對我來說很奇怪。
最好的問候, 馬庫斯
我建立了一個4核(2GHz)和16核(1.8GHz)虛擬機的集羣。集羣的創建和連接沒有問題。但是現在我想對集羣進行一些深入的瞭解,我發現這兩個虛擬機的性能使用情況分佈不均勻。具有4個內核的那個總是處於100%CPU使用率,而16核心機器大部分時間處於空閒狀態。H2O簇性能使用情況分佈不均勻
在集羣生成期間是否必須進行其他配置?因爲對我來說,這兩個更強大的機器是空閒的,而較弱的機器完成所有的工作對我來說很奇怪。
最好的問候, 馬庫斯
兩件事情要記住這裏。
您的數據需要足夠大以利用數據並行性。特別是,每列的塊數需要足夠大,以便所有內核都有工作要做。看到這個答案的更多細節:H2O not working on parallel
H2O-3假設你的節點是對稱的。它不會嘗試基於節點的功能在整個集羣中平衡工作。更快的節點將首先完成他們的工作,並等待較慢的節點趕上。 (你可以看到這個同樣的效果,如果你有兩個對稱的節點,但其中一人正忙於另一個進程。)
不對稱是內存(其中較小的節點可運行的內存和完全失敗更大的問題)比CPU(其中一些節點正在等待的時間)多。因此,始終確保使用相同的值-Xmx
啓動每個H2O節點。
您可以通過-nthreads
選項限制H2O使用的核心數量。所以你可以嘗試給你的兩個節點-nthreads 4
,看看它們是否更加對稱,每個節點使用大概四個內核。在你描述的情況下,這意味着較小的機器大約100%被利用,更大的機器大約被利用25%。 (但由於兩臺機器可能有不同的芯片,核心可能不完全相同,不會完全平衡,這是行不通的。)
[我完全忽略了虛擬化方面,但CPU份額也可以進入這取決於你的虛擬機管理程序的配置。]
假設你沒有數據綁定(即假設你所有的數據都適合在更大的機器上),在這種情況下,你將獲得更好的性能,只需使用16核機器。我強烈懷疑它也會比嘗試更復雜的想法更快,比如將16核機器拆分爲4x4核心機器並擁有5個節點的集羣。 –