負(fù)載均衡的方法、裝置、叢集和眾核處理器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,并且更具體地,涉及一種負(fù)載均衡的方法、裝置、叢集和眾核處理器。
【背景技術(shù)】
[0002]在傳統(tǒng)的片上多處理器系統(tǒng)(on-ChipMultiple Processor System, CMPs)系統(tǒng)中,當(dāng)所需要的數(shù)據(jù)不在本地存儲(chǔ)中,本地線程將訪問(wèn)遠(yuǎn)端節(jié)點(diǎn),將數(shù)據(jù)通過(guò)片上網(wǎng)絡(luò)搬運(yùn)回本地,同時(shí)進(jìn)行數(shù)據(jù)的一致性維護(hù)。CMPs系統(tǒng)的功耗,主要由節(jié)點(diǎn)間的數(shù)據(jù)交互,以及數(shù)據(jù)一致性維護(hù)產(chǎn)生的數(shù)據(jù)通信開(kāi)銷(Traffic)構(gòu)成。為了降低CMPs系統(tǒng)的功耗,提高CMPs系統(tǒng)的性能,當(dāng)線程執(zhí)行所需的數(shù)據(jù)不在本地,并且該線程需要對(duì)數(shù)據(jù)進(jìn)行連續(xù)或者頻繁得訪問(wèn)時(shí),通過(guò)將線程遷移到數(shù)據(jù)所在的核上,可以大大減少片上的Traffic。
[0003]大部分硬件級(jí)的線程遷移產(chǎn)生的Traffic以及延遲都低于傳統(tǒng)的遠(yuǎn)端節(jié)點(diǎn)訪問(wèn)。通過(guò)線程遷移可以大大減少片上的Traffic。
[0004]眾核處理器中,包括多個(gè)叢集(Cluster),每個(gè)Cluster由多個(gè)處理器核互連構(gòu)成,并且處理器核與處理器核之間維護(hù)緩存一致性的架構(gòu)。處理器核也被稱為內(nèi)核或核(core),是CPU最重要的組成部分,CPU所有的計(jì)算、接收/存儲(chǔ)命令、處理數(shù)據(jù)都由處理器核執(zhí)行。各種CPU處理器核都具有固定的邏輯結(jié)構(gòu),一級(jí)緩存、二級(jí)緩存、執(zhí)行單元、指令級(jí)單元和總線接口等。
[0005]現(xiàn)有的眾核處理器負(fù)載均衡策略中,操作系統(tǒng)按處理器核,將底層的處理器資源劃分為多個(gè)調(diào)度域,每個(gè)調(diào)度域可包括多個(gè)處理器核,然后根據(jù)設(shè)置的調(diào)度域失衡閾值和處理器核失衡閾值,判斷調(diào)度域之間及調(diào)度域內(nèi)是否負(fù)載失衡,其中,調(diào)度域失衡閾值用于判斷調(diào)度域之間是否負(fù)載失衡,處理器核失衡閾值用于判斷調(diào)度域內(nèi)的處理器核是否負(fù)載失衡。由于需要通過(guò)操作系統(tǒng)進(jìn)行監(jiān)控調(diào)度,線程遷移的延遲較大,系統(tǒng)性能還有待提高。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種負(fù)載均衡的方法、裝置、叢集和眾核處理器,通過(guò)細(xì)粒度的硬件線程遷移來(lái)簡(jiǎn)單快速地實(shí)現(xiàn)Cluster內(nèi)的負(fù)載均衡,可以減小線程遷移的延遲,加速數(shù)據(jù)處理,提高眾核處理器系統(tǒng)的系統(tǒng)性能。
[0007]第一方面,提供了一種硬件線程負(fù)載均衡的方法,應(yīng)用于眾核處理器內(nèi)的叢集Cluster,該方法包括:獲取該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,該處理器核的負(fù)載量由該處理器核的至少一種待執(zhí)行線程確定;根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核和第二處理器核,其中,該第一處理器核為待遷出線程的處理器核,該第二處理器核為待遷入線程的處理器核;將該第一處理器核中的一個(gè)或多個(gè)待執(zhí)行線程遷入到該第二處理器核中。
[0008]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核和第二處理器核具體實(shí)現(xiàn)為:根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,確定該多個(gè)處理器核之間的負(fù)載差值,并且當(dāng)該多個(gè)處理器核中兩個(gè)處理器核的負(fù)載差值大于第一預(yù)定閾值時(shí),確定該兩個(gè)處理器核中負(fù)載量高的處理器核為該第一處理器核,該兩個(gè)處理器核中負(fù)載量低的處理器核為該第二處理器核。
[0009]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核和第二處理器核具體實(shí)現(xiàn)為:根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核,該第一處理器核的負(fù)載量大于第二預(yù)定閾值;向該多個(gè)處理器核中第一處理器核以外的其它處理器核發(fā)送線程遷出請(qǐng)求,該線程遷出請(qǐng)求攜帶該第一處理器核的負(fù)載量;接收該多個(gè)處理器核中第一處理器核以外的其它處理器核根據(jù)自身的負(fù)載量與該第一處理器核的負(fù)載量反饋的應(yīng)答信號(hào),該應(yīng)答信號(hào)用于指示接收到該線程遷出請(qǐng)求的處理器核是否具備遷入線程的能力;根據(jù)該多個(gè)處理器核中第一處理器核以外的其它處理器核反饋的應(yīng)答信號(hào)確定第二處理器核,其中,該第二處理器核反饋的應(yīng)答信號(hào)指示該第二處理器核具備遷入線程的能力。
[0010]結(jié)合第一方面,在第三種可能的實(shí)現(xiàn)方式中,根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核和第二處理器核具體實(shí)現(xiàn)為:根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第二處理器核,該第二處理器核的負(fù)載量小于第三預(yù)定閾值;向該多個(gè)處理器核中第二處理器核以外的其它處理器核發(fā)送線程遷入請(qǐng)求,該線程遷入請(qǐng)求攜帶該第二處理器核的負(fù)載量;接收該多個(gè)處理器核中第二處理器核以外的其它處理器核根據(jù)自身的負(fù)載量與該第二處理器核的負(fù)載量反饋的應(yīng)答信號(hào),該應(yīng)答信號(hào)用于指示收到該線程遷入請(qǐng)求的處理器核是否需要遷出線程;根據(jù)該多個(gè)處理器核中第二核以外的其它處理器核反饋的應(yīng)答信號(hào)確定第一處理器核,其中,該第一處理器核反饋的應(yīng)答信號(hào)指示該第一處理器核需要遷出線程。
[0011]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第一方面的第四種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,具體實(shí)現(xiàn)為:該處理器核的至少一種待執(zhí)行線程中,不同類型的待執(zhí)行線程在該處理器核的負(fù)載量中具有不同的加權(quán)系數(shù)。
[0012]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第一方面的第五種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,具體實(shí)現(xiàn)為:該處理器核的至少一種待執(zhí)行線程包括以下至少一種線程:該處理器核的遷入線程、該處理器核的本地線程。
[0013]第二方面,提供了一種硬件線程負(fù)載均衡的裝置,位于眾核處理器內(nèi)的叢集Cluster,該裝置包括:獲取單元,用于獲取該裝置所在的Cluster中的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,該處理器核的負(fù)載量由該處理器核的至少一種待執(zhí)行線程確定;確定單兀,用于根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核和第二處理器核,其中,該第一處理器核為待遷出線程的處理器核,該第二處理器核為待遷入線程的處理器核;線程遷移單元,用于將該第一處理器核中的一個(gè)或多個(gè)待執(zhí)行線程遷入到該第二處理器核中。
[0014]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,該確定單元具體用于:根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,確定該多個(gè)處理器核之間的負(fù)載差值,并且當(dāng)該多個(gè)處理器核中兩個(gè)處理器核的負(fù)載差值大于第一預(yù)定閾值時(shí),確定該兩個(gè)處理器核中負(fù)載量高的處理器核為該第一處理器核,該兩個(gè)處理器核中負(fù)載量低的處理器核為該第二處理器核。
[0015]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,該裝置還包括接收單元和發(fā)送單元,該確定單兀具體用于根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第一處理器核,該第一處理器核的負(fù)載量大于第二預(yù)定閾值;該發(fā)送單元用于向該多個(gè)處理器核中第一處理器核以外的其它處理器核發(fā)送線程遷出請(qǐng)求,該線程遷出請(qǐng)求攜帶該第一處理器核的負(fù)載量;該接收單元用于接收該多個(gè)處理器核中第一處理器核以外的其它處理器核根據(jù)自身的負(fù)載量與該第一處理器核的負(fù)載量反饋的應(yīng)答信號(hào),該應(yīng)答信號(hào)用于指示接收到該線程遷出請(qǐng)求的處理器核是否具備遷入線程的能力;該確定單元具體還用于根據(jù)該多個(gè)處理器核中第一處理器核以外的其它處理器核反饋的應(yīng)答信號(hào)確定第二處理器核,其中,該第二處理器核反饋的應(yīng)答信號(hào)指示該第二處理器核具備遷入線程的能力。
[0016]結(jié)合第二方面,在第三種可能的實(shí)現(xiàn)方式中,該裝置還包括接收單元和發(fā)送單元,該確定單兀具體用于根據(jù)該Cluster的多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量確定第二處理器核,該第二處理器核的負(fù)載量小于第三預(yù)定閾值;該發(fā)送單元用于向該多個(gè)處理器核中第二處理器核以外的其它處理器核發(fā)送線程遷入請(qǐng)求,該線程遷入請(qǐng)求攜帶該第二處理器核的負(fù)載量;該接收單元用于接收該多個(gè)處理器核中第二處理器核以外的其它處理器核根據(jù)自身的負(fù)載量與該第二處理器核的負(fù)載量反饋的應(yīng)答信號(hào),該應(yīng)答信號(hào)用于指示收到該線程遷入請(qǐng)求的處理器核是否需要遷出線程;該確定單元具體還用于根據(jù)該多個(gè)處理器核中第二核以外的其它處理器核反饋的應(yīng)答信號(hào)確定第一處理器核,其中,該第一處理器核反饋的應(yīng)答信號(hào)指示該第一處理器核需要遷出線程。
[0017]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二方面的第三種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,具體實(shí)現(xiàn)為:該處理器核的至少一種待執(zhí)行線程中,不同類型的待執(zhí)行線程在該處理器核的負(fù)載量中具有不同的加權(quán)系數(shù)。
[0018]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二方面的第四種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,具體實(shí)現(xiàn)為:該處理器核的至少一種待執(zhí)行線程包括以下至少一種線程:該處理器核的遷入線程、該處理器核的本地線程。
[0019]第三方面,提出了一種眾核處理器的叢集,該叢集所在的眾核處理器包括多個(gè)該叢集,該叢集包括路由器和多個(gè)處理器核,該多個(gè)處理器核連接到該路由器,其中,該路由器用于:獲取多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,其中,該處理器核的負(fù)載值由該處理器核的至少一種待執(zhí)行線程確定;根據(jù)該多個(gè)處理器核中每一個(gè)處理器核的負(fù)載量,確定第一處理器核和第二處理器核,其中,該第一處理器核為待遷出線程的處理器核,該第二處理器核為待遷入線程的處理器核;將該第一處理器核中的一個(gè)或多個(gè)待執(zhí)行線程遷入到該第二處理器核中。
[0020]第四方面,提出了一種眾核處理器,包括多個(gè)叢集Cluster,該Cluster包括第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二方面的第五種可能的實(shí)現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式中的硬件線程負(fù)載均衡裝置,或者該Cluster為第三方面中的叢集。
[0021]基于以上技術(shù)方案,本發(fā)明實(shí)施例的負(fù)載均衡的方法、裝置、叢集和眾核處理器,通過(guò)細(xì)粒度的硬件線程遷移來(lái)簡(jiǎn)單快速地實(shí)現(xiàn)Cluster內(nèi)的負(fù)載均衡,提高了 Cluster內(nèi)線程的并行度,降低了線程執(zhí)行的平均等待時(shí)間,提高了眾核處理器系統(tǒng)的系統(tǒng)性能。
【附圖說(shuō)明】
[0022]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0023]圖1是本發(fā)明實(shí)施例的眾核結(jié)構(gòu)示意圖。
[0024]圖2是本發(fā)明實(shí)施例叢集內(nèi)硬件線程負(fù)載均衡方法流程圖。
[0025]圖3是本發(fā)明實(shí)施例叢集內(nèi)線程遷移場(chǎng)景示意圖。
[0026]圖4是本發(fā)明實(shí)施例硬件線程負(fù)載均衡裝置的結(jié)構(gòu)示意圖。<