2013-05-10 37 views
1

,我應該禁用NUMA運行Windows Server 2008 R2 SP1。我正在運行的應用程序不是在考慮NUMA的情況下設計的。在我的雙路系統上禁用NUMA會更好嗎?我的猜測是肯定的,但我想證實。我的服務器是Westmere雙路系統。如果我的應用程序不是NUMA-Aware

回答

1

如果您的應用程序不是多線程的或者是多線程的,但並未使用線程在同一問題上同時工作(例如不是數據並行),那麼您可以簡單地將程序綁定到其中一個NUMA節點。這可以用各種工具完成,例如,在Windows任務管理器中使用「Set Affinity ...」上下文菜單命令。如果你的程序是並行的,那麼你仍然可以使用一半可用的進程核心並綁定到一個NUMA節點。

請注意,Westmere系統上的遠程內存訪問並不昂貴 - 延遲是本地訪問的1.6倍,且帶寬與本地訪問幾乎相同,因此如果您對每個內存值進行了大量處理影響會很小。另一方面,在這樣的系統上禁用NUMA會導致兩個NUMA域的細網格交錯,這使得所有應用程序的性能都差不多,因爲所有內存訪問的大約50%將是本地的,而50%將是遠程的。

1

如果我理解正確,開啓NUMA不會損害性能。

如果您的應用程序不支持NUMA,則訪問將由操作系統管理,因此可能跨越NUMA節點或可能位於同一個節點上 - 具體取決於操作系統具有的其他壓力,多少內存/重新使用等等。操作系統會盡力讓你的數據更快。

如果將它關閉,操作系統甚至不知道甚至嘗試將每個應用程序的執行CPU保持在其內存附近。

+0

當然,如果您的應用程序使用來自多個線程的單個巨大內存池,肯定會損害性能。此外,如果一個節點使用所有分配的RAM(即使其他節點有一些空閒的RAM),NUMA更有可能導致交換 – noonex 2014-11-14 08:37:57

+0

但是,不管是否在操作系統級別啓用NUMA,這都不適用? – mjaggard 2014-11-14 11:50:48

+0

我沒有嘗試NUMA基準測試,但從理論上看--NUMMA不尊重CPU之間共享的內存。同樣,如果所有的RAM都被其中一個NUMA節點佔用,並且其他節點擁有大量可用內存,則可能會發生交換。 – noonex 2014-11-15 16:50:30

相關問題