亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種numa架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng)及方法

文檔序號(hào):9921912閱讀:785來(lái)源:國(guó)知局
一種numa架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)體系結(jié)構(gòu)下的多線程性能優(yōu)化領(lǐng)域,更具體的,涉及一種NUMA架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng)及方法。
【背景技術(shù)】
[0002]非一致訪存(NUMA)架構(gòu)是目前流行的商用服務(wù)器架構(gòu)之一,它采用了分布式存儲(chǔ)器模式,且其中所有節(jié)點(diǎn)的處理器都可以訪問(wèn)全部的物理內(nèi)存,易于管理,可擴(kuò)充性好,因此得到了廣泛的應(yīng)用。
[0003]在NUMA架構(gòu)中,每個(gè)CPU訪問(wèn)的內(nèi)存可以分為兩種:與CPU在同一個(gè)節(jié)點(diǎn)的內(nèi)存稱(chēng)為本地內(nèi)存,訪問(wèn)延遲非常低;與CPU在不同節(jié)點(diǎn)上的內(nèi)存叫做遠(yuǎn)端內(nèi)存,對(duì)于遠(yuǎn)端內(nèi)存的訪問(wèn),CPU需要通過(guò)節(jié)點(diǎn)互聯(lián)的方式進(jìn)行,所以其訪問(wèn)延遲要比本地內(nèi)存的訪問(wèn)延遲長(zhǎng)。這種訪存延遲的不一致性是NUMA架構(gòu)的最主要特點(diǎn),但它卻給程序的調(diào)度和運(yùn)行帶來(lái)了困難,如果沒(méi)有得到合理的線程以及數(shù)據(jù)分配,那么很有可能導(dǎo)致該程序中所有的訪存操作都成為遠(yuǎn)端訪存,從而經(jīng)歷較大的訪存延遲,程序運(yùn)行時(shí)間大大延長(zhǎng),使程序的性能大打折扣。當(dāng)然,這些由于遠(yuǎn)端訪存造成的延遲可以通過(guò)系統(tǒng)仔細(xì)地將程序的線程和它所用的數(shù)據(jù)協(xié)同調(diào)度進(jìn)一步減少或消除。
[0004]針對(duì)程序在NUMA架構(gòu)下運(yùn)行的特殊性,目前已經(jīng)提出了一些NUMA感知的調(diào)度算法。大部分NUMA感知的調(diào)度算法僅是針對(duì)單個(gè)線程,或者針對(duì)多個(gè)線程時(shí)僅單純地將各個(gè)線程獨(dú)立開(kāi)來(lái)考慮,并沒(méi)有考慮到多線程并行時(shí)的同步問(wèn)題。
[0005]對(duì)于運(yùn)行過(guò)程中存在線程同步操作的多線程程序,在NUMA架構(gòu)下運(yùn)行時(shí)需要考慮各個(gè)線程的運(yùn)行速度問(wèn)題,如果在需要達(dá)到同步的線程中存在一些線程,由于執(zhí)行的遠(yuǎn)端訪存較多,導(dǎo)致運(yùn)行速度慢,那么該線程成為了拖累程序運(yùn)行速度的關(guān)鍵線程,這個(gè)時(shí)候?yàn)榱藴p少其他線程遠(yuǎn)端訪存所做的工作,其對(duì)于最終程序所表現(xiàn)出來(lái)的整體性能并不能有很好的提高?,F(xiàn)有的針對(duì)NUMA架構(gòu)下程序運(yùn)行性能的優(yōu)化工具中,缺乏針對(duì)多線程之間訪存延遲均衡這一問(wèn)題的優(yōu)化方式。相應(yīng)地,本領(lǐng)域亟需尋找一種適用于NUMA架構(gòu)下平衡多線程訪存延遲的方法。

【發(fā)明內(nèi)容】

