專(zhuān)利名稱(chēng):Cpu使用率分析系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種CPU使用率分析系統(tǒng)及方法,尤其涉及一種應(yīng)用于移動(dòng)裝置中的 CPU使用率分析系統(tǒng)及方法。
背景技術(shù):
ARM (Advanced RISC Machines)架構(gòu)之移動(dòng)裝置(如手機(jī)和PDA等)大部分采用 Nucleus操作系統(tǒng),在Nucleus操作系統(tǒng)中并沒(méi)有Windows操作系統(tǒng)所提供的工作管理員程 序,讓用戶(hù)可以查看CPU使用率,以便分析了解移動(dòng)裝置的性能。目前,部分移動(dòng)裝置可以通過(guò)軟件定時(shí)器(如日志管理軟件,Software Log)來(lái)模 擬CPU的使用率,但使用軟件定時(shí)器模擬獲得的結(jié)果不夠精確。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種CPU使用率分析系統(tǒng),其可精確計(jì)算出移動(dòng)裝置 的CPU使用率。此外,還有必要提供一種CPU使用率分析方法,其可精確計(jì)算出移動(dòng)裝置的CPU使用率。所述CPU使用率分析系統(tǒng),應(yīng)用于移動(dòng)裝置中,該移動(dòng)裝置配置有硬件定時(shí)器。所 述系統(tǒng)包括參數(shù)設(shè)置模塊,用于設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度;時(shí)間讀 取模塊,用于在每個(gè)CPU使用率分析周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí),讀取硬件定時(shí)器的當(dāng)前 時(shí)間,并將該硬件定時(shí)器的值重設(shè)為最大值,同時(shí),移動(dòng)裝置操作系統(tǒng)中的任務(wù)調(diào)度列表決 定下一個(gè)執(zhí)行的線程;計(jì)算模塊,用于根據(jù)所讀取的硬件定時(shí)器的當(dāng)前時(shí)間計(jì)算該被掛起 的線程占用CPU的時(shí)間,并將該計(jì)算的時(shí)間存儲(chǔ)在一個(gè)數(shù)組元素中,該被掛起的線程占用 CPU的時(shí)間等于硬件定時(shí)器的最大值減去硬件定時(shí)器的當(dāng)前時(shí)間;所述計(jì)算模塊,還用于 當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素的值計(jì)算出CPU的使用率。所述CPU使用率分析方法,應(yīng)用于移動(dòng)裝置中,該移動(dòng)裝置配置有硬件定時(shí)器。該方 法包括如下步驟設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度;在每個(gè)CPU使用率分析 周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí),讀取硬件定時(shí)器的當(dāng)前時(shí)間,并將該硬件定時(shí)器的值重設(shè)為最 大值,同時(shí),移動(dòng)裝置操作系統(tǒng)中的任務(wù)調(diào)度列表決定下一個(gè)執(zhí)行的線程;根據(jù)所讀取的硬 件定時(shí)器的當(dāng)前時(shí)間計(jì)算該被掛起的線程占用CPU的時(shí)間,并將該計(jì)算的時(shí)間存儲(chǔ)在一個(gè)數(shù) 組元素中,該被掛起的線程占用CPU的時(shí)間等于硬件定時(shí)器的最大值減去硬件定時(shí)器的當(dāng)前 時(shí)間;當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素的值計(jì)算出CPU的使用率。相較于現(xiàn)有技術(shù),所述的CPU使用率分析系統(tǒng)及方法,應(yīng)用于移動(dòng)裝置中,可以精 確計(jì)算出移動(dòng)裝置的CPU使用率。
圖1是本發(fā)明CPU使用率分析系統(tǒng)較佳實(shí)施例的硬件架構(gòu)圖。
圖2是圖1中CPU使用率分析單元的功能模塊圖。圖3是本發(fā)明CPU使用率分析方法較佳實(shí)施例的流程圖。
具體實(shí)施例方式如圖1所示,是本發(fā)明CPU使用率分析系統(tǒng)較佳實(shí)施例的硬件架構(gòu)圖。該系統(tǒng) 應(yīng)用于移動(dòng)裝置中(本實(shí)施例以手機(jī)為例進(jìn)行說(shuō)明),主要包括中央處理器(Central ProcessingUnit, CPU) 1、存儲(chǔ)器2、輸入/輸出設(shè)備3及手機(jī)主板4。所述中央處理器1分 別與所述存儲(chǔ)器2、輸入/輸出設(shè)備3和手機(jī)主板4相連,該存儲(chǔ)器2與手機(jī)主板4相連。 輸入/輸出設(shè)備3包括LCD液晶顯示屏和鍵盤(pán)等,用于顯示資料及輸入信息。其中,所述存 儲(chǔ)器2包括操作系統(tǒng)21和CPU使用率分析單元20。所述操作系統(tǒng)21中包含有任務(wù)調(diào)度列表,該任務(wù)調(diào)度列表用于控制線程的執(zhí)行。 例如,當(dāng)一個(gè)線程被掛起后,任務(wù)調(diào)度列表將決定下一個(gè)執(zhí)行的線程。所述中央處理器1用于調(diào)用所述CPU使用率分析單元20,并控制該CPU使用率分 析單元20的執(zhí)行。該CPU使用率分析單元20用于利用手機(jī)主板4中的硬件定時(shí)器40模 擬CPU的使用率。所述硬件定時(shí)器40內(nèi)嵌于手機(jī)主板4中,該硬件定時(shí)器40可以是Timel定時(shí)器、 Time2定時(shí)器和Watchdog定時(shí)器(看門(mén)狗定時(shí)器)等,本實(shí)施例中采用Time2定時(shí)器。硬 件定時(shí)器40可以精確到納秒(ns),如Time2定時(shí)器的精確度可以達(dá)到2. 4623納秒,而軟件 定時(shí)器只能精確到毫秒(ms),一般為4. 615毫秒。如圖2所示,是圖1中所示CPU使用率分析單元20的功能模塊圖。所述CPU使用 率分析單元20包括參數(shù)設(shè)置模塊201、線程設(shè)定模塊202、時(shí)間讀取模塊203及計(jì)算模塊 204。本發(fā)明所稱(chēng)的模塊是完成一特定功能的計(jì)算機(jī)程序段,比程序更適合于描述軟件在計(jì) 算機(jī)中的執(zhí)行過(guò)程,因此在本發(fā)明以下對(duì)軟件描述中都以模塊描述。所述參數(shù)設(shè)置模塊201用于設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度,其 中,每次分析的時(shí)間長(zhǎng)度從每次CPU使用率分析周期到達(dá)的時(shí)刻開(kāi)始計(jì)時(shí),且每次分析的 時(shí)間長(zhǎng)度小于或等于CPU使用率分析周期。假設(shè)CPU使用率分析周期為10分鐘,每次分析 的時(shí)間長(zhǎng)度為100秒,則每隔10分鐘,分析當(dāng)前CPU在100秒內(nèi)的使用率。所述線程設(shè)定模塊202用于設(shè)定一個(gè)優(yōu)先級(jí)最低的線程作為空閑運(yùn)轉(zhuǎn)線程,并將 該空閑運(yùn)轉(zhuǎn)線程放置于一個(gè)無(wú)限循環(huán)中,以防止操作系統(tǒng)21進(jìn)入休眠模式。該空閑運(yùn)轉(zhuǎn)線 程可以是新增的Idle(空閑)線程,或是將現(xiàn)有的一個(gè)線程設(shè)置成最低優(yōu)先級(jí)以作為空閑 運(yùn)轉(zhuǎn)線程。所述時(shí)間讀取模塊203用于在每個(gè)CPU使用率分析周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí), 讀取硬件定時(shí)器40的當(dāng)前時(shí)間。同時(shí),操作系統(tǒng)21的任務(wù)調(diào)度列表將決定下一個(gè)執(zhí)行的 線程。每次讀取完硬件定時(shí)器40的當(dāng)前時(shí)間后,時(shí)間讀取模塊203都將該硬件定時(shí)器40 的值重設(shè)為最大值。在本實(shí)施例中,硬件定時(shí)器40的最大值為0xFFFF。其中,一個(gè)線程被掛起的情形包括(1)該線程執(zhí)行完畢;(2)當(dāng)該線程運(yùn)行時(shí),操作系統(tǒng)21發(fā)出一個(gè)中斷請(qǐng)求;(3)當(dāng)該線程運(yùn)行時(shí),有其它更高優(yōu)先級(jí)的線程需要執(zhí)行,該線程主動(dòng)釋放一個(gè)信號(hào)量而被掛起。所述計(jì)算模塊204用于根據(jù)硬件定時(shí)器40的當(dāng)前時(shí)間計(jì)算該被掛起的線程占用 CPU的時(shí)間,并將其存儲(chǔ)在一個(gè)數(shù)組元素中。其中,該被掛起的線程占用CPU的時(shí)間等于硬 件定時(shí)器40的最大值減去硬件定時(shí)器40的當(dāng)前時(shí)間。所述計(jì)算模塊204還用于當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素 的值計(jì)算出CPU的使用率。具體而言,首先,計(jì)算模塊204加總該數(shù)組中所有元素得到所有 線程占用CPU的時(shí)間之和,然后,計(jì)算出每個(gè)線程占用CPU的平均時(shí)間,該每個(gè)線程占用CPU 的平均時(shí)間為所有線程占用CPU的時(shí)間之和除以本次周期內(nèi)執(zhí)行的線程個(gè)數(shù)。最后,計(jì)算 出本次周期內(nèi)CPU的使用率,該CPU的使用率等于每個(gè)線程占用CPU的平均時(shí)間除以每次 分析的時(shí)間長(zhǎng)度。舉例而言,假設(shè)每次分析的時(shí)間長(zhǎng)度為100秒,本次周期內(nèi)執(zhí)行的線程有3個(gè) (ThreadA、Thread B 和 Thread C),其中,Thread A 占用 CPU 的時(shí)間為 30 秒,Thread B 占 用CPU的時(shí)間為40秒,Thread C占用CPU的時(shí)間為50秒。則每個(gè)線程占用CPU的平均時(shí) 間為(30+40+50)/3秒,即40秒,本次周期內(nèi)CPU的使用率為40/100,即40%。如圖3所示,是本發(fā)明CPU使用率分析方法較佳實(shí)施例的流程圖。步驟S1,利用參 數(shù)設(shè)置模塊201設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度。步驟S2,時(shí)間讀取模塊203在每個(gè)CPU使用率分析周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí), 讀取硬件定時(shí)器40的當(dāng)前時(shí)間。同時(shí),操作系統(tǒng)21的任務(wù)調(diào)度列表將決定下一個(gè)執(zhí)行的 線程。每次讀取完硬件定時(shí)器40的當(dāng)前時(shí)間后,時(shí)間讀取模塊203都將該硬件定時(shí)器40 的值重設(shè)為最大值。在本實(shí)施例中,硬件定時(shí)器40的最大值為0xFFFF。其中,一個(gè)線程被掛起的情形包括(1)該線程執(zhí)行完畢;(2)當(dāng)該線程運(yùn)行時(shí),操作系統(tǒng)21發(fā)出一個(gè)中斷請(qǐng)求;(3)當(dāng)該線程運(yùn)行時(shí),有其它更高優(yōu)先級(jí)的線程需要執(zhí)行,該線程主動(dòng)釋放一個(gè)信 號(hào)量而被掛起。步驟S3,計(jì)算模塊204根據(jù)所讀取的硬件定時(shí)器40的當(dāng)前時(shí)間計(jì)算該被掛起的線 程占用CPU的時(shí)間,并將其存儲(chǔ)在一個(gè)數(shù)組元素中。其中,該被掛起的線程占用CPU的時(shí)間 等于硬件定時(shí)器40的最大值減去硬件定時(shí)器40的當(dāng)前時(shí)間。步驟S4,計(jì)算模塊204當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素的 值計(jì)算出CPU的使用率。具體而言,首先,計(jì)算模塊204加總該數(shù)組中所有元素得到所有線 程占用CPU的時(shí)間之和,然后,計(jì)算出每個(gè)線程占用CPU的平均時(shí)間,該每個(gè)線程占用CPU 的平均時(shí)間等于所有線程占用CPU的時(shí)間之和除以本次周期內(nèi)執(zhí)行的線程個(gè)數(shù)。最后,計(jì) 算出本次周期內(nèi)CPU的使用率,該本次周期內(nèi)CPU的使用率等于每個(gè)線程占用CPU的平均 時(shí)間除以每次分析的時(shí)間長(zhǎng)度。在其它實(shí)施例中,所述方法還可以包括如下步驟在步驟S2之前,線程設(shè)定模塊202設(shè)定一個(gè)優(yōu)先級(jí)最低的線程作為空閑運(yùn)轉(zhuǎn)線 程,并將該空閑運(yùn)轉(zhuǎn)線程放置于一個(gè)無(wú)限循環(huán)中,以防止操作系統(tǒng)21進(jìn)入休眠模式。該空 閑運(yùn)轉(zhuǎn)線程可以是新增的Idle線程,或是將現(xiàn)有的一個(gè)線程設(shè)置成最低優(yōu)先級(jí)以作為空 閑運(yùn)轉(zhuǎn)線程。
本實(shí)施例中,所述移動(dòng)裝置可以為手機(jī)或PDA (Personal Digital Assistant,個(gè) 人數(shù)字助理)等具有資料處理功能的電子設(shè)備。最后應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照 較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的 技術(shù)方案進(jìn)行修改或等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
一種CPU使用率分析方法,應(yīng)用于移動(dòng)裝置中,其特征在于,該移動(dòng)裝置配置有硬件定時(shí)器,該方法包括如下步驟設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度;在每個(gè)CPU使用率分析周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí),讀取硬件定時(shí)器的當(dāng)前時(shí)間,并將該硬件定時(shí)器的值重設(shè)為最大值,同時(shí),移動(dòng)裝置操作系統(tǒng)中的任務(wù)調(diào)度列表決定下一個(gè)執(zhí)行的線程;根據(jù)所讀取的硬件定時(shí)器的當(dāng)前時(shí)間計(jì)算該被掛起的線程占用CPU的時(shí)間,并將該計(jì)算的時(shí)間存儲(chǔ)在一個(gè)數(shù)組元素中,該被掛起的線程占用CPU的時(shí)間等于硬件定時(shí)器的最大值減去硬件定時(shí)器的當(dāng)前時(shí)間;及當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素的值計(jì)算出CPU的使用率。
2.如權(quán)利要求1所述的CPU使用率分析方法,其特征在于,在步驟讀取硬件定時(shí)器的當(dāng) 前時(shí)間之前還包括設(shè)定一個(gè)優(yōu)先級(jí)最低的線程作為空閑運(yùn)轉(zhuǎn)線程,并將該空閑運(yùn)轉(zhuǎn)線程放置于一個(gè)無(wú)限 循環(huán)中。
3.如權(quán)利要求2所述的CPU使用率分析方法,其特征在于,所述空閑運(yùn)轉(zhuǎn)線程為新增的 空閑線程,或是將現(xiàn)有的一個(gè)線程設(shè)置成最低優(yōu)先級(jí)以作為空閑運(yùn)轉(zhuǎn)線程。
4.如權(quán)利要求1所述的CPU使用率分析方法,其特征在于,所述線程被掛起的情形包括該線程執(zhí)行完畢;當(dāng)該線程運(yùn)行時(shí),移動(dòng)裝置的操作系統(tǒng)發(fā)出一個(gè)中斷請(qǐng)求;當(dāng)該線程運(yùn)行時(shí),有其它更高優(yōu)先級(jí)的線程需要執(zhí)行,該線程主動(dòng)釋放一個(gè)信號(hào)量而 被掛起。
5.如權(quán)利要求1所述的CPU使用率分析方法,其特征在于,所述步驟根據(jù)該數(shù)組中所有 元素的值計(jì)算出CPU的使用率包括加總該數(shù)組中所有元素得到所有線程占用CPU的時(shí)間之和;計(jì)算出每個(gè)線程占用CPU的平均時(shí)間,所述每個(gè)線程占用CPU的平均時(shí)間等于所有線 程占用CPU的時(shí)間之和除以本次周期內(nèi)執(zhí)行的線程個(gè)數(shù);及計(jì)算出本次周期內(nèi)CPU的使用率,所述本次周期內(nèi)CPU的使用率等于每個(gè)線程占用CPU 的平均時(shí)間除以每次分析的時(shí)間長(zhǎng)度。
6.一種CPU使用率分析系統(tǒng),應(yīng)用于移動(dòng)裝置中,其特征在于,該移動(dòng)裝置配置有硬件 定時(shí)器,所述系統(tǒng)包括參數(shù)設(shè)置模塊,用于設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度;時(shí)間讀取模塊,用于在每個(gè)CPU使用率分析周期內(nèi),當(dāng)一個(gè)線程被掛起時(shí),讀取硬件定 時(shí)器的當(dāng)前時(shí)間,并將該硬件定時(shí)器的值重設(shè)為最大值,同時(shí),移動(dòng)裝置操作系統(tǒng)中的任務(wù) 調(diào)度列表決定下一個(gè)執(zhí)行的線程;計(jì)算模塊,用于根據(jù)所讀取的硬件定時(shí)器的當(dāng)前時(shí)間計(jì)算該被掛起的線程占用CPU的 時(shí)間,并將該計(jì)算的時(shí)間存儲(chǔ)在一個(gè)數(shù)組元素中,該被掛起的線程占用CPU的時(shí)間等于硬 件定時(shí)器的最大值減去硬件定時(shí)器的當(dāng)前時(shí)間;及所述計(jì)算模塊,還用于當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),根據(jù)該數(shù)組中所有元素的值計(jì)算出CPU的使用率。
7.如權(quán)利要求6所述的CPU使用率分析系統(tǒng),其特征在于,所述系統(tǒng)還包括線程設(shè)定模塊,用于設(shè)定一個(gè)優(yōu)先級(jí)最低的線程作為空閑運(yùn)轉(zhuǎn)線程,并將該空閑運(yùn)轉(zhuǎn) 線程放置于一個(gè)無(wú)限循環(huán)中。
8.如權(quán)利要求6所述的CPU使用率分析系統(tǒng),其特征在于,所述硬件定時(shí)器的最大值 為0xFFFF。
9.如權(quán)利要求6所述的CPU使用率分析系統(tǒng),其特征在于,所述線程被掛起的情形包括該線程執(zhí)行完畢;當(dāng)該線程運(yùn)行時(shí),移動(dòng)裝置的操作系統(tǒng)發(fā)出一個(gè)中斷請(qǐng)求;當(dāng)該線程運(yùn)行時(shí),有其它更高優(yōu)先級(jí)的線程需要執(zhí)行,該線程主動(dòng)釋放一個(gè)信號(hào)量而 被掛起。
10.如權(quán)利要求6所述的CPU使用率分析系統(tǒng),其特征在于,所述計(jì)算模塊根據(jù)該數(shù)組 中所有元素的值計(jì)算出CPU的使用率包括加總該數(shù)組中所有元素得到所有線程占用CPU的時(shí)間之和;計(jì)算出每個(gè)線程占用CPU的平均時(shí)間,所述每個(gè)線程占用CPU的平均時(shí)間等于所有線 程占用CPU的時(shí)間之和除以本次周期內(nèi)執(zhí)行的線程個(gè)數(shù);及計(jì)算出本次周期內(nèi)CPU的使用率,所述本次周期內(nèi)CPU的使用率等于每個(gè)線程占用CPU 的平均時(shí)間除以每次分析的時(shí)間長(zhǎng)度。
全文摘要
一種CPU使用率分析方法,應(yīng)用于移動(dòng)裝置中,包括如下步驟設(shè)置CPU使用率分析周期和每次分析的時(shí)間長(zhǎng)度;當(dāng)一個(gè)線程被掛起時(shí),讀取硬件定時(shí)器的當(dāng)前時(shí)間;計(jì)算該被掛起的線程占用CPU的時(shí)間,并將其存儲(chǔ)在一個(gè)數(shù)組元素中;當(dāng)每次分析的時(shí)間長(zhǎng)度到達(dá)時(shí),計(jì)算出CPU的使用率。本發(fā)明還提供一種CPU使用率分析系統(tǒng)。利用本發(fā)明可精確計(jì)算出移動(dòng)裝置的CPU使用率。
文檔編號(hào)G06F9/48GK101876933SQ200910301930
公開(kāi)日2010年11月3日 申請(qǐng)日期2009年4月28日 優(yōu)先權(quán)日2009年4月28日
發(fā)明者陳紀(jì)憲 申請(qǐng)人:深圳富泰宏精密工業(yè)有限公司;奇美通訊股份有限公司