本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種任務(wù)緩存空間監(jiān)測(cè)方法和裝置。
背景技術(shù):
在當(dāng)前的主流多核處理器架構(gòu)中,緩存資源是最主要的共享資源,在多個(gè)任務(wù)同時(shí)執(zhí)行時(shí)被共享。同時(shí),由于緩存本身的一些特性,如:高額懲罰,每當(dāng)任務(wù)需要讀取的數(shù)據(jù)行不在緩存都需要訪問(wèn)內(nèi)存去取回?cái)?shù)據(jù),而內(nèi)存存取和傳輸產(chǎn)生高延遲將堵塞該任務(wù)的執(zhí)行進(jìn)程;競(jìng)爭(zhēng)性資源,即一行數(shù)據(jù)要存入緩存行的前提是移除掉該行已經(jīng)存在的數(shù)據(jù),而如果有后續(xù)的對(duì)該移除的數(shù)據(jù)所進(jìn)行的訪問(wèn),將再次導(dǎo)致高時(shí)延的內(nèi)存訪問(wèn)。
任務(wù)對(duì)緩存空間的使用是隨著它們對(duì)緩存的訪問(wèn)產(chǎn)生的。具體來(lái)說(shuō),當(dāng)系統(tǒng)中只有單個(gè)任務(wù)執(zhí)行時(shí),該任務(wù)對(duì)處理器緩存的訪問(wèn)有兩種結(jié)果:如果數(shù)據(jù)已經(jīng)存在于緩存中,則該訪問(wèn)成功取到數(shù)據(jù),并且數(shù)據(jù)將繼續(xù)保存在原位置。反之,則是訪問(wèn)失效,需要進(jìn)行高時(shí)延的內(nèi)存訪問(wèn)取回?cái)?shù)據(jù)完成操作,而取回的數(shù)據(jù)也將存放于緩存中等待該任務(wù)下一次的調(diào)用。而該數(shù)據(jù)的存放,也將導(dǎo)致之前所存放的數(shù)據(jù)被移除。所以,一個(gè)任務(wù)對(duì)于緩存的實(shí)際使用空間,即是它實(shí)際存入緩存中數(shù)據(jù)所占緩存行的行數(shù)。
但是,在緩存被多個(gè)任務(wù)所共享的場(chǎng)景中,緩存的空間被多任務(wù)所共享。所以,各任務(wù)對(duì)緩存進(jìn)行訪問(wèn)時(shí),可分為三種情況:
1、當(dāng)一個(gè)任務(wù)的緩存訪問(wèn)命中的情況下,不涉及緩存行占有任務(wù)的改變,各任務(wù)的緩存使用空間不變;
2、當(dāng)一個(gè)任務(wù)的緩存訪問(wèn)失效,從內(nèi)存取回?cái)?shù)據(jù)放置入緩存后,移除的緩存行本就是該任務(wù)之前使用數(shù)據(jù)所占據(jù)的,則各任務(wù)的緩存使用空間仍然不變;
3、當(dāng)一個(gè)任務(wù)的緩存訪問(wèn)失效,從內(nèi)存取回?cái)?shù)據(jù)放置入緩存后,移除的緩存行是屬于其他任務(wù)的,則該任務(wù)的緩存使用空間增加一緩存行,而被移除數(shù)據(jù)的任務(wù)使用的緩存空間減少一緩存行。
目前存在大量的工作改進(jìn)對(duì)緩存的使用,但這些方法更多的集中于改進(jìn)緩存整體的性能和對(duì)任務(wù)性能影響的直接效果,而任務(wù)在緩存中所占空間這一關(guān)鍵性“中間問(wèn)題”還缺乏深入的研究。從緩存的訪問(wèn)模式可以推斷,當(dāng)一個(gè)任務(wù)在緩存中所占有空間越多,它之前存儲(chǔ)在緩存中的數(shù)據(jù)量也越大,成功取回?cái)?shù)據(jù)的概率也就越高。相反,所占空間少的任務(wù)更容易產(chǎn)生緩存失效。不僅如此,占用緩存空間大的任務(wù)還會(huì)對(duì)同時(shí)執(zhí)行的其他任務(wù)造成嚴(yán)重的干擾。所以,準(zhǔn)確的監(jiān)測(cè)各任務(wù)的緩存空間對(duì)于控制任務(wù)的性能,優(yōu)化多任務(wù)對(duì)于緩存的使用有實(shí)際和積極的意義。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種任務(wù)緩存空間監(jiān)測(cè)方法和裝置,能夠?qū)崿F(xiàn)動(dòng)態(tài)的對(duì)多核處理器中各個(gè)任務(wù)使用緩存空間的準(zhǔn)確監(jiān)測(cè)。
本發(fā)明實(shí)施例提供的一種任務(wù)緩存空間監(jiān)測(cè)方法,包括:
獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù);
獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間;
根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度;
根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間;
輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間。
可選地,所述根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間包括:
若U小于α,則通過(guò)預(yù)設(shè)的第一公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第一公式為:
若U大于等于α,則通過(guò)預(yù)設(shè)的第二公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第二公式為:
其中,上述的Ti(j)為當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,α為預(yù)設(shè)的使用度閾值,U為所述容量使用度,i為所述各個(gè)任務(wù)的標(biāo)號(hào),Mi為所述各個(gè)任務(wù)訪問(wèn)失效數(shù),Ai為所述各個(gè)任務(wù)的訪問(wèn)數(shù),j為當(dāng)前時(shí)間區(qū)間,j-1為上一時(shí)間區(qū)間,CTi(j-1)為在上一時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,C為所述緩存的總?cè)萘俊?/p>
可選地,所述根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度包括:
通過(guò)預(yù)設(shè)的第三公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度,所述第三公式為:其中,CTi為所述各個(gè)任務(wù)在上一時(shí)間區(qū)間內(nèi)累積使用的緩存歷史使用空間。
可選地,在根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間之后,還包括:
根據(jù)當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間。
可選地,根據(jù)當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間包括:
通過(guò)預(yù)設(shè)的第四公式計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,所述第四公式為:CTi(j)為在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,βj為與當(dāng)前時(shí)間區(qū)間對(duì)應(yīng)的預(yù)設(shè)的權(quán)重值。
可選地,上述的α、βj和N通過(guò)緩存訪問(wèn)模擬器在與所述緩存相同的緩存環(huán)境下輸入預(yù)設(shè)的訓(xùn)練數(shù)據(jù)進(jìn)行模擬訓(xùn)練得到。
可選地,在獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù)之前,還包括:
判斷預(yù)設(shè)的觸發(fā)事件是否被觸發(fā);
若預(yù)設(shè)的觸發(fā)事件被觸發(fā),則向所述處理器引發(fā)一個(gè)中斷,然后執(zhí)行獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù)的步驟。
本發(fā)明實(shí)施例提供的一種任務(wù)緩存空間監(jiān)測(cè)裝置,包括:
訪問(wèn)數(shù)獲取模塊,用于獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù);
使用空間獲取模塊,用于獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間;
容量使用度計(jì)算模塊,用于根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度;
緩存使用空間計(jì)算模塊,用于根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間;
輸出模塊,用于輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間。
可選地,所述緩存使用空間計(jì)算模塊包括:
第一計(jì)算單元,用于若U小于α,則通過(guò)預(yù)設(shè)的第一公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第一公式為:
第二計(jì)算單元,用于若U大于等于α,則通過(guò)預(yù)設(shè)的第二公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第二公式為:
其中,上述的Ti(j)為當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,α為預(yù)設(shè)的使用度閾值,U為所述容量使用度,i為所述各個(gè)任務(wù)的標(biāo)號(hào),Mi為所述各個(gè)任務(wù)訪問(wèn)失效數(shù),Ai為所述各個(gè)任務(wù)的訪問(wèn)數(shù),j為當(dāng)前時(shí)間區(qū)間,j-1為上一時(shí)間區(qū)間,CTi(j-1)為在上一時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,C為所述緩存的總?cè)萘俊?/p>
可選地,所述任務(wù)緩存空間監(jiān)測(cè)裝置還包括:
觸發(fā)判斷模塊,用于判斷預(yù)設(shè)的觸發(fā)事件是否被觸發(fā);
中斷模塊,用于若所述觸發(fā)判斷模塊的判斷結(jié)果為是,則向所述處理器引發(fā)一個(gè)中斷,然后觸發(fā)所述訪問(wèn)數(shù)獲取模塊。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
本發(fā)明實(shí)施例中,首先,獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù);然后,獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間;根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度;接著,根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間;最后,輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間。在本發(fā)明實(shí)施例中,可以通過(guò)讀取處理器的PMC值,間接地準(zhǔn)確計(jì)算出所述處理器中各個(gè)任務(wù)在當(dāng)前時(shí)間區(qū)間的緩存使用空間,實(shí)現(xiàn)對(duì)各個(gè)任務(wù)的緩存空間的準(zhǔn)確監(jiān)測(cè);另外,可以輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間,有助于優(yōu)化多任務(wù)對(duì)緩存的使用,減少多任務(wù)相互干擾的可能性并提高緩存的使用效率。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)方法一個(gè)實(shí)施例流程圖;
圖2為本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)方法在一個(gè)應(yīng)用場(chǎng)景下動(dòng)態(tài)監(jiān)測(cè)緩存空間的流程示意圖;
圖3為本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)裝置一個(gè)實(shí)施例結(jié)構(gòu)圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種任務(wù)緩存空間監(jiān)測(cè)方法和裝置,用于實(shí)現(xiàn)對(duì)處理器中各個(gè)任務(wù)的緩存空間的準(zhǔn)確監(jiān)測(cè)。
本發(fā)明所解決的技術(shù)問(wèn)題是,在處理器中有多個(gè)任務(wù)同時(shí)運(yùn)行時(shí),通過(guò)軟件層面的機(jī)制對(duì)各任務(wù)所占用的處理器中緩存資源的空間進(jìn)行動(dòng)態(tài)的監(jiān)測(cè)。在處理器(或多核處理器)架構(gòu)下,被高度共享的緩存很容易形成多任務(wù)執(zhí)行時(shí)的干擾源,從而影響到各任務(wù)執(zhí)行的進(jìn)程。技術(shù)難點(diǎn)在于,緩存空間的實(shí)際使用情況屬于處理器硬件中的內(nèi)部信息,該信息并不對(duì)軟件透明,只能在軟件層面利用模型間接的對(duì)各任務(wù)在緩存中使用的空間進(jìn)行推斷。
現(xiàn)有技術(shù)中,在軟件層面上對(duì)任務(wù)緩存空間的間接監(jiān)測(cè)機(jī)制,屬于“黑盒”機(jī)制,而硬件層面的復(fù)雜設(shè)計(jì)往往不能通過(guò)簡(jiǎn)單的方法來(lái)進(jìn)行預(yù)測(cè)。比如,當(dāng)前的緩存設(shè)計(jì)基本都使用了多路相關(guān)性緩存選址設(shè)計(jì)來(lái)優(yōu)化對(duì)緩存訪問(wèn)的性能。即多條緩存行共享一個(gè)尋址空間,當(dāng)緩存訪問(wèn)使用一個(gè)內(nèi)存地址訪問(wèn)緩存時(shí),首先根據(jù)地址的前幾位尋址到該緩存行集合,這樣可以有效的降低尋址開(kāi)銷。在這一集合中,再根據(jù)地址后幾位尋找到具體存儲(chǔ)數(shù)據(jù)的緩存行,這樣可以避免使用相近地址緩存訪問(wèn)的沖突。但是,在這樣一個(gè)緩存行集合中,被移除掉的緩存行將通過(guò)其他的規(guī)則來(lái)決定。這也大大的增加了在軟件層面通過(guò)分析內(nèi)存頁(yè)地址判斷任務(wù)所占用的緩存空間的難度。
本發(fā)明屬于純軟件機(jī)制,不需要額外的硬件開(kāi)銷,只需要在軟件層面通過(guò)PMC完成低開(kāi)銷的監(jiān)測(cè),通過(guò)模型在多任務(wù)并行執(zhí)行時(shí)對(duì)各任務(wù)在緩存使用的空間進(jìn)行推斷。本發(fā)明的機(jī)制雖然是從軟件層面入手,但是通過(guò)對(duì)硬件體系的充分研究,加上高精度硬件機(jī)制模擬的驗(yàn)證得出結(jié)果。屬于“灰盒”機(jī)制。相對(duì)于之前的軟件層面的方法,本發(fā)明主要有以下優(yōu)點(diǎn):
1、提高解決方案的全面性,不再要求多個(gè)任務(wù)都大量的占用緩存資源。可知,當(dāng)前計(jì)算平臺(tái)上執(zhí)行的任務(wù)類型多種多樣,而在當(dāng)前的多核處理器設(shè)計(jì)中,已經(jīng)提供了很大的緩存空間和層級(jí)。所以,所有任務(wù)都大量需要緩存的場(chǎng)景并不常出現(xiàn)。而本發(fā)明將充分對(duì)任務(wù)特性多樣化進(jìn)行考察,通過(guò)全面的機(jī)制對(duì)緩存空間實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測(cè)。
2、不再依賴于緩存失效的計(jì)數(shù)來(lái)進(jìn)行緩存使用空間的判斷。任務(wù)使用緩存空間的變化確實(shí)是由緩存失效引起的,但是,對(duì)緩存訪問(wèn)成功的概率同樣是推斷緩存使用空間的重要因素。因?yàn)榫彺嬖L問(wèn)成功的前提是數(shù)據(jù)已經(jīng)存在于當(dāng)前的緩存行中,間接的證明了任務(wù)在緩存中占有的空間。本發(fā)明也將緩存訪問(wèn)成功的次數(shù)和緩存訪問(wèn)失效的次數(shù)一并作為參數(shù)納入緩存使用空間模型的推斷模型。
3、重視了時(shí)間累積的效果。當(dāng)前主流的緩存行移除策略是移除最不常使用策略(Least Recently Used,LRU),即,在緩存中存放時(shí)間越久的數(shù)據(jù)被移除的概率也越大。本發(fā)明同樣將時(shí)間因素納入模型,從而形成對(duì)任務(wù)使用緩存空間更全面的推斷。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)方法一個(gè)實(shí)施例包括:
101、獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù);
102、獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間;
103、根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度;
104、根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間;
105、輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間。
對(duì)于上述步驟101,上述的訪問(wèn)數(shù)是指在當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)對(duì)緩存產(chǎn)生的訪問(wèn)次數(shù),上述的訪問(wèn)失效數(shù)是指在當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)對(duì)緩存產(chǎn)生的訪問(wèn)失敗(失效)的次數(shù)。
在本實(shí)施例中,各個(gè)時(shí)間區(qū)間的長(zhǎng)度可以預(yù)先設(shè)定,一般來(lái)說(shuō),各個(gè)時(shí)間區(qū)間的長(zhǎng)度是相等的,也即,當(dāng)前時(shí)間區(qū)間的長(zhǎng)度與上一時(shí)間區(qū)間的長(zhǎng)度相等,與下一時(shí)間區(qū)間的長(zhǎng)度也相等。
對(duì)于上述步驟101,具體地,可以讀取當(dāng)前時(shí)間區(qū)間內(nèi)處理器的PMC值,得到所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù)??梢岳斫獾氖?,在當(dāng)前的主流處理器中都提供大量的PMC(事件計(jì)數(shù)器,Performance Monitoring Counters),這些PMC記錄了在任務(wù)執(zhí)行過(guò)程中處理器中的一些關(guān)鍵事件發(fā)生的數(shù)量,比如處理器中執(zhí)行的指令數(shù)、周期數(shù)、對(duì)緩存的訪問(wèn)次數(shù)、在緩存中訪問(wèn)失效的次數(shù)等信息。例如,利用Linux操作系統(tǒng)的內(nèi)核模塊perf_event,可以高頻率的讀取一系列經(jīng)過(guò)設(shè)置的PMC(最高至100,000次/秒),從而可以從這些讀取的PMC中獲取到各個(gè)任務(wù)的訪問(wèn)數(shù)和訪問(wèn)失效數(shù)。
對(duì)于上述步驟102,可以理解的是,緩存作為存儲(chǔ)性的部件,其中的空間是隨著時(shí)間累積的。所以本發(fā)明在各個(gè)時(shí)間區(qū)間上累計(jì)各任務(wù)所占據(jù)的緩存空間,即為上述的緩存歷史使用空間。在某一時(shí)間區(qū)間上對(duì)緩存空間進(jìn)行監(jiān)測(cè)時(shí),需考慮在此之前一些時(shí)間區(qū)間(如上一時(shí)間區(qū)間)上,各任務(wù)對(duì)于緩存的使用情況。另外,上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間可以預(yù)先計(jì)算得到,例如可以在對(duì)上一時(shí)間區(qū)間進(jìn)行監(jiān)測(cè)時(shí)計(jì)算得到各個(gè)任務(wù)累積使用的緩存歷史使用空間。另外,關(guān)于緩存歷史使用空間的計(jì)算方法將在下述內(nèi)容中進(jìn)行詳細(xì)描述。
對(duì)于上述步驟103,在獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間之后,可以根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度。
可以理解的是,在每一個(gè)時(shí)間區(qū)間上,緩存被所有執(zhí)行的任務(wù)所共享,所以整個(gè)緩存的使用程度即是所有任務(wù)使用緩存空間的總和。因此,進(jìn)一步地,可以通過(guò)預(yù)設(shè)的第三公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度U,所述第三公式為:其中,CTi為所述各個(gè)任務(wù)在上一時(shí)間區(qū)間內(nèi)累積使用的緩存歷史使用空間,i為所述各個(gè)任務(wù)的標(biāo)號(hào),C為所述緩存的總?cè)萘俊?/p>
上述容量使用度U的計(jì)算可以在每一個(gè)固定頻率的時(shí)間節(jié)點(diǎn)上進(jìn)行。
對(duì)于上述步驟104,在計(jì)算得到當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度之后,可以根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間。
本發(fā)明利用計(jì)算出的U,在時(shí)間區(qū)間j上使用預(yù)設(shè)的使用度閾值α對(duì)各任務(wù)的緩存空間的變量進(jìn)行計(jì)算:當(dāng)U<α?xí)r,則當(dāng)前緩存空間的使用量較低,而多個(gè)任務(wù)競(jìng)爭(zhēng)使用緩存資源的壓力也較小。在這樣的情景下,在每個(gè)時(shí)間區(qū)間上,各任務(wù)占用緩存空間的變化主要表征為各任務(wù)所產(chǎn)生的緩存訪問(wèn)失效的數(shù)量。相對(duì)的,當(dāng)U>α?xí)r,則當(dāng)前緩存已經(jīng)被大量的使用,從而每一次緩存失效事件表征了緩存空間的占有權(quán)在兩個(gè)任務(wù)之間的更迭。在這樣的情景下,則可以根據(jù)各任務(wù)所造成緩存失效的比例來(lái)對(duì)緩存空間進(jìn)行概率劃分。除此之外,這兩者的基礎(chǔ),都基于上一個(gè)時(shí)間區(qū)間內(nèi)所計(jì)算出的該任務(wù)累積使用的緩存歷史使用空間CT,并且任務(wù)在當(dāng)前時(shí)間區(qū)間上失效的比例也是重要的影響因子。
因此,進(jìn)一步地,上述步驟104可以包括:
若U小于α,則通過(guò)預(yù)設(shè)的第一公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第一公式為:
若U大于等于α,則通過(guò)預(yù)設(shè)的第二公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第二公式為:
其中,上述的Ti(j)為當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,α為預(yù)設(shè)的使用度閾值,U為所述容量使用度,i為所述各個(gè)任務(wù)的標(biāo)號(hào),Mi為所述各個(gè)任務(wù)訪問(wèn)失效數(shù),Ai為所述各個(gè)任務(wù)的訪問(wèn)數(shù),j為當(dāng)前時(shí)間區(qū)間,j-1為上一時(shí)間區(qū)間,CTi(j-1)為在上一時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,C為所述緩存的總?cè)萘俊?/p>
對(duì)上述第一公式和第二公式進(jìn)行整理,可以表示為:
對(duì)于上述步驟105,在步驟104計(jì)算得到各個(gè)任務(wù)的緩存使用空間之后,可以將所述各個(gè)任務(wù)的緩存使用空間作為監(jiān)測(cè)結(jié)果進(jìn)行輸出,可以在軟件層面向管理程序提供,為資源的管理和任務(wù)的調(diào)度提供參照,有助于優(yōu)化多任務(wù)對(duì)緩存的使用,減少多任務(wù)相互干擾的可能性并提高緩存的使用效率。
另外,本發(fā)明實(shí)施例中,進(jìn)一步地,在步驟104之后,還可以包括:根據(jù)當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間??梢岳斫獾氖?,在當(dāng)前時(shí)間區(qū)間j上計(jì)算出Ti(j)后,還需要對(duì)之前時(shí)間區(qū)間上各任務(wù)所使用的緩存空間進(jìn)行考量。由于緩存中數(shù)據(jù)存儲(chǔ)的時(shí)效性,可以僅考量在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間的緩存空間使用量。并且,時(shí)間越久,則對(duì)應(yīng)的預(yù)設(shè)權(quán)重值越低。
因此,進(jìn)一步地,可以通過(guò)預(yù)設(shè)的第四公式計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,所述第四公式為:CTi(j)為在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,βj為與當(dāng)前時(shí)間區(qū)間對(duì)應(yīng)的預(yù)設(shè)的權(quán)重值。
可知,通過(guò)上述第四公式可以計(jì)算出當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間。同理,對(duì)于上述步驟102中的上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間CTi(j-1),也即在上一時(shí)間區(qū)間內(nèi)進(jìn)行緩存空間監(jiān)測(cè)時(shí),在計(jì)算得到上一時(shí)間區(qū)間內(nèi)各個(gè)任務(wù)的緩存使用空間之后,也可以計(jì)算得到該緩存歷史使用空間CTi(j-1),從而在當(dāng)前時(shí)間區(qū)間內(nèi)進(jìn)行緩存空間監(jiān)測(cè)時(shí),可以直接獲取到上一時(shí)間區(qū)間的緩存歷史使用空間CTi(j-1)。同理可知,當(dāng)前時(shí)間區(qū)間內(nèi)計(jì)算得到的CTi(j),也可在下一時(shí)間區(qū)間內(nèi)進(jìn)行緩存空間監(jiān)測(cè)時(shí)使用。
更進(jìn)一步地,上述的α、βj和N可以通過(guò)緩存訪問(wèn)模擬器在與所述緩存相同的緩存環(huán)境下輸入預(yù)設(shè)的訓(xùn)練數(shù)據(jù)進(jìn)行模擬訓(xùn)練得到。該緩存訪問(wèn)模擬器的運(yùn)行基于與所述緩存相同的緩存環(huán)境,可以預(yù)先對(duì)緩存參數(shù)進(jìn)行配置,包括緩存的總?cè)萘浚彺嫘械拈L(zhǎng)度,緩存行的相關(guān)度,緩存行的移除機(jī)制,示例如下:
本實(shí)施例中,在進(jìn)行模擬訓(xùn)練時(shí),通過(guò)緩存訪問(wèn)模擬器可以方便添加緩存行的任務(wù)識(shí)別號(hào),從而可以精準(zhǔn)監(jiān)測(cè)在執(zhí)行過(guò)程中各任務(wù)對(duì)緩存空間的使用情況。另外,預(yù)先選取基準(zhǔn)程序集,比如從SPEC CPU2006的處理器上選取4個(gè)基準(zhǔn)程序作為訓(xùn)練集,可以得到這4個(gè)任務(wù)在該緩存訪問(wèn)模擬器上運(yùn)行時(shí)緩存空間的具體信息來(lái)作為訓(xùn)練數(shù)據(jù)。經(jīng)過(guò)線性回歸,可以確定本發(fā)明上述第一公式、第二公式、第三公式和第四公式中α、βj和N等參數(shù)的具體值。在確定出α、βj和N的預(yù)設(shè)值之后,可以得出本發(fā)明中該任務(wù)緩存空間監(jiān)測(cè)方法的完整模型,從而應(yīng)用于實(shí)際系統(tǒng)中對(duì)任務(wù)使用的緩存空間進(jìn)行動(dòng)態(tài)監(jiān)測(cè)。
進(jìn)一步地,在步驟101之前,本發(fā)明的任務(wù)緩存空間監(jiān)測(cè)方法還可以包括:判斷預(yù)設(shè)的觸發(fā)事件是否被觸發(fā),若是,則向所述處理器引發(fā)一個(gè)中斷,然后執(zhí)行步驟101??梢岳斫獾氖牵撚|發(fā)事件可以是該處理器執(zhí)行到某個(gè)預(yù)設(shè)的時(shí)間區(qū)間,或者該處理器的各個(gè)任務(wù)從開(kāi)始監(jiān)測(cè)到當(dāng)前時(shí)間節(jié)點(diǎn)累計(jì)執(zhí)行了預(yù)設(shè)數(shù)量個(gè)時(shí)間區(qū)間,又或者是操作人員下發(fā)確定監(jiān)測(cè)的指令。
為便于理解,根據(jù)圖1所描述的實(shí)施例,下面以一個(gè)實(shí)際應(yīng)用場(chǎng)景對(duì)本發(fā)明實(shí)施例中的一種任務(wù)緩存空間監(jiān)測(cè)方法進(jìn)行描述:
圖2示出了本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)方法在一個(gè)應(yīng)用場(chǎng)景下動(dòng)態(tài)監(jiān)測(cè)緩存空間的流程示意圖。
在本應(yīng)用場(chǎng)景下,通過(guò)監(jiān)測(cè)軟件執(zhí)行該任務(wù)緩存空間監(jiān)測(cè)方法,其在實(shí)際系統(tǒng)中的使用過(guò)程如圖2所示,具體說(shuō)明如下:
一、首先,當(dāng)處理器中多個(gè)任務(wù)開(kāi)始執(zhí)行時(shí),監(jiān)測(cè)軟件也隨之進(jìn)行初始化并進(jìn)入后臺(tái)運(yùn)行,當(dāng)前系統(tǒng)內(nèi)所有正在執(zhí)行的任務(wù)的初始緩存空間設(shè)定為0。當(dāng)任務(wù)在時(shí)間內(nèi)執(zhí)行時(shí),該監(jiān)測(cè)程序保持在后臺(tái)。等待達(dá)到監(jiān)測(cè)程序自身設(shè)定的時(shí)間點(diǎn)后喚醒該監(jiān)測(cè)程序。
二、當(dāng)任務(wù)執(zhí)行周期數(shù)累計(jì)到監(jiān)測(cè)程序所設(shè)定的固定時(shí)間點(diǎn)上時(shí),則引發(fā)一個(gè)中斷,由后臺(tái)的監(jiān)測(cè)程序讀取當(dāng)前的經(jīng)過(guò)設(shè)定的PMC值,讀取各CPU上產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù),這些緩存訪問(wèn)歸屬于當(dāng)前在該CPU上執(zhí)行的各個(gè)任務(wù)。
三、根據(jù)監(jiān)測(cè)程序中保存的所有任務(wù)在上一個(gè)時(shí)間節(jié)點(diǎn)時(shí)經(jīng)過(guò)計(jì)算所得累積的緩存歷史使用空間,根據(jù)第三公式計(jì)算當(dāng)前整個(gè)緩存中容量的使用情況U。
四、從PMC讀取值中,分別按CPU編號(hào)(多核CPU)將當(dāng)前執(zhí)行的各任務(wù)的緩存訪問(wèn)數(shù)量Ai和緩存訪問(wèn)失效數(shù)量Mi獨(dú)處。并根據(jù)計(jì)算得到的U值,在第一公式和第二公式中,將讀取到的Ai和Mi,和監(jiān)測(cè)程序中在上一時(shí)間點(diǎn)保存的各任務(wù)累積使用的緩存歷史使用空間CTi一起計(jì)算各任務(wù)在當(dāng)前時(shí)間點(diǎn)所監(jiān)測(cè)到的緩存使用空間。
五、根據(jù)第四公式,計(jì)算各任務(wù)經(jīng)過(guò)該當(dāng)前時(shí)間區(qū)間后,在緩存中累積使用的緩存空間,并將該累積值存入監(jiān)測(cè)程序中,結(jié)束當(dāng)前時(shí)間點(diǎn)上的操作,并再次進(jìn)入后臺(tái)運(yùn)行,直到下一個(gè)固定時(shí)間點(diǎn)等待喚醒或者該監(jiān)測(cè)程序收到結(jié)束監(jiān)測(cè)的命令。
上面主要描述了一種任務(wù)緩存空間監(jiān)測(cè)方法,下面將對(duì)一種任務(wù)緩存空間監(jiān)測(cè)裝置進(jìn)行詳細(xì)描述。
圖3示出了本發(fā)明實(shí)施例中一種任務(wù)緩存空間監(jiān)測(cè)裝置一個(gè)實(shí)施例結(jié)構(gòu)圖。
本實(shí)施例中,一種任務(wù)緩存空間監(jiān)測(cè)裝置包括:
訪問(wèn)數(shù)獲取模塊301,用于獲取當(dāng)前時(shí)間區(qū)間內(nèi)所述處理器上各個(gè)任務(wù)產(chǎn)生對(duì)緩存的訪問(wèn)數(shù)和訪問(wèn)失效數(shù);
使用空間獲取模塊302,用于獲取上一時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)累積使用的緩存歷史使用空間;
容量使用度計(jì)算模塊303,用于根據(jù)所述緩存歷史使用空間計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度;
緩存使用空間計(jì)算模塊304,用于根據(jù)所述緩存歷史使用空間、計(jì)算得到的所述容量使用度、得到的所述各個(gè)任務(wù)的所述訪問(wèn)數(shù)和訪問(wèn)失效數(shù)分別計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間;
輸出模塊305,用于輸出計(jì)算得到的所述各個(gè)任務(wù)的緩存使用空間。
進(jìn)一步地,所述緩存使用空間計(jì)算模塊可以包括:
第一計(jì)算單元,用于若U小于α,則通過(guò)預(yù)設(shè)的第一公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第一公式為:
第二計(jì)算單元,用于若U大于等于α,則通過(guò)預(yù)設(shè)的第二公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,所述第二公式為:
其中,上述的Ti(j)為當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,α為預(yù)設(shè)的使用度閾值,U為所述容量使用度,i為所述各個(gè)任務(wù)的標(biāo)號(hào),Mi為所述各個(gè)任務(wù)訪問(wèn)失效數(shù),Ai為所述各個(gè)任務(wù)的訪問(wèn)數(shù),j為當(dāng)前時(shí)間區(qū)間,j-1為上一時(shí)間區(qū)間,CTi(j-1)為在上一時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,C為所述緩存的總?cè)萘俊?/p>
進(jìn)一步地,所述容量使用度計(jì)算模塊可以包括:
第三公式計(jì)算單元,用于通過(guò)預(yù)設(shè)的第三公式計(jì)算當(dāng)前時(shí)間區(qū)間內(nèi)所述緩存的容量使用度,所述第三公式為:其中,CTi為所述各個(gè)任務(wù)在上一時(shí)間區(qū)間內(nèi)累積使用的緩存歷史使用空間。
進(jìn)一步地,所述任務(wù)緩存空間監(jiān)測(cè)裝置還可以包括:
歷史使用空間計(jì)算模塊,用于根據(jù)當(dāng)前時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存使用空間,計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間。
進(jìn)一步地,所述歷史使用空間計(jì)算模塊可以包括:
第四公式計(jì)算單元,用于通過(guò)預(yù)設(shè)的第四公式計(jì)算在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,所述第四公式為:CTi(j)為在當(dāng)前時(shí)間區(qū)間之前N個(gè)時(shí)間區(qū)間內(nèi)所述各個(gè)任務(wù)的緩存歷史使用空間,βj為與當(dāng)前時(shí)間區(qū)間對(duì)應(yīng)的預(yù)設(shè)的權(quán)重值。
進(jìn)一步地,上述的α、βj和N可以通過(guò)以下模塊預(yù)先得到:模擬訓(xùn)練模塊,用于通過(guò)緩存訪問(wèn)模擬器在與所述緩存相同的緩存環(huán)境下輸入預(yù)設(shè)的訓(xùn)練數(shù)據(jù)進(jìn)行模擬訓(xùn)練得到α、βj和N。
進(jìn)一步地,所述任務(wù)緩存空間監(jiān)測(cè)裝置還可以包括:
觸發(fā)判斷模塊,用于判斷預(yù)設(shè)的觸發(fā)事件是否被觸發(fā);
中斷模塊,用于若所述觸發(fā)判斷模塊的判斷結(jié)果為是,則向所述處理器引發(fā)一個(gè)中斷,然后觸發(fā)所述訪問(wèn)數(shù)獲取模塊。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。