[0006]針對(duì)現(xiàn)有技術(shù)的以上缺陷或不足,本發(fā)明提出一種NUMA架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng)及方法。利用本發(fā)明中的系統(tǒng)及方法,相應(yīng)能夠有效解決由于NUMA架構(gòu)下訪存行為的非一致性導(dǎo)致的多線程程序各線程間訪存延遲的不一致問(wèn)題,顯著提高了 NUMA架構(gòu)下分析調(diào)度的實(shí)時(shí)性,大大優(yōu)化了 NUMA架構(gòu)下程序運(yùn)行性能。
[0007]為實(shí)現(xiàn)上述目的,本發(fā)明一種NUMA架構(gòu)下平衡多線程間訪存延遲的調(diào)度系統(tǒng),其特征在于,所述系統(tǒng)包括檢測(cè)模塊、采樣模塊、分析模塊、判斷模塊和調(diào)度模塊,其中,
[0008]檢測(cè)模塊,用于探測(cè)程序是否進(jìn)入多線程并行執(zhí)行區(qū)域,還用于在探測(cè)程序進(jìn)入多線程并行執(zhí)行區(qū)域后,啟動(dòng)采樣模塊;
[0009]采樣模塊,用于對(duì)多線程程序運(yùn)行過(guò)程中每個(gè)線程的訪存行為進(jìn)行采樣,并將采樣過(guò)程中獲取的訪存信息保存;
[0010]分析模塊,一方面用于根據(jù)所述采樣模塊獲取的訪存信息,定期對(duì)所述多線程程序中各線程的訪存延遲不平衡度進(jìn)行評(píng)估,還用于針對(duì)發(fā)生不平衡現(xiàn)象的多線程程序進(jìn)行訪存行為分析,此外,所述分析模塊還用于根據(jù)所述采樣模塊獲取的訪存信息進(jìn)行訪存規(guī)律分析;
[0011]判斷模塊,用于根據(jù)所述訪存延遲不平衡度判斷是否發(fā)生多線程間訪存延遲不平衡現(xiàn)象,同時(shí),還用于在訪存延遲不平衡現(xiàn)象發(fā)生時(shí)進(jìn)一步判斷線程訪問(wèn)變量是否僅由一個(gè)線程訪問(wèn)、線程訪問(wèn)變量與訪問(wèn)該變量的線程是否處于同一個(gè)節(jié)點(diǎn)及線程訪問(wèn)變量大小是否小于第二閾值Size,此外,所述判斷模塊,還用于判斷程序多線程并行執(zhí)行的區(qū)域是否結(jié)束;
[0012]調(diào)度模塊,用于根據(jù)所述分析模塊的訪存行為分析和訪問(wèn)規(guī)律分析,及判斷模塊的判斷結(jié)果對(duì)遠(yuǎn)端訪存的線程訪問(wèn)變量進(jìn)行迀移調(diào)度至線程所在節(jié)點(diǎn)或使用交錯(cuò)存放將其平均分配到各節(jié)點(diǎn)上。
[0013]作為進(jìn)一步優(yōu)選的,所述訪存信息包括發(fā)起訪存行為的線程ID,訪存行為的目的地址,完成訪存行為所耗費(fèi)的時(shí)鐘周期數(shù)和訪存行為的類(lèi)型。
[0014]作為進(jìn)一步優(yōu)選的,所述訪存延遲不平衡度具體為:
[001 5] ξτ= I DT-Davg I /Davg
[0016]其中,ξτ為線程T的訪存延遲不平衡度,Dt為線程T的平均訪存延遲,Davg為所有線程的平均訪存延遲。
[0017]作為進(jìn)一步優(yōu)選的,所述訪存行為分析具體包括:
[0018]根據(jù)所述采樣模塊獲取的訪存信息,估計(jì)每個(gè)線程訪問(wèn)變量的線程平均訪存延遲,并依次將線程平均訪存延遲最大的線程訪問(wèn)變量交由判斷模塊進(jìn)行處理。
[0019]作為進(jìn)一步優(yōu)選的,所述訪問(wèn)規(guī)律分析具體為:觀察多線程程序中每個(gè)線程訪問(wèn)變量中是否沒(méi)有被多個(gè)線程共同訪問(wèn)的線程訪問(wèn)變量子塊。
[0020]作為進(jìn)一步優(yōu)選的,所述采樣模塊還用于保存采樣過(guò)程中為線程訪問(wèn)數(shù)據(jù)分配的內(nèi)存大小及分配的內(nèi)存地址。
[0021]按照本發(fā)明的另一個(gè)方面,提出了一種基于上述系統(tǒng)的NUMA架構(gòu)下平衡多線程間訪存延遲調(diào)度系統(tǒng)的調(diào)度方法,其特征在于,包括以下步驟:
[0022](I)檢測(cè)模塊檢測(cè)程序是否進(jìn)入多線程并行執(zhí)行區(qū)域,一旦發(fā)現(xiàn)程序處于多線程并行執(zhí)行區(qū)域,立即啟動(dòng)采樣模塊;
[0023](2)采樣模塊持續(xù)對(duì)程序的多線程訪存行為進(jìn)行采樣,并將采樣獲取的訪存信息根據(jù)線程ID進(jìn)行分類(lèi)并保存,根據(jù)訪存行為的時(shí)間順序?yàn)槊總€(gè)線程建立一個(gè)訪存事件流,并通過(guò)分析模塊不斷更新計(jì)算每個(gè)線程的平均訪存延遲;
[0024](3)分析模塊定期對(duì)各線程的訪存延遲不平衡度進(jìn)行評(píng)估;
[0025](4)通過(guò)判斷模塊判斷各線程的訪存延遲不平衡度是否大于第一閾值Threshhold;若是,則跳轉(zhuǎn)至步驟(5),否則,繼續(xù)執(zhí)行步驟(3);
[0026](5)分析模塊對(duì)多線程程序進(jìn)行訪存行為分析,根據(jù)估計(jì)的每個(gè)線程訪問(wèn)變量的線程平均訪存延遲,選取線程平均訪存延遲最大的線程訪問(wèn)變量,并將該線程訪問(wèn)變量交由判斷模塊進(jìn)行處理;
[0027](6)判斷模塊判斷所述線程訪問(wèn)變量是否僅由一個(gè)線程訪問(wèn),若是,則跳轉(zhuǎn)至步驟
(7),否則跳轉(zhuǎn)至步驟(8)。
[0028](7)判斷模塊進(jìn)一步判斷所述線程訪問(wèn)變量與訪問(wèn)該變量的線程是否處于同一個(gè)節(jié)點(diǎn),若是,則返回步驟(5)分析模塊依次選取下一個(gè)訪存延遲最大的線程訪問(wèn)變量進(jìn)行訪存行為分析,否則,調(diào)度模塊將該線程訪問(wèn)變量迀移至訪問(wèn)該變量的線程所在節(jié)點(diǎn);
[0029](8)判斷模塊進(jìn)一步判斷所述線程訪問(wèn)變量大小是否小于第二閾值Size,若是,則轉(zhuǎn)入步驟(9),否則轉(zhuǎn)入步驟(1);
[0030](9)將該線程訪問(wèn)變量復(fù)制分發(fā)到NUMA架構(gòu)下的各個(gè)節(jié)點(diǎn);
[0031](10)分析模塊根據(jù)所述采樣模塊獲取的訪存信息對(duì)多線程程序進(jìn)行訪問(wèn)規(guī)律分析,若所述線程訪問(wèn)變量中沒(méi)有被多個(gè)線程共同訪問(wèn)的線程訪問(wèn)變量子塊,則轉(zhuǎn)入步驟(10-1),否則轉(zhuǎn)入步驟(10-2);
[0032](10-1)將各線程訪問(wèn)的線程訪問(wèn)變量子塊分別存放到各線程所在的節(jié)點(diǎn);
[0033](10-2)通過(guò)交錯(cuò)存放將所述線程訪問(wèn)變量平均分配到NAMU架構(gòu)下的各個(gè)節(jié)點(diǎn)上;
[0034](11)判斷模塊判斷程序多線程并行執(zhí)行的區(qū)域是否結(jié)束,若否,則返回步驟(3)繼續(xù)執(zhí)行;否則調(diào)度結(jié)束。
[0035]作為進(jìn)一步優(yōu)選的,所述訪存信息包括發(fā)起訪存行為的線程ID,訪存行為的目的地址,完成訪存行為所耗費(fèi)的時(shí)鐘周期數(shù)和訪存行為的類(lèi)型。
[0036]作為進(jìn)一步優(yōu)選的,所述訪存延遲不平衡度具體為:
[0037]ξτ= I DT-Davg I /Davg
[0038]其中,ξτ為線程T的訪存延遲
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1