專利名稱:一種在實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及協(xié)處理器技術(shù)領(lǐng)域,尤其涉及一種在實(shí)時監(jiān)測協(xié)處理器負(fù)載狀 態(tài)的方法及裝置。
背景技術(shù):
在嵌入式系統(tǒng),特別是在主從系統(tǒng)中,實(shí)時準(zhǔn)確的獲取系統(tǒng)的負(fù)載狀態(tài)有 很重要的意義。通過當(dāng)前負(fù)載狀態(tài),可以控制是否可以啟動新的應(yīng)用,可以決 定是否降低功耗來節(jié)省電能,可以提高調(diào)試效率。現(xiàn)有技術(shù)中尚未有對系統(tǒng)的負(fù)載狀況進(jìn)行實(shí)時更新的機(jī)制,多是通過實(shí)驗(yàn) 數(shù)據(jù)來大致確定負(fù)載狀況,不夠精確。發(fā)明內(nèi)容本發(fā)明提供一種在實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法及裝置,用以解決現(xiàn) 有技術(shù)中存在的通過實(shí)驗(yàn)數(shù)據(jù)確定負(fù)載不夠精確的問題。本發(fā)明的目的主要是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明提供了 一種實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法,所述方法包括 步驟A:計(jì)算協(xié)處理器在單位時間內(nèi)單一執(zhí)行預(yù)定任務(wù)的最大處理能力; 步驟B:計(jì)算該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理 能力;步驟C:將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和執(zhí)行單一預(yù)定 任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,通過該空閑率進(jìn)而計(jì)算得 到協(xié)處理器的負(fù)載率。進(jìn)一步地,所述方法還包括協(xié)處理器將計(jì)算得到的負(fù)載率存放到共享內(nèi)存區(qū)中,并實(shí)時更新當(dāng)前的負(fù) 載率;主控制器根據(jù)需要定期或不定期的從共享內(nèi)存區(qū)域讀取到協(xié)處理器當(dāng)前 的負(fù)載率,從而進(jìn)行相應(yīng)的處理。進(jìn)一步地,所述步驟A具體包括預(yù)定義一個變量及一個用于在死循環(huán)中對該變量進(jìn)行累加的任務(wù); 設(shè)置該任務(wù)的優(yōu)先級最高,計(jì)算單位時間內(nèi)協(xié)處理器執(zhí)行該任務(wù)時該變量 的最大變化值。進(jìn)一步地,所述步驟B具體包括 設(shè)置該任務(wù)在協(xié)處理器正常工作時的優(yōu)先級最低; 計(jì)算單位時間內(nèi)協(xié)處理器執(zhí)行該任務(wù)時該變量的變化值。進(jìn)一步地,所述步驟C具體包括用單位時間內(nèi)該變量的變化值與單位時 間內(nèi)該變量的最大變化值相除,得到當(dāng)前單位時間內(nèi)協(xié)處理器的空閑率,進(jìn)而 得到當(dāng)前單位時間內(nèi)協(xié)處理器的負(fù)載率。本發(fā)明還提供了 一種實(shí)時檢測協(xié)處理器負(fù)載狀態(tài)的裝置,所述裝置包括 第一計(jì)算單元,用于計(jì)算協(xié)處理器在單位時間內(nèi)單一執(zhí)行預(yù)定任務(wù)的最大處理能力,及該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能 力;第二計(jì)算單元,用于將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和 執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,通過該空閑 率進(jìn)而計(jì)算得到協(xié)處理器的負(fù)載率。進(jìn)一步地,所述裝置還包括更新單元,用于保存計(jì)算得到的協(xié)處理器的負(fù)載率,并實(shí)時更新當(dāng)前的負(fù) 載率,并根據(jù)主控制器的需要向其提供協(xié)處理器的負(fù)載率。本發(fā)明有益效果如下本發(fā)明在不影響系統(tǒng)正常工作的情況下,利用協(xié)處理器CPU的空閑時間實(shí) 時準(zhǔn)確地計(jì)算協(xié)處理器的負(fù)載率,并通知給主處理器。
圖1為本發(fā)明所述方法的流程示意圖; 圖2為本發(fā)明所述方法的示例流程示意圖; 圖3為本發(fā)明所述裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖1和附圖2對本發(fā)明所述方法進(jìn)行詳細(xì)說明。如圖1所示,圖1為本發(fā)明所述方法的流程示意圖,具體可以包括如下步驟步驟101:計(jì)算協(xié)處理器在單位時間內(nèi)執(zhí)行單一預(yù)定任務(wù)的最大處理能力。 步驟102:計(jì)算該協(xié)處理器正常工作時,即協(xié)處理器執(zhí)行其他任務(wù)的同時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能力。步驟103:將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率;步驟104:用100減去空閑率,得到協(xié)處理器的負(fù)載率。步驟105:協(xié)處理器將計(jì)算得到的負(fù)載率存放到共享內(nèi)存區(qū)中,并實(shí)時更新當(dāng)前的負(fù)載率;主控制器根據(jù)需要定期或不定期的從共享內(nèi)存區(qū)域讀取到協(xié)處理器當(dāng)前的負(fù)載率,從而進(jìn)行相應(yīng)的處理。為了便于理解本發(fā)明,下面舉例對本發(fā)明所述方法作進(jìn)一步闡述。如圖2所示,圖2為本發(fā)明所述方法的示例流程示意圖,具體可以包括以下步驟步驟201:定義一個全局變量§_0>111 ,初值設(shè)為0。步驟202:創(chuàng)建一個任務(wù)Task_Count,任務(wù)的功能就是在一個死循環(huán)中不斷 對g—Count累加操作。步驟203:在系統(tǒng)初始化階段把在Task_Count的優(yōu)先級設(shè)置最高,讓它運(yùn) 行100ms,記錄此間g—Count的變化值,將該100ms的變化值除以10得到10ms 的單位時間內(nèi)g_Count的變化值g_Delta—MaxCount,即單位時間內(nèi)協(xié)處理器單 一執(zhí)行任務(wù)Task_Coun的最大處理能力。步驟204:系統(tǒng)正常工作,把Task_Count的優(yōu)先級設(shè)置為最低,創(chuàng)建一個 10ms的Timer (定時器),所述Timer設(shè)定時間的長短與單位時間相同,在處理 函數(shù)中做以下處理a:獲取當(dāng)前的g一Count值b:計(jì)算當(dāng)前g—Count值與上一次的進(jìn)入Timer的g_Count的差值 Delta—Count,即協(xié)處理器正常工作時,單位時間內(nèi)的處理能力;c:用差值Delta_Count除以g_Delta—MaxCount再乘以100,即得出最近10ms 當(dāng)前系統(tǒng)的空閑率d:用100減空閑率就是負(fù)載率load—10mse:對于最近100ms,Is的負(fù)載率的更新方法是新的load—100ms二load—10ms承0.1 +舊的load_100ms*0.9 新的1oadJs二loadJ0ms承0.01+舊的load—ls*0.99這樣就完成了對最近lOms,lOOms和Is的協(xié)處理器負(fù)載率的更新,如果需 要更長時間的負(fù)載率則可以繼續(xù)按照e)的方法添加。步驟205:把更新了的load_10ms, load—100ms, load—Is的值寫入到主控制器 也可以訪問的共享內(nèi)存區(qū)域。步驟206:主控制器一側(cè)可以根據(jù)實(shí)際應(yīng)用,定期或不定期的從共享內(nèi)存區(qū) 域讀取到協(xié)處理當(dāng)前的系統(tǒng)負(fù)載情況,作相應(yīng)的處理,所述處理在現(xiàn)有技術(shù)中 已有成熟解決方案,此處不做說明。下面結(jié)合附圖3對本發(fā)明所述裝置進(jìn)行詳細(xì)i兌明。如圖3所示,圖3為本發(fā)明所述裝置的結(jié)構(gòu)示意圖,具體可以包括第一 計(jì)算單元、第二計(jì)算單元及更新單元,下面分別對各個單元進(jìn)行詳細(xì)說明。第一計(jì)算單元,主要負(fù)責(zé)計(jì)算協(xié)處理器在單位時間內(nèi)執(zhí)行單一預(yù)定任務(wù)的 最大處理能力,及該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能力;具體的說就是,通過定義一個全局變量g_Count和創(chuàng)建一個用于在死 循環(huán)中對g—Count進(jìn)行累加的任務(wù)Task—Count,分別記錄協(xié)處理器在單一執(zhí)行 該任務(wù)和在正常工作時執(zhí)行該任務(wù)時g—Count的變化值一g—Delta—MaxCount和 Delta—Count 。第二計(jì)算單元,主要負(fù)責(zé)將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能 力和執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,進(jìn)而得 到協(xié)處理器的負(fù)載率;具體的說就是,用差值Delta—Count除以在 g_Delta_MaxCount再乘以100,即得出當(dāng)前單位時間的空閑率,用100減去空 閑率即得到協(xié)處理器的負(fù)載率。更新單元,主要負(fù)責(zé)保存計(jì)算得到的協(xié)處理器的負(fù)載率,還可以根據(jù)單位 時間內(nèi)的負(fù)載率計(jì)算得到更長時間內(nèi)協(xié)處理器的負(fù)載率,將更新的各個時間段 的當(dāng)前負(fù)載率存到共享內(nèi)存區(qū)域,并根據(jù)主控制器的需要向其提供協(xié)處理器的 負(fù)載率。對于本發(fā)明所述裝置的具體實(shí)施過程,由于在上面方法中已作詳細(xì)說明, 此處不再贅述。綜上所述,本發(fā)明實(shí)施例提供了實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法及監(jiān)測 裝置,在不影響系統(tǒng)正常工作的情況下,利用協(xié)處理器CPU的空閑時間實(shí)時準(zhǔn) 確的計(jì)算協(xié)處理器的負(fù)載率,并通知給主處理器,由主處理器進(jìn)行相應(yīng)處理。 這里,本發(fā)明實(shí)施例中僅以lOms作為一個單位時間,計(jì)算獲得協(xié)處理器在最近 10ms、 100ms及Is內(nèi)的協(xié)處理器負(fù)載率,但本領(lǐng)域普通技術(shù)人員應(yīng)該知道,本 發(fā)明實(shí)施例并不僅僅局限于lOms的單位時間,而可以根據(jù)實(shí)際情況設(shè)定其大于 或小于10ms均可,其計(jì)算出來的協(xié)處理器負(fù)載率也不僅僅局限于10ms、 100ms 及Is內(nèi),本領(lǐng)域普通技術(shù)人員可以根據(jù)本發(fā)明實(shí)施例所述方法及裝置輕易推導(dǎo) 出來,故此處不再——舉例。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限 于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想 到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范 圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法,其特征在于,所述方法包括步驟A計(jì)算協(xié)處理器在單位時間內(nèi)單一執(zhí)行預(yù)定任務(wù)的最大處理能力;步驟B計(jì)算該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能力;步驟C將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,通過該空閑率進(jìn)而計(jì)算得到協(xié)處理器的負(fù)載率。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 協(xié)處理器將計(jì)算得到的負(fù)載率存放到共享內(nèi)存區(qū)中,并實(shí)時更新當(dāng)前的負(fù)載率;主控制器根據(jù)需要定期或不定期的從共享內(nèi)存區(qū)域讀取到協(xié)處理器當(dāng)前 的負(fù)載率,從而進(jìn)行相應(yīng)的處理。
3、 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述步驟A具體包括 預(yù)定義一個變量及一個用于在死循環(huán)中對該變量進(jìn)行累加的任務(wù); 設(shè)置該任務(wù)的優(yōu)先級最高,計(jì)算單位時間內(nèi)協(xié)處理器執(zhí)行該任務(wù)時該變量的最大變化值。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟B具體包括 設(shè)置該任務(wù)在協(xié)處理器正常工作時的優(yōu)先級最低;計(jì)算單位時間內(nèi)協(xié)處理器執(zhí)行該任務(wù)時該變量的變化值。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟C具體包括用 單位時間內(nèi)該變量的變化值與單位時間內(nèi)該變量的最大變化值相除,得到當(dāng)前 單位時間內(nèi)協(xié)處理器的空閑率,通過該空閑率進(jìn)而計(jì)算得到當(dāng)前單位時間內(nèi)協(xié) 處理器的負(fù)載率。
6、 一種實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的裝置,其特征在于,所述裝置包括: 第一計(jì)算單元,用于計(jì)算協(xié)處理器在單位時間內(nèi)單一執(zhí)行預(yù)定任務(wù)的最大處理能力,及該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能力;第二計(jì)算單元,用于將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和 執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,通過該空閑 率進(jìn)而計(jì)算得到協(xié)處理器的負(fù)載率。
7、根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括 更新單元,用于保存計(jì)算得到的協(xié)處理器的負(fù)載率,并實(shí)時更新當(dāng)前的負(fù) 載率,并根據(jù)主控制器的需要向其提供協(xié)處理器的負(fù)載率。
全文摘要
本發(fā)明公開了一種實(shí)時監(jiān)測協(xié)處理器負(fù)載狀態(tài)的方法及裝置,所述方法包括計(jì)算協(xié)處理器在單位時間內(nèi)單一執(zhí)行預(yù)定任務(wù)的最大處理能力,計(jì)算該協(xié)處理器正常工作時,在單位時間內(nèi)執(zhí)行該預(yù)定任務(wù)的處理能力,將協(xié)處理器正常工作時執(zhí)行該預(yù)定任務(wù)的處理能力和執(zhí)行單一預(yù)定任務(wù)的最大處理能力相除,得到協(xié)處理器的空閑率,通過該空閑率進(jìn)而計(jì)算得到協(xié)處理器的負(fù)載率;所述裝置包括第一計(jì)算單元、第二計(jì)算單元及更新單元。本發(fā)明在不影響系統(tǒng)正常工作的情況下,利用協(xié)處理器CPU的空閑時間實(shí)時準(zhǔn)確地計(jì)算協(xié)處理器的負(fù)載率,并通知給主處理器。
文檔編號G06F11/34GK101334752SQ20081011755
公開日2008年12月31日 申請日期2008年8月1日 優(yōu)先權(quán)日2008年8月1日
發(fā)明者李志剛 申請人:北京中星微電子有限公司