終端中多核處理器熱插拔控制方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種終端中多核處理器熱插拔控制方法和裝置。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)日新月異的發(fā)展,出現(xiàn)了一些具有多核處理器的終端,處理器即CPU (Central Processing Unit,中央處理器),多核處理器的終端即終端中內(nèi)置多個(gè)CPU,例如像多核處理器的手機(jī)、平板電腦等,多核處理器能夠使得終端具有更快的處理能力,給使用多核處理器終端的用戶帶來愉悅的體驗(yàn)。
[0003]在設(shè)計(jì)多核處理器的終端時(shí),除了考慮終端的性能之外,還需要考慮到多核處理器給終端所帶來的額外消耗。為了降低多核處理器終端使用時(shí)的額外消耗,延長(zhǎng)待機(jī)時(shí)間,提高用戶體驗(yàn),目前采用主流的CPU熱插拔技術(shù)來解決這一問題。該技術(shù)的主要思想是在CPU平均負(fù)載變低時(shí),將空閑的CPU拔出;在系統(tǒng)負(fù)載變高時(shí),將已下電的核插入,以滿足系統(tǒng)性能需要。因此,該方法中的關(guān)鍵點(diǎn)在于測(cè)量CPU的負(fù)載。具體的做法是:首先計(jì)算一段采樣時(shí)間內(nèi)CPU忙時(shí)間以及對(duì)應(yīng)的CPU頻率,得到采樣周期內(nèi)的CPU平均頻率;然后,用CPU的平均頻率除以CPU最大頻率,就可以得到CPU的平均負(fù)載。
[0004]目前判斷插或拔的方法,主要依靠歷史統(tǒng)計(jì)數(shù)據(jù),具體做法是統(tǒng)計(jì)過去一段時(shí)間或一定次數(shù)的CPU平均頻率或CPU平均負(fù)載,如連續(xù)幾次超過所設(shè)定的閾值,則熱插或熱拔;或如果歷史數(shù)據(jù)中出現(xiàn)了超過閾值的高頻或低頻數(shù)據(jù),則也熱插或熱拔。
[0005]但是,該CPU平均負(fù)載計(jì)算方法忽略掉了此次采樣點(diǎn)之前的CPU行為,即假設(shè)了(PU是以空閑狀態(tài)開始此次采樣的,歷史數(shù)據(jù)的統(tǒng)計(jì)和選擇是有一定延遲的,不能及時(shí)對(duì)CPU的變化做出反應(yīng)。此外,對(duì)此次采樣周期內(nèi)的時(shí)間采取了統(tǒng)一的權(quán)值,即假設(shè)過去一個(gè)采樣周期內(nèi)的所有時(shí)間的CPU行為對(duì)預(yù)測(cè)下一個(gè)周期內(nèi)CPU行為是均衡的,但是實(shí)踐證明距離當(dāng)前時(shí)間越近的時(shí)間的CPU行為,對(duì)預(yù)測(cè)CPU行為的權(quán)重應(yīng)該越大,反之越小。進(jìn)一步的,外界事件或環(huán)境變化等也會(huì)引起CPU平均負(fù)載的波動(dòng),當(dāng)前活動(dòng)線程數(shù)會(huì)影響熱插拔策略的決策,示例的,可能存在多線程已經(jīng)準(zhǔn)備好,但因處于在線狀態(tài)的CPU數(shù)不夠而沒能及時(shí)得到調(diào)度的情況發(fā)生,從而最終影響熱插拔策略的決策。因此,目前的CPU平均負(fù)載的測(cè)量方法及判斷插或拔的方法是不準(zhǔn)確的。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種終端中多核處理器熱插拔控制方法和裝置,能夠解決由于CPU熱插或熱拔所導(dǎo)致的CPU在線和CPU不在線時(shí)所引起的終端系統(tǒng)狀態(tài)的抖動(dòng),使得終端系統(tǒng)狀態(tài)保持平緩,同時(shí)能夠提高對(duì)終端系統(tǒng)負(fù)載變化的及時(shí)響應(yīng)性。
[0007]為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種終端中多核處理器熱插拔控制方法,包括:
[0008]使用負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載,所述CPU平均負(fù)載由時(shí)長(zhǎng)T內(nèi)CPU累積運(yùn)行的負(fù)載與所述T衰減后的總時(shí)長(zhǎng)相除得到,所述T為自CPU開啟至當(dāng)前時(shí)間的總時(shí)長(zhǎng);
[0009]根據(jù)所述計(jì)算的CPU平均負(fù)載,判斷CPU的插或拔。
[0010]本發(fā)明的實(shí)施方式還提供一種終端中多核處理器熱插拔控制裝置,包括:
[0011]計(jì)算單元,用于使用負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載,所述CPU平均負(fù)載由時(shí)長(zhǎng)T內(nèi)CPU累積運(yùn)行的負(fù)載與所述T衰減后的總時(shí)長(zhǎng)相除得到,所述T為自CPU開啟至當(dāng)前時(shí)間的總時(shí)長(zhǎng);
[0012]第一判斷單元,用于根據(jù)所述計(jì)算單元的計(jì)算的所述CPU平均負(fù)載,判斷CPU的插或拔。
[0013]本發(fā)明實(shí)施方式相對(duì)于現(xiàn)有技術(shù)而言,根據(jù)負(fù)載跟蹤算法計(jì)算CPU的負(fù)載,連續(xù)跟蹤了從終端開啟后到當(dāng)前時(shí)間內(nèi)的CPU平均負(fù)載,保證了 CPU平均負(fù)載評(píng)估時(shí)的連續(xù)性和歷史性,從而使得根據(jù)計(jì)算的CPU平均負(fù)載在判斷CPU的插或拔時(shí),能夠解決由于CPU熱插或熱拔所導(dǎo)致的CPU在線和CPU不在線時(shí)所引起的終端系統(tǒng)狀態(tài)的抖動(dòng),使得終端系統(tǒng)狀態(tài)保持平緩,滿足性能和消耗的平衡。
[0014]優(yōu)選的,所述使用負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載包括:將所述T按照單位劃分成時(shí)間單位,通過衰減算法得到每個(gè)所述時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間,為每個(gè)所述時(shí)間單位設(shè)置不同的權(quán)重,距離所述當(dāng)前時(shí)間越近,所述權(quán)重越大;將所述每個(gè)所述時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間及其對(duì)應(yīng)的權(quán)重相乘后做和,得到所述CPU累積運(yùn)行的負(fù)載;將所述每個(gè)時(shí)間單位的時(shí)長(zhǎng)及其對(duì)應(yīng)的權(quán)重相乘后做和,得到所述T衰減后的總時(shí)長(zhǎng);將所述CPU累積運(yùn)行的負(fù)載與所述T衰減后的總時(shí)長(zhǎng)相除,得到所述CPU平均負(fù)載。
[0015]根據(jù)負(fù)載跟蹤算法計(jì)算CPU的負(fù)載,連續(xù)跟蹤了從終端開啟后到當(dāng)前時(shí)間內(nèi)的CPU負(fù)載CPU平均負(fù)載,保證了 CPU平均負(fù)載評(píng)估時(shí)的連續(xù)性和歷史性,從而使得根據(jù)計(jì)算的CPU平均負(fù)載在判斷CPU的插或拔時(shí),能夠解決由于CPU熱插或熱拔所導(dǎo)致的CPU在線和CPU不在線時(shí)所引起的終端系統(tǒng)狀態(tài)的抖動(dòng),使得終端系統(tǒng)狀態(tài)保持平緩。
[0016]優(yōu)選的,當(dāng)所述終端支持CPU的動(dòng)態(tài)調(diào)頻時(shí),所述使用負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載還包括:將所述T按照單位劃分成時(shí)間單位,通過衰減算法得到每個(gè)所述時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間,為每個(gè)所述時(shí)間單位設(shè)置不同的權(quán)重,距離所述當(dāng)前時(shí)間越近,所述權(quán)重越大;將所述時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間及其對(duì)應(yīng)的權(quán)重相乘后,再乘以對(duì)應(yīng)的所述時(shí)間單位內(nèi)CPU使用的頻率,得到所述每個(gè)時(shí)間單位內(nèi)CPU累積運(yùn)行的負(fù)載分量,再將所述每個(gè)時(shí)間單位內(nèi)CPU累積運(yùn)行的負(fù)載分量求和,得到CPU累積運(yùn)行的負(fù)載;將所述每個(gè)時(shí)間單位的時(shí)長(zhǎng)及其對(duì)應(yīng)的權(quán)重相乘后做和,得到所述T衰減后的總時(shí)長(zhǎng);利用所述CPU累積運(yùn)行的負(fù)載除以所述T衰減后的總時(shí)長(zhǎng)與fmax的乘積,得到所述CPU平均負(fù)載,所述fmax為所述T內(nèi)CPU使用的頻率中最大的頻率。
[0017]將CPU的頻率作為一個(gè)衡量因子加入到CPU平均負(fù)載的計(jì)算方法中,使得計(jì)算得到的CPU平均負(fù)載值更為準(zhǔn)確。
[0018]優(yōu)選的,周期性的檢測(cè)負(fù)載變化率,所述負(fù)載變化率為當(dāng)前周期的CPU平均負(fù)載與前一周期的CPU平均負(fù)載作差后除以檢測(cè)周期P得到,所述CPU平均負(fù)載變化檢測(cè)周期為P,所述P為所述時(shí)間單位的N倍,所述N為大于I的整數(shù),所述CPU平均負(fù)載由所述P內(nèi)計(jì)算的所述N個(gè)CPU平均負(fù)載的和與所述N個(gè)時(shí)間單位長(zhǎng)度相除得到;判斷所述負(fù)載變化率是否大于第一預(yù)設(shè)閾值;當(dāng)所述負(fù)載變化率大于所述第一預(yù)設(shè)閾值時(shí),將所述負(fù)載變化率與預(yù)設(shè)的負(fù)載變化因子的乘積及所述CPU平均負(fù)載的和作為最終的CPU平均負(fù)載。
[0019]由于具有CPU的系統(tǒng)是個(gè)時(shí)變系統(tǒng),外界事件或環(huán)境變化會(huì)引起系統(tǒng)波動(dòng),在負(fù)載變化率大于第一預(yù)設(shè)閾值時(shí),將負(fù)載變化率加入到CPU平均負(fù)載值的計(jì)算中,從而使得最終的熱插拔判決方法能夠根據(jù)負(fù)載的變化情況得出,更加符合CPU的負(fù)載特性,提高了終端系統(tǒng)的交互性和及時(shí)性,充分發(fā)揮出多核的優(yōu)勢(shì)。
[0020]優(yōu)選的,還包括以下步驟:當(dāng)當(dāng)前活動(dòng)線程數(shù)大于第二預(yù)設(shè)閾值時(shí),設(shè)置CPU插入;當(dāng)所述當(dāng)前活動(dòng)線程數(shù)與在線CPU數(shù)的差值大于第三預(yù)設(shè)閾值時(shí),設(shè)置在線CPU數(shù)不變;在預(yù)設(shè)時(shí)間內(nèi),當(dāng)所述當(dāng)前活動(dòng)線程數(shù)一直小于所述在線CPU數(shù)時(shí),設(shè)置CPU拔出。
[0021]在判斷是否“插/拔/保持”時(shí),除了使用CPU平均負(fù)載此因子進(jìn)行判斷之外,使用當(dāng)前活動(dòng)線程數(shù)進(jìn)行判斷,能夠提高系統(tǒng)對(duì)負(fù)載變化的及時(shí)響應(yīng)性。
【附圖說明】
[0022]圖1是本發(fā)明第一實(shí)施方式的終端中多核處理器熱插拔控制方法流程示意圖;
[0023]圖2是根據(jù)負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載的方法流程示意圖;
[0024]圖3是負(fù)載跟蹤算法中按照時(shí)間單位劃分時(shí)間軸的方法示意圖;
[0025]圖4是本發(fā)明第二實(shí)施方式中根據(jù)負(fù)載跟蹤算法計(jì)算CPU平均負(fù)載的另一種方法流程示意圖;
[0026]圖5是本發(fā)明第三實(shí)施方式的終端中多核處理器熱插拔控制方法流程示意圖。
【具體實(shí)施方式】
[0027]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明的各實(shí)施方式進(jìn)行詳細(xì)的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實(shí)施方式中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)