估計的每個線程訪問變量的線程平均訪存延遲,選取線程平均訪存延遲最大的線程訪問變量,并將該線程訪問變量交由判斷模塊進行處理;
[0070](6)判斷模塊判斷所述線程訪問變量是否僅由一個線程訪問,若是,則跳轉(zhuǎn)至步驟
(7),否則跳轉(zhuǎn)至步驟(8)。
[0071](7)判斷模塊進一步判斷所述線程訪問變量與訪問該變量的線程是否處于同一個節(jié)點,若是,則返回步驟(5)分析模塊依次選取下一個訪存延遲最大的線程訪問變量進行訪存行為分析,否則,調(diào)度模塊將該線程訪問變量迀移至訪問該變量的線程所在節(jié)點;
[0072](8)判斷模塊進一步判斷所述線程訪問變量大小是否小于第二閾值Size(該值可取所用系統(tǒng)一次訪存讀取的數(shù)據(jù)大小),若是,則轉(zhuǎn)入步驟(9),否則轉(zhuǎn)入步驟(10);
[0073](9)將該線程訪問變量復(fù)制分發(fā)到NUMA架構(gòu)下的各個節(jié)點;
[0074](10)分析模塊根據(jù)所述采樣模塊獲取的訪存信息對多線程程序進行訪問規(guī)律分析,若所述線程訪問變量中沒有被多個線程共同訪問的線程訪問變量子塊,則轉(zhuǎn)入步驟(10-1),否則轉(zhuǎn)入步驟(10-2);
[0075](10-1)將各線程訪問的線程訪問變量子塊分別存放到各線程所在的節(jié)點;
[0076](10-2)通過交錯存放將所述線程訪問變量平均分配到NAMU架構(gòu)下的各個節(jié)點上,避免訪存集中而導(dǎo)致的線程訪存延遲不平衡的現(xiàn)象;
[0077](11)判斷模塊判斷程序多線程并行執(zhí)行的區(qū)域是否結(jié)束,若否,則返回步驟(3)繼續(xù)執(zhí)行;否則調(diào)度結(jié)束,進一步觀察是否仍有訪存延遲不平衡的現(xiàn)象。
[0078]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種NUMA架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng),其特征在于,所述系統(tǒng)包括檢測模塊、采樣模塊、分析模塊、判斷模塊和調(diào)度模塊,其中, 檢測模塊,用于探測程序是否進入多線程并行執(zhí)行區(qū)域,還用于在探測程序進入多線程并行執(zhí)行區(qū)域后,啟動采樣模塊; 采樣模塊,用于對多線程程序運行過程中每個線程的訪存行為進行采樣,并將采樣過程中獲取的訪存信息保存; 分析模塊,一方面用于根據(jù)所述采樣模塊獲取的訪存信息,定期對所述多線程程序中各線程的訪存延遲不平衡度進行評估,還用于針對發(fā)生不平衡現(xiàn)象的多線程程序進行訪存行為分析,此外,所述分析模塊還用于根據(jù)所述采樣模塊獲取的訪存信息進行訪存規(guī)律分析; 判斷模塊,用于根據(jù)所述訪存延遲不平衡度判斷是否發(fā)生多線程間訪存延遲不平衡現(xiàn)象,同時,還用于在訪存延遲不平衡現(xiàn)象發(fā)生時進一步判斷線程訪問變量是否僅由一個線程訪問、線程訪問變量與訪問該變量的線程是否處于同一個節(jié)點及線程訪問變量大小是否小于第二閾值Size,此外,所述判斷模塊,還用于判斷程序多線程并行執(zhí)行的區(qū)域是否結(jié)束; 調(diào)度模塊,用于根據(jù)所述分析模塊的訪存行為分析和訪問規(guī)律分析,及判斷模塊的判斷結(jié)果對遠端訪存的線程訪問變量進行迀移調(diào)度至線程所在節(jié)點或使用交錯存放將其平均分配到各節(jié)點上。2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述訪存信息包括發(fā)起訪存行為的線程ID,訪存行為的目的地址,完成訪存行為所耗費的時鐘周期數(shù)和訪存行為的類型。3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述訪存延遲不平衡度具體為: ξτ= I DT-Davg I /Davg 其中,ξτ為線程T的訪存延遲不平衡度,Dt為線程T的平均訪存延遲,Davg為所有線程的平均訪存延遲。4.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述訪存行為分析具體包括: 根據(jù)所述采樣模塊獲取的訪存信息,估計每個線程訪問變量的線程平均訪存延遲,并依次將線程平均訪存延遲最大的線程訪問變量交由判斷模塊進行處理。5.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述訪問規(guī)律分析具體為:觀察多線程程序中每個線程訪問變量中是否沒有被多個線程共同訪問的線程訪問變量子塊。6.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述采樣模塊還用于保存采樣過程中為線程訪問數(shù)據(jù)分配的內(nèi)存大小及分配的內(nèi)存地址。7.—種基于權(quán)利要求1-6任一項的NUMA架構(gòu)下平衡多線程間訪存延遲調(diào)度系統(tǒng)的調(diào)度方法,其特征在于,包括以下步驟: (1)檢測模塊檢測程序是否進入多線程并行執(zhí)行區(qū)域,一旦發(fā)現(xiàn)程序處于多線程并行執(zhí)行區(qū)域,立即啟動采樣模塊; (2)采樣模塊持續(xù)對程序的多線程訪存行為進行采樣,并將采樣獲取的訪存信息根據(jù)線程ID進行分類并保存,根據(jù)訪存行為的時間順序為每個線程建立一個訪存事件流,并通過分析模塊不斷更新計算每個線程的平均訪存延遲; (3)分析模塊定期對各線程的訪存延遲不平衡度進行評估; (4)通過判斷模塊判斷各線程的訪存延遲不平衡度是否大于第一閾值Threshhold;若是,則跳轉(zhuǎn)至步驟(5),否則,繼續(xù)執(zhí)行步驟(3); (5)分析模塊對多線程程序進行訪存行為分析,根據(jù)估計的每個線程訪問變量的線程平均訪存延遲,選取線程平均訪存延遲最大的線程訪問變量,并將該線程訪問變量交由判斷模塊進行處理; (6)判斷模塊判斷所述線程訪問變量是否僅由一個線程訪問,若是,則跳轉(zhuǎn)至步驟(7),否則跳轉(zhuǎn)至步驟(8)。 (7)判斷模塊進一步判斷所述線程訪問變量與訪問該變量的線程是否處于同一個節(jié)點,若是,則返回步驟(5)分析模塊依次選取下一個訪存延遲最大的線程訪問變量進行訪存行為分析,否則,調(diào)度模塊將該線程訪問變量迀移至訪問該變量的線程所在節(jié)點; (8)判斷模塊進一步判斷所述線程訪問變量大小是否小于第二閾值Size,若是,則轉(zhuǎn)入步驟(9),否則轉(zhuǎn)入步驟(10); (9)將該線程訪問變量復(fù)制分發(fā)到NUMA架構(gòu)下的各個節(jié)點; (10)分析模塊根據(jù)所述采樣模塊獲取的訪存信息對多線程程序進行訪問規(guī)律分析,若所述線程訪問變量中沒有被多個線程共同訪問的線程訪問變量子塊,則轉(zhuǎn)入步驟(10-1),否則轉(zhuǎn)入步驟(10-2); (10-1)將各線程訪問的線程訪問變量子塊分別存放到各線程所在的節(jié)點; (10-2)通過交錯存放將所述線程訪問變量平均分配到NAMU架構(gòu)下的各個節(jié)點上; (11)判斷模塊判斷程序多線程并行執(zhí)行的區(qū)域是否結(jié)束,若否,則返回步驟(3)繼續(xù)執(zhí)行;否則調(diào)度結(jié)束。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述訪存信息包括發(fā)起訪存行為的線程ID,訪存行為的目的地址,完成訪存行為所耗費的時鐘周期數(shù)和訪存行為的類型。9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,所述訪存延遲不平衡度具體為: ξτ= I DT-Davg I /Davg 其中,ξτ為線程T的訪存延遲不平衡度,Dt為線程T的平均訪存延遲,Davg為所有線程的平均訪存延遲。10.根據(jù)權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述采樣模塊還保存采樣過程中為線程訪問變量分配的內(nèi)存大小及分配的內(nèi)存地址。
【專利摘要】本發(fā)明公開了一種NUMA架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng)及方法,所述系統(tǒng)包括檢測模塊、采樣模塊、分析模塊、判斷模塊和調(diào)度模塊,通過采樣保存多線程程序運行過程中每個線程的訪存信息,預(yù)測分析該多線程程序中各線程的訪存延遲是否不平衡,根據(jù)分析結(jié)果進行合理的調(diào)度,對遠端訪存的線程訪問變量進行遷移調(diào)度至線程所在節(jié)點或使用交錯存放將其平均分配到各節(jié)點上,從而保證各線程的訪存延遲基本相等。本發(fā)明通過平衡多線程間訪存延遲的方式,優(yōu)化多線程程序在NUMA架構(gòu)下的運行性能,本發(fā)明通過一種細粒度,有針對性的方式進行實時調(diào)度,使多線程程序取得并行區(qū)域的性能優(yōu)化。
【IPC分類】G06F9/48
【公開號】CN105700946
【申請?zhí)枴緾N201610024295
【發(fā)明人】金海 , 廖小飛, 朱亮, 曾丹
【申請人】華中科技大學(xué)
【公開日】2016年6月22日
【申請日】2016年1月15日