05及步驟506,其中步驟501及步驟506分別與步驟101及步驟102相同。
[0058]步驟502包括:周期性的檢測(cè)負(fù)載變化率。
[0059]負(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)度相除得到。
[0060]示例的,若時(shí)間單位取值為1ms,則可以將檢測(cè)負(fù)載變化率的周期設(shè)定為10ms,即每隔1ms對(duì)就近的10個(gè)時(shí)間單位內(nèi)求得的CPU平均負(fù)載進(jìn)行相加,再將CPU平均負(fù)載除以10個(gè)時(shí)間單位時(shí)長(zhǎng)10ms,得到每個(gè)周期的CPU平均負(fù)載。負(fù)載變化率為當(dāng)前周期的CPU平均負(fù)載與前一周期的CPU平均負(fù)載作差后除以檢測(cè)周期P得到,若當(dāng)前周期的CPU平均負(fù)載為L(zhǎng) (i),則前一周期的CPU平均負(fù)載可以表示為L(zhǎng) (i+1),則負(fù)載變化率Ir可以表示為lr=[L(i)-L(i+l)]/10o
[0061]步驟503包括:判斷負(fù)載變化率是否大于第一預(yù)設(shè)閾值。
[0062]當(dāng)負(fù)載變化率大于第一預(yù)設(shè)閾值時(shí),執(zhí)行步驟504。
[0063]判斷Ir是否大于第一預(yù)設(shè)閾值,可以設(shè)定Ir為L(zhǎng) (i) /16,在實(shí)際工程應(yīng)用中,也可以根據(jù)實(shí)際需要進(jìn)行調(diào)整,本發(fā)明對(duì)此不作限制。
[0064]步驟504、將負(fù)載變化率與預(yù)設(shè)的負(fù)載變化因子的乘積及CPU平均負(fù)載的和作為最終的CPU平均負(fù)載。
[0065]負(fù)載變化因子可以為1/8。
[0066]當(dāng)負(fù)載變化率小于或等于第一預(yù)設(shè)閾值時(shí),執(zhí)行步驟505。
[0067]步驟505、保持CPU平均負(fù)載不變。
[0068]由于具有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ì)。
[0069]本發(fā)明的第四實(shí)施方式涉及一種終端中多核處理器熱插拔控制方法。第四實(shí)施方式在第一實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:本發(fā)明第四實(shí)施方式中,根據(jù)當(dāng)前活動(dòng)線程數(shù)判斷CPU的插或拔,具體方法為:當(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拔出。
[0070]具體地,當(dāng)有多個(gè)線程處于運(yùn)行狀態(tài)時(shí),應(yīng)盡可能讓CPU在線,充分發(fā)揮多核的優(yōu)勢(shì);當(dāng)運(yùn)行態(tài)線程數(shù)多于在線CPU數(shù)時(shí),應(yīng)盡量避免拔出CPU ;當(dāng)一段時(shí)間內(nèi)運(yùn)行態(tài)線程數(shù)一直小于在線CPU數(shù)時(shí),即使此時(shí)平均負(fù)載比較高,也可以考慮將CPU拔出,因?yàn)闆]有多余的線程可被調(diào)度到空閑的CPU;為了避免抖動(dòng),在運(yùn)行態(tài)線程數(shù)與在線態(tài)CPU數(shù)在比較時(shí)可以留有余量,余量的大小可以根據(jù)處理器核數(shù)確定。
[0071]第三預(yù)設(shè)閾值、第四預(yù)設(shè)閾值及預(yù)設(shè)時(shí)間的閾值可以根據(jù)實(shí)際的工程需要進(jìn)行取值,本發(fā)明對(duì)此不作限制。
[0072]在判斷是否“插或拔或保持”時(shí),除了使用CPU平均負(fù)載此因子進(jìn)行判斷之外,使用當(dāng)前活動(dòng)線程數(shù)進(jìn)行判斷,能夠?yàn)榱颂岣呦到y(tǒng)對(duì)負(fù)載變化的及時(shí)響應(yīng)性。
[0073]本發(fā)明的第五實(shí)施方式涉及一種終端中多核處理器熱插拔控制裝置,包括計(jì)算單元和第一判斷單元,其中,計(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);第一判斷單元用于根據(jù)計(jì)算單元的計(jì)算的CPU平均負(fù)載,判斷CPU的插或拔。
[0074]進(jìn)一步的,計(jì)算單元包括以下子單元:
[0075]第一處理子單元,用于將T按照單位劃分成時(shí)間單位,通過衰減算法得到每個(gè)時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間,為每個(gè)時(shí)間單位設(shè)置不同的權(quán)重,距離當(dāng)前時(shí)間越近,權(quán)重越大。
[0076]第一求和子單元,用于將第一處理子單元?jiǎng)澐值玫降拿總€(gè)時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間及其對(duì)應(yīng)的權(quán)重相乘后做和,得到CPU累積運(yùn)行的負(fù)載。
[0077]第二求和子單元,用于將每個(gè)時(shí)間單位的時(shí)長(zhǎng)及其對(duì)應(yīng)的權(quán)重相乘后做和,得到T裳減后的總時(shí)長(zhǎng)。
[0078]第一獲取子單元,用于將第一求和子單元得到的CPU累積運(yùn)行的負(fù)載與T衰減后的總時(shí)長(zhǎng)相除,得到CPU平均負(fù)載。
[0079]本發(fā)明實(shí)施方式相對(duì)于現(xiàn)有技術(shù)而言,計(jì)算單元根據(jù)負(fù)載跟蹤算法計(jì)算CPU的負(fù)載,連續(xù)跟蹤了從終端開啟后到當(dāng)前時(shí)間內(nèi)的CPU平均負(fù)載,保證了 CPU平均負(fù)載評(píng)估時(shí)的連續(xù)性和歷史性,從而使得第一判斷單元根據(jù)計(jì)算單元計(jì)算的CPU平均負(fù)載在判斷CPU的插或拔時(shí),能夠解決由于CPU熱插或熱拔所導(dǎo)致的CPU在線和CPU不在線時(shí)所引起的終端系統(tǒng)狀態(tài)的抖動(dòng),使得終端系統(tǒng)狀態(tài)保持平緩,滿足性能和消耗的平衡。
[0080]本發(fā)明的第六實(shí)施方式涉及一種終端中多核處理器熱插拔控制裝置,第六實(shí)施方式在第五實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:當(dāng)終端支持CPU的動(dòng)態(tài)調(diào)頻時(shí),計(jì)算單元包括以下子單元:
[0081]第二處理子單元,用于將T按照單位劃分成時(shí)間單位,通過衰減算法得到每個(gè)時(shí)間單位內(nèi)CPU的運(yùn)行時(shí)間,為每個(gè)時(shí)間單位設(shè)置不同的權(quán)重,距離當(dāng)前時(shí)間越近,權(quán)重越大。
[0082]第三求和子單元,用于將第二處理子單元?jiǎng)澐值玫降臅r(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ù)載。
[0083]第四求和子單元,用于將每個(gè)時(shí)間單位的時(shí)長(zhǎng)及其對(duì)應(yīng)的權(quán)重相乘后做和,得到T裳減后的總時(shí)長(zhǎng)。
[0084]第二獲取子單元,用于利用CPU累積運(yùn)行的負(fù)載除以T衰減后的總時(shí)長(zhǎng)與fmax的乘積,得到CPU平均負(fù)載,fmax為T內(nèi)CPU使用的頻率中最大的頻率。
[0085]將CPU的頻率作為一個(gè)衡量因子加入到CPU平均負(fù)載的計(jì)算方法中,使得計(jì)算得到的CPU平均負(fù)載值更為準(zhǔn)確。
[0086]本發(fā)明的第七實(shí)施方式涉及一種終端中多核處理器熱插拔控制裝置,第七實(shí)施方式在第五實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:除計(jì)算單元和第一判斷單元之外,該裝置還包括:
[0087]檢測(cè)單元,用于周期性的檢測(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)度相除得到。
[0088]第二判斷單元,用于判斷負(fù)載變化率是否大于第一預(yù)設(shè)閾值。
[0089]求和單元,用于當(dāng)負(fù)載變化率大于第一預(yù)設(shè)閾值時(shí),將負(fù)載變化率與預(yù)設(shè)的負(fù)載變化因子的乘積及CPU平均負(fù)載的和作為最終的CPU平均負(fù)載。
[0090]由于具有CPU的系統(tǒng)是個(gè)時(shí)變系統(tǒng),外界事件或環(huán)境變化會(huì)引起系統(tǒng)波動(dòng),因此,通過第二判斷單元判斷檢測(cè)單元檢測(cè)到的負(fù)載變化率是否大于第一預(yù)設(shè)閾值,在負(fù)載變化率大于第一預(yù)設(shè)閾值時(shí),將負(fù)載變化率加入到CPU平均負(fù)載值的計(jì)算中,從而能夠體現(xiàn)出最終的熱插拔判決方法是根據(jù)負(fù)載的變化情況得出的,更加符合CPU的負(fù)載特性,提高了終端系統(tǒng)的交互性和及時(shí)性,充分發(fā)揮出多核的優(yōu)勢(shì)。
[0091]本發(fā)明的第八實(shí)施方式涉及一種終端中多核處理器熱插拔控制裝置,第八實(shí)施方式在第五實(shí)施方式基礎(chǔ)上做了進(jìn)一步改進(jìn),主要改進(jìn)之處在于:除計(jì)算單元和第一判斷單元之外,該裝置還包括:
[0092]第一設(shè)置單元,用于當(dāng)當(dāng)前活動(dòng)線程數(shù)大于第二預(yù)設(shè)閾值時(shí),設(shè)置CPU插入。
[0093]第二設(shè)置單元,用于當(dāng)當(dāng)前活動(dòng)線程數(shù)與在線CPU數(shù)的差值大于第三預(yù)設(shè)閾值時(shí),設(shè)置在線CPU數(shù)不變。
[0094]第三設(shè)置單元,用于在預(yù)設(shè)時(shí)間內(nèi),當(dāng)當(dāng)前活動(dòng)線程數(shù)一直小于在線CPU數(shù)時(shí),設(shè)置CPU拔出。
[0095]在判斷是否“插/拔/保持”