正文

基于任務(wù)的程序設(shè)計(jì)(20)

C#并行編程高級(jí)教程 作者:(美)Gastón C.Hillar


使用NUMA架構(gòu)的計(jì)算機(jī)具有不只一個(gè)系統(tǒng)總線。每個(gè)可用的系統(tǒng)總線都由一組處理器使用。因此,每組處理器都可以訪問(wèn)自己的內(nèi)存和I/O通道。如前所述,通過(guò)合適的協(xié)調(diào)機(jī)制,每組處理器也能夠訪問(wèn)其他組處理器所擁有的內(nèi)存。然而,訪問(wèn)外部NUMA節(jié)點(diǎn)的內(nèi)存顯然比訪問(wèn)通過(guò)本地系統(tǒng)總線就能訪問(wèn)的內(nèi)存(即NUMA節(jié)點(diǎn)自己的內(nèi)存)的開(kāi)銷(xiāo)要大。

NUMA硬件需要特別的優(yōu)化。應(yīng)用程序必須能夠感知NUMA硬件及其配置。通過(guò)這種方式,應(yīng)用程序才能在同一個(gè)NUMA節(jié)點(diǎn)內(nèi)運(yùn)行需要訪問(wèn)相似的內(nèi)存區(qū)域的并發(fā)任務(wù)和線程。應(yīng)用程序必須避免昂貴的內(nèi)存訪問(wèn),必須在考慮內(nèi)存需要的前提下優(yōu)先使用并發(fā)。

Windows 7和Windows Server 2008 R2引入了前面提到的處理器組的概念。線程、進(jìn)程和中斷可以指定在某一個(gè)內(nèi)核、處理器、節(jié)點(diǎn)或組上執(zhí)行操作的偏好。然而,在TPC和C#中都不支持這么底層的定義。TPL對(duì)NUMA做了優(yōu)化,能夠盡可能地在最合適的內(nèi)核上運(yùn)行支持并行的線程,并且能夠盡可能地使用本地內(nèi)存。因此,您編寫(xiě)的并行化代碼能夠天然地支持NUMA,當(dāng)然,當(dāng)支持并行化代碼的線程必須訪問(wèn)外部NUMA節(jié)點(diǎn)的時(shí)候,您仍然會(huì)面臨一些不希望發(fā)生的性能問(wèn)題。

Coreinfo是一個(gè)簡(jiǎn)單且功能強(qiáng)大的命令行工具,這個(gè)工具可以提供有關(guān)處理器、組織結(jié)構(gòu)和高速緩存拓?fù)涞姆浅S杏玫男畔?。這個(gè)工具可以顯示邏輯處理器(或硬件線程)和物理內(nèi)核之間的映射關(guān)系。此外,還能顯示NUMA節(jié)點(diǎn)、組、插槽以及所有級(jí)別的高速緩存。在運(yùn)行性能測(cè)試之前,可以方便地保存底層硬件的信息,然后可以通過(guò)性能測(cè)試判斷NUMA架構(gòu)是否會(huì)導(dǎo)致性能問(wèn)題。Coreinfo v2.0可以在 http://technet.microsoft.com/en-us/ sysinternals/cc835722.aspx下載到。下載后,解壓可執(zhí)行文件,然后就可以在命令行(Start | All Programs | Accessories | Command Prompt)中運(yùn)行這個(gè)工具。

這個(gè)實(shí)用工具通過(guò)GetLogicalProcessorInformation Windows API獲得所有信息并將其顯示在屏幕上。程序清單1-1展示了在一臺(tái)單Intel Core i7微處理器的計(jì)算機(jī)上運(yùn)行CoreInfo v2.0的結(jié)果。在Logical to Physical Processor Map區(qū)域中可以看出,這里具有一個(gè)插槽,插槽上有4個(gè)物理內(nèi)核。然而,由于這個(gè)CPU提供了Intel Hyper-Threading Technology,因此Coreinfo提示了Hyperthreaded。Coreinfo通過(guò)星號(hào)(*)表示映射關(guān)系。這個(gè)例子有4個(gè)物理內(nèi)核,每個(gè)物理內(nèi)核帶有兩個(gè)硬件線程,因此用兩個(gè)星號(hào)表示(**)。此外,還有一個(gè)統(tǒng)一的8MB三級(jí)高速緩存。8個(gè)硬件線程共享這個(gè)緩存,因此Coreinfo在Logical Processor to Cache Map區(qū)域最后一行左側(cè)顯示了8個(gè)星號(hào)(********),表示這個(gè)緩存映射到所有硬件線程及其物理內(nèi)核。

 


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)