2010-09-17 94 views
2

我們的應用程序是:NUMA內存區域的分配7

  1. 硬件配置運行Windows 7/64位雙至強服務器。每個Xeon在[NUMA] [1]配置中都有自己的12GB內存,並且有一個連接兩個內存區域的橋接器。
  2. 所有軟件都是使用VS2008編寫的,並編譯爲64位應用程序。
  3. 新一代應用程序會創建一個大型共享內存(4-6gb)區域,該區域只會被具有處理器親和性的進程訪問,以便在第一個Xeon處理器上運行。
  4. 接收應用程序創建一個較大的共享內存區域(2-4GB),主要由具有處理器關聯性的進程集使用,以在第二個Xeon處理器上運行。但是,當Generation App完成構建一組數據(32mb到128mb)時,它會將該信息傳輸到在此Xeon上運行的共享內存區域。
  5. 我們使用Boost Interprocess庫來管理我們的共享內存區域。

我的問題是,當創建它的共享內存區域的每個進程,Windows是否在創建它的同一個Xeon芯片上分配該內存?還是應該使用Numa內存功能之一將內存明確分配給特定的Xeon芯片?


編輯 - 幫助澄清NUMA是,從維基百科 -

非一致內存訪問或 非統一內存架構(NUMA) 是 多處理器使用的計算機內存設計,其中存儲器訪問時間取決於相對於處理器的存儲器位置 位置。 在NUMA下,處理器可以比處理器之間的處理器之間的其他處理器或存儲器共享 更快地訪問其本地存儲器,比本地存儲器本地存儲器 更快。

鏈接是http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access瞭解更多詳情。對我而言,隨着多處理越來越普遍,我們將不得不更多地瞭解這些內容。

[1]:http://msdn.microsoft.com/en-us/library/aa363804%28VS.85%29.aspxbetween處理器。

+0

我不知道這個話題蹲下,但我不明白如何給操作系統更多關於你的內存使用模式的信息會損害任何東西。 – 2010-09-17 16:58:12

+0

我也不知道蹲下來,所以+1。一個問題:「在創建它的同一個Xeon芯片上分配內存是什麼意思?」 – 2010-09-17 18:26:57

回答

1

Windows將爲請求線程分配本地內存;但是,本地不是由Microsoft指定的。 Local可以是三個選項之一:線程的理想處理器,線程的處理器關聯掩碼或線程的當前處理器(我忘記了當前的實現是什麼)。

本質上,答案是肯定的;然而,一個常見的問題是從一個「不受控制的控制器線程」分配所有內存,因此內存靠近控制器,而不是具有特定相關性的線程。

+1

在研究不同問題的答案時,我在WinHEC上發現了一個演示,聲明Windows現在使用IdealProcessor。 http://download.microsoft.com/download/a/f/d/afdfd50d-6eb9-425e-84e1-b4085a80e34e/SVR-T331_WH07.pptx – Brian 2010-09-28 18:37:31