2010-01-24 21 views
2

從Win7/Server2008R2開始,GetNumaProximityNode(Ex)函數可用。它應該幫助檢索NUMA節點之間的距離,但我無法從文檔(http://msdn.microsoft.com/en-us/library/ms683206(VS.85).aspx)瞭解它應該如何工作。它說你給它一個距離,並且它返回相應的節點(如果有的話)。如何使用GetNumaProximityNode(Win7 +)?

閱讀從Linux內核和一些HP APIC文檔一些代碼,我看到距離在10(自我的距離是10)的整數倍數的表達,但它也可以蜜蜂像18(不正好兩個慢倍)。但我仍然無法弄清楚如何使用Windows API計算兩個節點之間的距離(在Linux下,libnuma具有一個「距離」功能)。

有誰知道如何使用這個功能?

回答

1

我找到了Windows的解決方案(雖然尚未測試)。距離可以在SLIT - System Locality Information Table(系統位置信息表)中找到 - 這是由OEM提供並可通過ACPI提供的擴展。它包含描述距離的N_CPU x N_CPU矩陣([1] [3]是節點1和節點3之間的距離; [Y] [Y]總是10;低於10無效)。

Windows Vista +具有GetSystemFirmwareTable方法,可用於檢索此表(似乎在XP下它可以從註冊表中檢索,但它更困難)。
該表的結構可以在ACPICA包中找到(http://www.acpica.org)。