專利名稱:一種在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測cpu占用率的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及多任務(wù)實(shí)時(shí)操作系統(tǒng)。
背景技術(shù):
VxWorks是windriver公司的一種嵌入式商用操作系統(tǒng)產(chǎn)品,也是目前應(yīng)用比較廣泛的高性能多任務(wù)實(shí)時(shí)操作系統(tǒng)內(nèi)核,具有先進(jìn)的網(wǎng)絡(luò)功能,支持多種不同的處理器上軟件的開發(fā)研制。在嵌入式軟件開發(fā)過程中,多個(gè)任務(wù)運(yùn)行在一塊目標(biāo)板上,各個(gè)任務(wù)根據(jù)一定的規(guī)則占用CPU運(yùn)行。
VxWorks系統(tǒng)中CPU忙閑情況如圖1所示,任務(wù)間進(jìn)行切換時(shí)需要VxWorks內(nèi)核處理,內(nèi)核處理會占用CPU執(zhí)行時(shí)間。同時(shí)由于實(shí)時(shí)系統(tǒng)的特征,會有外部中斷請求打斷任務(wù)執(zhí)行的情況發(fā)生,這部分時(shí)間也應(yīng)該算在CPU忙的時(shí)間中。空閑任務(wù)指的是在VxWorks任務(wù)優(yōu)先級范圍內(nèi),相對其它所有應(yīng)用任務(wù)的優(yōu)先級較低的一個(gè)任務(wù),以估計(jì)CPU相對較閑的時(shí)間。
根據(jù)在實(shí)際采用的摩托羅拉PowerPC芯片系列-PowerPC850、PowerPC860和PowerPC8260芯片的目標(biāo)板上運(yùn)行實(shí)驗(yàn)的結(jié)果和參考VxWorks的在線幫助等技術(shù)文檔中關(guān)于CPU使用情況統(tǒng)計(jì)方面的描述,由于VxWorks提供的統(tǒng)計(jì)任務(wù)在指定時(shí)間段內(nèi)執(zhí)行情況的信息量過多,包含了中斷和內(nèi)核切換的時(shí)間數(shù)統(tǒng)計(jì),比較復(fù)雜難懂,而且不可更改。當(dāng)采樣的時(shí)間點(diǎn)正處于內(nèi)核切換過程中時(shí),得到的CPU占用率值與其它情況下的值相差很大。應(yīng)用者一般只需要簡單明了的知道大概的CPU占用率情況即可,不必進(jìn)行這么多的統(tǒng)計(jì)工作,浪費(fèi)計(jì)算機(jī)寶貴的資源。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,適應(yīng)一般應(yīng)用者的需要,在VxWorks內(nèi)核駐留的系統(tǒng)中,簡化檢測CPU占用率方法。
一種在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測CPU占用率的方法,包括首先在系統(tǒng)初啟時(shí)初始化本方法相關(guān)的統(tǒng)計(jì)空閑任務(wù)出入時(shí)間的數(shù)組,將統(tǒng)計(jì)空閑任務(wù)運(yùn)行時(shí)間的函數(shù)作為鉤子函數(shù)添加到VxWorks任務(wù)切換系統(tǒng)調(diào)用中,并啟動空閑任務(wù)開始運(yùn)行。
在系統(tǒng)中維護(hù)一個(gè)與系統(tǒng)時(shí)鐘同步變化的全局變量,將操作系統(tǒng)本身定義的計(jì)時(shí)單位,設(shè)置為對CPU占用率檢測統(tǒng)計(jì)的時(shí)間間隔基準(zhǔn)。
當(dāng)CPU相對閑時(shí),操作系統(tǒng)內(nèi)核切換到空閑任務(wù)執(zhí)行,記錄進(jìn)入空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間。
當(dāng)CPU開始忙時(shí),系統(tǒng)內(nèi)核切換到其它應(yīng)用任務(wù)執(zhí)行,記錄退出空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間。
定義CPU占用率檢測統(tǒng)計(jì)采樣時(shí)間。
計(jì)算CPU占用率的值,統(tǒng)計(jì)CPU占用率的峰值,并打印對CPU占用率的檢測統(tǒng)計(jì)結(jié)果。
有益效果采用本發(fā)明所述技術(shù)方案,在嵌入式開發(fā)的多任務(wù)實(shí)時(shí)操作系統(tǒng)環(huán)境中,與多任務(wù)實(shí)時(shí)操作系統(tǒng)內(nèi)核緊密結(jié)合,利用多任務(wù)實(shí)時(shí)操作系統(tǒng)提供的系統(tǒng)調(diào)用、任務(wù)管理和中斷定時(shí)來實(shí)現(xiàn)對CPU占用率的檢測統(tǒng)計(jì),提高了系統(tǒng)的靈活性,克服了現(xiàn)有技術(shù)中多任務(wù)實(shí)時(shí)操作系統(tǒng)自身提供的對CPU占用率檢測統(tǒng)計(jì)方法復(fù)雜和不可更改的缺陷,且統(tǒng)計(jì)的結(jié)果與VxWorks本身提供的檢測工具得出的結(jié)果基本一致。
并且采用所述方法編寫的程序代碼非常短,實(shí)現(xiàn)的代碼不超過200行,通用性強(qiáng)作為一個(gè)獨(dú)立的單元,可隨時(shí)加入系統(tǒng)或從系統(tǒng)中剝離,節(jié)約了使用多任務(wù)實(shí)時(shí)操作系統(tǒng)提供工具時(shí)的較大額外空間開銷,通常使用VxWorks提供的方法會使最終生成的版本增加100K左右,其計(jì)算過程對整個(gè)系統(tǒng)性能的影響較小,不會在內(nèi)核切換時(shí)打印信息從而降低執(zhí)行效率。
圖1實(shí)時(shí)系統(tǒng)CPU忙閑情況圖2空閑任務(wù)執(zhí)行時(shí)間統(tǒng)計(jì)流程圖3CPU占用率計(jì)算流程具體實(shí)施方式
下面結(jié)合附圖,以多任務(wù)實(shí)時(shí)操作系統(tǒng)內(nèi)核VxWorks為例,對實(shí)施本發(fā)明所述的技術(shù)方案進(jìn)行詳細(xì)描述。
VxWorks系統(tǒng)的CPU忙閑情況如圖1所示,任務(wù)間進(jìn)行切換時(shí)需要VxWorks內(nèi)核處理,內(nèi)核處理會占用CPU執(zhí)行時(shí)間。同時(shí)由于實(shí)時(shí)系統(tǒng)的特征,會有外部中斷請求打斷任務(wù)執(zhí)行的情況發(fā)生,這部分時(shí)間也應(yīng)該算在CPU忙的時(shí)間中??臻e任務(wù)指的是在VxWorks任務(wù)優(yōu)先級范圍內(nèi),相對其它所有應(yīng)用任務(wù)的優(yōu)先級較低的一個(gè)任務(wù),以估計(jì)CPU相對較閑的時(shí)間。
采用本發(fā)明所述方法,在VxWorks系統(tǒng)中檢測CPU占用率的操作步驟如下1、首先在VxWorks系統(tǒng)初啟時(shí)初始化本方法相關(guān)的統(tǒng)計(jì)空閑任務(wù)出入時(shí)間的數(shù)組,將統(tǒng)計(jì)空閑任務(wù)運(yùn)行時(shí)間的函數(shù)作為鉤子函數(shù)添加到VxWorks任務(wù)切換系統(tǒng)調(diào)用中,并啟動空閑任務(wù)開始運(yùn)行。
2、在VxWorks系統(tǒng)中維護(hù)一個(gè)與系統(tǒng)時(shí)鐘同步變化的全局變量,將操作系統(tǒng)VxWorks本身定義的計(jì)時(shí)單位,設(shè)置為對CPU占用率檢測統(tǒng)計(jì)的時(shí)間間隔基準(zhǔn)。
3、當(dāng)CPU相對閑時(shí),即在CPU無其它應(yīng)用任務(wù)執(zhí)行時(shí),VxWorks系統(tǒng)內(nèi)核切換到空閑任務(wù)執(zhí)行,記錄進(jìn)入空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間。
在空閑任務(wù)中,只執(zhí)行無限循環(huán)。在循環(huán)中執(zhí)行讀取當(dāng)前系統(tǒng)時(shí)間的VxWorks系統(tǒng)調(diào)用。
當(dāng)CPU開始忙時(shí),即在開始執(zhí)行其它應(yīng)用任務(wù)或處理中斷等情況下,VxWorks系統(tǒng)內(nèi)核切換到其它應(yīng)用任務(wù)執(zhí)行,記錄退出空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間。
4、根據(jù)實(shí)際需要自定義CPU占用率檢測統(tǒng)計(jì)采樣時(shí)間。
5、計(jì)算CPU占用率的值,統(tǒng)計(jì)CPU占用率的峰值,并打印對CPU占用率的檢測統(tǒng)計(jì)結(jié)果。
若采樣時(shí)間未到,則退出計(jì)算CPU占用率采樣時(shí)間到時(shí),根據(jù)記錄的進(jìn)入和退出空閑任務(wù)的系統(tǒng)時(shí)間計(jì)算出在該采樣時(shí)間段內(nèi)空閑任務(wù)執(zhí)行的時(shí)間數(shù)。
由此可間接得到CPU忙時(shí)的總執(zhí)行時(shí)間數(shù),按比率公式1000-(空閑任務(wù)執(zhí)行時(shí)間/總執(zhí)行時(shí)間數(shù))*1000可得出CPU占用率的值,此處以1000表示100.0%,即計(jì)算的值精確到小數(shù)點(diǎn)后1位。
打印對CPU占用率的檢測統(tǒng)計(jì)結(jié)果。
在應(yīng)用設(shè)置的打印信息時(shí)間間隔到時(shí),打印出該時(shí)間點(diǎn)的CPU占用率和系統(tǒng)運(yùn)行至今的累計(jì)CPU占用率峰值。打印信息時(shí)間間隔一般為采樣時(shí)間間隔的整數(shù)倍。
采用所述的基于VxWorks系統(tǒng)中對CPU占用率的檢測統(tǒng)計(jì)方法,在VxWorks內(nèi)核駐留的系統(tǒng)中,可以實(shí)現(xiàn)檢測系統(tǒng)中CPU在某一時(shí)間段內(nèi)忙閑情況的功能,從而調(diào)整任務(wù)自身的屬性、減少任務(wù)間的相互影響,使系統(tǒng)達(dá)到理想的吞吐量值。
在具體項(xiàng)目中,試用本發(fā)明所述的對CPU占用率的檢測統(tǒng)計(jì)方法和VxWorks自身提供的檢測工具進(jìn)行比較,在采用相同采樣時(shí)間時(shí),兩者得到的CPU忙閑情況值基本相同,說明使用本發(fā)明所述的對CPU占用率檢測統(tǒng)計(jì)方法能夠比較真實(shí)的反映出CPU的使用情況。由于采用所述方法編制計(jì)算CPU占用率的程序代碼量不到200行,對設(shè)備也沒有提出額外的要求,通常使用VxWorks提供的方法會使最終生成的版本增加100K左右,不會在內(nèi)核切換時(shí)打印信息從而降低執(zhí)行效率,作為獨(dú)立的代碼易于使用和維護(hù)。
權(quán)利要求
1.一種在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測CPU占用率的方法,包括首先在系統(tǒng)初啟時(shí)初始化本方法相關(guān)的統(tǒng)計(jì)空閑任務(wù)出入時(shí)間的數(shù)組,將統(tǒng)計(jì)空閑任務(wù)運(yùn)行時(shí)間的函數(shù)作為鉤子函數(shù)添加到VxWorks任務(wù)切換系統(tǒng)調(diào)用中,并啟動空閑任務(wù)開始運(yùn)行;在系統(tǒng)中維護(hù)一個(gè)與系統(tǒng)時(shí)鐘同步變化的全局變量,將操作系統(tǒng)本身定義的計(jì)時(shí)單位,設(shè)置為對CPU占用率檢測統(tǒng)計(jì)的時(shí)間間隔基準(zhǔn);當(dāng)CPU相對閑時(shí),操作系統(tǒng)內(nèi)核切換到空閑任務(wù)執(zhí)行,記錄進(jìn)入空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間;當(dāng)CPU開始忙時(shí),系統(tǒng)內(nèi)核切換到其它應(yīng)用任務(wù)執(zhí)行,記錄退出空閑任務(wù)的當(dāng)前系統(tǒng)時(shí)間;定義CPU占用率檢測統(tǒng)計(jì)采樣時(shí)間;計(jì)算CPU占用率的值,統(tǒng)計(jì)CPU占用率的峰值,并打印對CPU占用率的檢測統(tǒng)計(jì)結(jié)果。
2.如權(quán)利要求1所述的在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測CPU占用率的方法,其特征是所述啟動空閑任務(wù)開始運(yùn)行,在空閑任務(wù)中,只執(zhí)行無限循環(huán);在循環(huán)中執(zhí)行讀取當(dāng)前系統(tǒng)時(shí)間的系統(tǒng)調(diào)用。
3.如權(quán)利要求1所述的在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測CPU占用率的方法,其特征是所述打印信息時(shí)間間隔為采樣時(shí)間間隔的整數(shù)倍。
全文摘要
本發(fā)明公開了一種在多任務(wù)實(shí)時(shí)操作系統(tǒng)中檢測CPU占用率的方法,在嵌入式開發(fā)的多任務(wù)實(shí)時(shí)操作系統(tǒng)環(huán)境中,與多任務(wù)實(shí)時(shí)操作系統(tǒng)內(nèi)核緊密結(jié)合,利用多任務(wù)實(shí)時(shí)操作系統(tǒng)提供的系統(tǒng)調(diào)用、任務(wù)管理和中斷定時(shí)來實(shí)現(xiàn)對CPU占用率的檢測統(tǒng)計(jì),提高了系統(tǒng)的靈活性,克服了現(xiàn)有技術(shù)中多任務(wù)實(shí)時(shí)操作系統(tǒng)自身提供的對CPU占用率檢測統(tǒng)計(jì)方法復(fù)雜和不可更改的缺陷。用于多任務(wù)實(shí)時(shí)操作系統(tǒng)之中。
文檔編號G06F11/00GK1508683SQ02157690
公開日2004年6月30日 申請日期2002年12月17日 優(yōu)先權(quán)日2002年12月17日
發(fā)明者邱靜, 陳愛民, 馮敏, 邱 靜 申請人:深圳市中興通訊股份有限公司