專利名稱:確定處理器利用率的系統(tǒng)和方法
相關(guān)申請的交叉引用本申請要求2004年8月4日提交的名為“確定真正處理器利用率的方法”的臨時申請?zhí)?0/598732的權(quán)益,通過引用將其內(nèi)容結(jié)合于本文。
背景技術(shù):
為了在輕工作負荷時節(jié)能,可以將處理器動態(tài)地設(shè)置到以較低的頻率運行。例如,如果最大頻率為100MHz的處理器遇到輕工作負荷時,則處理器可以被設(shè)置為運行在80MHz。若工作負荷增加,則處理器的速度也可以相應(yīng)地增加以適應(yīng)工作負荷。
用來監(jiān)控與處理器當前頻率相對應(yīng)的處理器利用率的性能實用程序可能提供一個不準確的利用率測量結(jié)果。例如,如果上述處理器被設(shè)置為運行在其最大頻率100MHz下,則基于當前頻率的利用率測量結(jié)果是準確的。然而,如果該處理器被設(shè)置在以降低的速率80MHz運行時,則根據(jù)處理器降低后的頻率與處理器最大頻率的比率(例如80/100),基于當前頻率的利用率測量結(jié)果是不準確的。
將參照附圖對本發(fā)明范例進行詳細地描述,其中圖1表示根據(jù)本發(fā)明實施例的對處理器活動進行計數(shù)的圖表;圖2表示根據(jù)本發(fā)明實施例的計算機系統(tǒng);圖3表示根據(jù)本發(fā)明實施例的確定真正處理器利用率的系統(tǒng);圖4表示根據(jù)本發(fā)明備選實施例的確定真正處理器利用率的另一系統(tǒng);圖5表示根據(jù)本發(fā)明實施例的方法;以及圖6表示根據(jù)本發(fā)明備選實施例的另一方法。
符號及術(shù)語下面的描述及權(quán)利要求中采用了某些術(shù)語來指代特定的系統(tǒng)組件。正如本領(lǐng)域技術(shù)人員所知,計算機公司可能用不同的名字來指代組件。本文不打算對那些名字不同但功能相同的組件進行區(qū)別。在下面的討論和權(quán)利要求中,廣泛使用術(shù)語“包括”和“包含”,因此應(yīng)當解釋為意味著“包括但不限于”。同時術(shù)語“耦合”意味著間接或直接的電連接。因而,如果第一裝置耦合到第二裝置,則此連接可能是通過直接電連接或者經(jīng)由其它裝置和連接間接電連接。
具體實施例方式
下面的討論是針對本發(fā)明的各種實施例。雖然這些實施例中的一個或多個是優(yōu)選的,但所公開的實施例不應(yīng)被解釋為或在其它方面被使用為限制本公開的范圍(包括權(quán)利要求)。另外,本領(lǐng)域技術(shù)人員會理解下面的描述具有廣泛的應(yīng)用,任何實施例的討論僅是該實施例的示范,并不意味著宣布所公開的范圍(包括權(quán)利要求)被限制在所述的實施例。
本發(fā)明的實施例主要指能夠精確測量處理器利用率的方法和系統(tǒng),即使處理器的工作頻率是動態(tài)的。在至少一些實施例中,一段時間內(nèi)處理器的利用率通過量化這段時間內(nèi)處理器的活動級來計算,而且,如果需要,基于這段時間內(nèi)處理器的工作頻率與處理器的最大工作頻率的比較來調(diào)整處理器的利用率。
圖1表示根據(jù)本發(fā)明實施例的對處理器活動進行計數(shù)的圖表100。如圖1所示,對照時間描述處理器活動,例如操作系統(tǒng)(OS)內(nèi)核活動106以及用戶應(yīng)用程序活動108。在規(guī)則時間周期104,處理器執(zhí)行的活動被確定并被計數(shù)(此處稱為“計數(shù)值”102)。圖1中示出了七個計數(shù)值(C1-C7)102。C1、C2、C5、C6和C7是用戶應(yīng)用程序計數(shù)值,C4是OS內(nèi)核應(yīng)用程序計數(shù)值而C3是一個“空操作”值(即,處理器不執(zhí)行任何活動或可識別的活動)。
至少在一些實施例中,OS幫助確定在圖1所示的計數(shù)進程期間處理器執(zhí)行的活動。例如,OS可以以規(guī)則的時間間隔比如每10毫秒(ms)管理計數(shù)進程和線程。在這種情況下,OS編程硬件以便每10ms中斷進程。在每一次中斷(除管理計數(shù)進程和線程之外),OS確定處理器是否正執(zhí)行操作系統(tǒng)內(nèi)核代碼、用戶應(yīng)用程序代碼或空操作碼。然后OS相應(yīng)地更新OS內(nèi)核計數(shù)器、用戶應(yīng)用程序計數(shù)器和空操作計數(shù)器其中之一。處理器性能監(jiān)控實用程序被設(shè)計為在預定時間間隔從OS抽取計數(shù)器數(shù)據(jù)。例如如果在一秒結(jié)束時(例如100個中斷),OS確定處理器執(zhí)行OS內(nèi)核代碼20次、用戶應(yīng)用程序代碼70次和空操作碼10次,處理器性能實用程序基于下面所示的方程式(1)報告處理器被利用了90%。
Ucpu=[(Ckernel+Capp)/(Ckernel+Capp+Cidle)]×100%方程式(1)在方程式(1)中,Ucpu為被觀查的處理器利用率,Ckernel是OS內(nèi)核計數(shù)的數(shù)量、Capp是用戶應(yīng)用程序計數(shù)的數(shù)量以及Cidle是空操作計數(shù)的數(shù)量。如前所述,在周期時間間隔(例如每秒一次)抽取計數(shù)值(Ckernel、Capp、Cidle)并且確定所觀察的處理器利用率(Ucpu)。這樣,如果時間間隔期內(nèi)計數(shù)值為如前所述的Ckernel=20、Capp=70和Cidle=10,則Ucpu=[(20+70)/(20+70+10)]×100%=90%。每個時間間隔基于新的計數(shù)器數(shù)據(jù)的Ucpu的值可能發(fā)生變化。處理器性能實用程序可以被設(shè)定為以數(shù)字值或圖表部分來報告Ucpu的值對于多處理器系統(tǒng),OS為每個處理器使用OS內(nèi)核計數(shù)器、用戶應(yīng)用程序計數(shù)器和空操作計數(shù)器。在周期時間間隔中,處理器性能監(jiān)控實用程序能夠從OS抽取所有計數(shù)器數(shù)據(jù)并且報告每個處理器的處理器利用率和/或總系統(tǒng)利用率(例如總系統(tǒng)利用率可以通過對全部處理器利用率求平均值來確定)。
本發(fā)明的實施例實現(xiàn)具有動態(tài)工作頻率的處理器。例如工作頻率隨工作負荷的不同可以在最大工作頻率和最小工作頻率之間調(diào)整。美國專利號6438697名為“基于需求的處理器時鐘頻率轉(zhuǎn)換”描述了一種動態(tài)改變處理器工作頻率的方法和系統(tǒng),并且將其全部內(nèi)容通過引用結(jié)合于本文。為了說明動態(tài)工作頻率,軟件實用程序(例如處理器性能實用程序或其它實用程序),通過比較處理器當前工作頻率與處理器最大工作頻率來調(diào)整方程式(1)中被觀察的處理器利用率(Ucpu)的值,如下面方程式(2)中所示。
UCPU_DYNAMIC=UCPU×(Fcurrent/Fmax)方程式(2)在方程式(2)中,UCPU_DYNAMIC是具有動態(tài)工作頻率的處理器的“真正的”處理器利用率。在至少部分實施例中,真正的處理器利用率與CPU的最大工作頻率相關(guān)。方程式(2)還示出,Ucpu是如上面方程式(1)中所述的被觀察的處理器利用率。Fcurrent是被監(jiān)控處理器的當前工作頻率并且Fmax是被監(jiān)控處理器的最大工作頻率。UCPU_DYNAMIC、Ucpu、Fcurrent和Fmax的值在周期時間間隔被確定并且由例如處理器性能實用程序的軟件實用程序報告。例如,如果在給定的時間間隔內(nèi)Ucpu=90%,F(xiàn)current=80MHz并且Fmax=100MHz,那么給定的時間間隔內(nèi)UCPU_DYNAMIC的值是90%×(80/100)=72%。因此,方程式(2)提供了說明處理器工作在低于最大頻率時的“真正的”處理器利用率的值(即,如果處理器工作在低于最大頻率時,則由方程式(1)提供的被觀察的處理器利用率(Ucpu)值是不準確的)。
計算并報告UCPU_DYNAMIC值而不是觀察的Ucpu值在幾個方面是有用的。在至少部分實施例中,UCPU_DYNAMIC值用來確定與業(yè)務(wù)相關(guān)的細節(jié)(例如,基于服務(wù)器業(yè)務(wù)的細節(jié))。例如,信息技術(shù)(IT)部門可能在一段時間內(nèi)(例如幾個星期或幾個月)監(jiān)控被觀察的處理器利用率以確定基于服務(wù)器的應(yīng)用(例如數(shù)據(jù)庫、郵件服務(wù)器或者基于網(wǎng)絡(luò)的應(yīng)用)的效率。如果處理器性能監(jiān)控報告了一個夸大的觀察的利用率(例如上例中,如果被監(jiān)控處理器的工作頻率低于該處理器的最大工作頻率,基于方程式(1)的90%的觀察的利用率是夸大的),則操作員可能會不得不開始一項不必要的努力以便使基于服務(wù)器的應(yīng)用流暢。同樣,IT部門可能在一段時間內(nèi)監(jiān)控所觀察的處理器利用率以確定是否部署更多或更少的服務(wù)器。如果處理器性能監(jiān)控報告了服務(wù)器處理器的夸大的觀察的利用率,則操作員可能不得不部署比需要的服務(wù)器更多的服務(wù)器。同樣,基于消費者處理器利用率向消費者收費的IT部門可能在一段時間內(nèi)監(jiān)控可觀察的處理器利用率以確定向消費者收多少費。因此,夸大的觀察的處理器利用率值可能導致夸大地收費。至少基于以上原因,使用方程式(2)計算并報告UCPU_DYNAMIC而不是使用方程式(1)計算并報告所觀察的Ucpu是有益的。
圖2示出了根據(jù)本發(fā)明實施例的計算機系統(tǒng)200。在至少部分實施例中,計算機系統(tǒng)200是服務(wù)器。計算機系統(tǒng)200被設(shè)定為以至少兩種方式報告真正的處理器利用率值(例如UCPU_DYNAMIC)。在第一種方式中,基于處理器當前工作頻率與最大工作頻率的比較來修改計算機系統(tǒng)200跟蹤的計數(shù)器數(shù)據(jù)(例如,OS內(nèi)核計數(shù)值、用戶應(yīng)用程序計數(shù)值和空操作計數(shù)值)。在至少部分實施例中,在處理器性能實用程序抽取數(shù)據(jù)之前,基于所述比較通過加權(quán)計數(shù)數(shù)據(jù)(或增大或減小值)來完成修改。在這種方式下,當處理器性能實用程序抽取修改后的計數(shù)器數(shù)據(jù)并且報告所觀察的處理器利用率(例如Ucpu)時,實際上報告的是真正的處理器利用率(例如UCPU_DYNAMIC)。
在第二種方式中,計算機系統(tǒng)200的計數(shù)器數(shù)據(jù)被跟蹤(例如圖1所述的),但是在數(shù)據(jù)被處理器性能實用程序抽取之前沒有被修改。而是,從處理器性能實用程序中分離出的實用程序應(yīng)用(即,修改的處理器性能實用程序)根據(jù)未修改的計數(shù)器數(shù)據(jù)以及關(guān)于處理器當前工作頻率與處理器最大工作頻率的比較信息來計算真正的處理器利用率。該實用程序應(yīng)用被設(shè)定為報告真正的處理器利用率(例如UCPU_DYNAMIC)或者為處理器性能實用程序提供真正的處理器利用率,由處理器性能實用程序來報告。另外,處理器性能實用程序可以用來報告觀察的處理器利用率(例如Ucpu)。
如圖2所示,計算機系統(tǒng)200包括耦合到存儲器208的多個處理器或CPU202A-202N。CPU 202A-202N也耦合到時鐘邏輯204和周期性中斷定時器。在至少某些實施例中,時鐘邏輯204控制主時鐘或系統(tǒng)時鐘用于CPU 202A-202N。例如,時鐘204可以使CPU 202A-202N工作在最大頻率下,例如100MHz。為響應(yīng)來自CPU 202A-202N其中之一或者其他控制機構(gòu)的命令,時鐘邏輯204也能使CPU 202A-202N工作在比最大頻率低的頻率下。例如,如果確定提供給CPU 202A-202N的工作負荷是“輕”工作負荷,則時鐘邏輯204可能接收一條命令從而將時鐘頻率從100MHz減小到80MHz。
如圖所示,存儲器208存儲了OS內(nèi)核220和用戶應(yīng)用程序240。在至少部分實施例中,OS內(nèi)核包括監(jiān)控指令222、性能計數(shù)器224、工作負荷調(diào)整指令226、處理器性能實用程序指令228和性能調(diào)整指令230。
當設(shè)置好后,周期性中斷定時器206中斷CPU 202A-202N。在中斷期間,監(jiān)控指令222確定每個CPU執(zhí)行的最后活動(或者要執(zhí)行的下一步活動)。例如,CPU活動可被分為OS內(nèi)核活動、用戶應(yīng)用程序活動和空操作活動。在一些實施例中,監(jiān)控指令222被周期性的執(zhí)行(例如,每10ms一次)。監(jiān)控指令222也能使數(shù)據(jù)例如計數(shù)值存儲在計數(shù)器224中。在至少部分實施例中,計數(shù)器224包括分配用來存儲計數(shù)數(shù)據(jù)的存儲器。
當執(zhí)行時,處理器性能實用程序指令228引起抽取計數(shù)器數(shù)據(jù)。在部分實施例中,處理器性能實用程序指令228基于上述方程式(1)為一個或多個處理器計算觀察的處理器利用率。處理器性能實用程序指令228也使計算所得的觀察的處理器利用率(例如Ucpu)通過可視化的表示(例如字母數(shù)字值和/或圖表)向用戶報告。處理器利用率由處理器性能實用程序指令228基于通過執(zhí)行監(jiān)控指令222跟蹤和存儲的處理器活動計數(shù)值在周期基線計算并更新。
當執(zhí)行時,工作負荷調(diào)整指令226確定CPU 202A-202N中的至少一個是否正在執(zhí)行輕工作負荷。例如工作負荷調(diào)整指令226可以與監(jiān)控指令222結(jié)合操作以確定CPU活動的閾值百分數(shù)(例如30%)為空閑。在這種情況下,工作負荷調(diào)整指令226可以使時鐘邏輯204降低CPU 202A-202N的工作頻率(例如從100MHz到80MHz)。降低CPU 202A-202N的工作頻率有助于節(jié)能,否則即使在執(zhí)行空操作時為CPU 202A-202N計時也是種浪費。在部分實施例中,對CPU工作負荷的改變是動態(tài)的并且至少部分取決于用戶應(yīng)用程序240的執(zhí)行(即要執(zhí)行的用戶應(yīng)用程序指令數(shù)量的增加或減少導致CPU的工作負荷相應(yīng)地改變)。在至少部分實施例中,上述的處理器性能實用程序指令228不直接說明CPU工作頻率的動態(tài)改變,從而導致潛在的不正確的處理器利用率值。
當執(zhí)行時,性能調(diào)整指令230引起報告真正的處理器利用率。如上所述,真正的處理器利用率說明CPU工作頻率的動態(tài)改變。性能調(diào)整指令230至少以兩種方式工作。在第一種方式下,在處理器性能實用程序指令228抽取計數(shù)器224中的計數(shù)值之前,性能調(diào)整指令230修改了計數(shù)器224中的計數(shù)值。例如,可通過處理器當前工作頻率與處理器最大工作頻率的比值加權(quán)計數(shù)值。在部分實施例中,對每一個計數(shù)值都進行計數(shù)值修改(也就是說,每一個計數(shù)值都可能被調(diào)整以反映處理器當前工作頻率與處理器最大工作頻率的比較)。作為選擇,也可以在預先設(shè)定的計數(shù)值數(shù)量出現(xiàn)后修改計數(shù)值。在任一情況下,處理器性能實用程序指令228抽取修改后的計數(shù)數(shù)據(jù)并報告真正的處理器利用率,而不是觀察的處理器利用率。
在第二種方式中,性能調(diào)整指令230不修改計數(shù)數(shù)據(jù)。取而代之的是,性能調(diào)整指令230使用已經(jīng)存在的計數(shù)數(shù)據(jù)來確定所觀察的處理器利用率。如果需要,可以基于CPU的當前工作頻率與最大工作頻率的比較來修改所觀察的處理器利用率,以確定真正的處理器利用率(例如,性能調(diào)整指令230可以執(zhí)行方程式(2)以確定真正的處理器利用率)。在部分實施例中,性能調(diào)整指令230報告(或顯示)真正的處理器利用率而處理器性能實用程序指令228報告所觀察的處理器利用率。可選地,性能調(diào)整指令230也可以與處理器性能實用程序指令228結(jié)合工作,這樣處理器性能實用程序228報告真正的處理器利用率。
圖3示出了根據(jù)本發(fā)明實施例的確定真正處理器利用率的系統(tǒng)300。例如系統(tǒng)300可以表示上述計算機系統(tǒng)200的組件。如圖3所示,為了說明性的目的,將系統(tǒng)300分為硬件空間302、OS空間304和用戶空間306。如將在本文描述地,本發(fā)明的至少部分實施例基于來自硬件空間302、OS空間304和用戶空間306的每一個的元件。
硬件空間302表示系統(tǒng)300的物理組件,比如處理器、總線、橋接器和存儲器。如圖所示,硬件空間302包括基于硬件的實時時鐘(RTC)310以及系統(tǒng)管理中斷(SMI)硬件350。硬件RTC310是系統(tǒng)300中的主OS定時機構(gòu),有時也被稱作“系統(tǒng)時鐘”。SMI硬件350包括設(shè)置為產(chǎn)生中斷以觸發(fā)與原始設(shè)備制造商(OEM)軟件棧(例如SMM處理器352和SMI軟件354)中相關(guān)管理活動的硬件。
OS空間304表示操作系統(tǒng)(OS)。OS負責命令、控制和管理硬件資源,使得軟件應(yīng)用程序以安全并可控的方式“運行”。如圖所示,OS空間304包括OS中斷處理器320、內(nèi)部處理器中斷(IPI)調(diào)度器播送設(shè)備322。OS中斷處理器320包括由OS提供的計算機可讀指令,用來接收和處理來自RTC 310的中斷。OS中斷處理器320也跟蹤全局系統(tǒng)定時并與IPI調(diào)度器播送設(shè)備322進行通訊(或者“通話”)。IPI調(diào)度器播送設(shè)備322包括由OS提供的計算機可讀指令,用來向計算機系統(tǒng)300的所有處理器(例如,CPU)廣播定時事件。在部分實施例中,IPI調(diào)度器播送設(shè)備322是OS中斷處理器320的一部分。
對系統(tǒng)300中的每一個CPU來說,OS空間304包括CPU IPI處理器324A-324N、形實轉(zhuǎn)換程序轉(zhuǎn)向器(thunk redirector)326A-326N、CPU專用調(diào)度器328A-328N、計數(shù)器330A-330N和設(shè)備驅(qū)動332A-332N。每一個CPU IPI處理器324A-324N包括由OS提供的計算機可讀指令,運行在CPU上并收集OS和用戶進程的定時統(tǒng)計。每一個形實轉(zhuǎn)換程序轉(zhuǎn)向器326A-326N包括由OS提供的計算機可讀指令,用來截取OS向OEM提供的驅(qū)動代碼(例如設(shè)備驅(qū)動332A-332N)進行的通話。每一個CPU專用調(diào)度器328A-328N包括由OS提供的計算機可讀指令,用來調(diào)整跟蹤CPU利用率的計數(shù)器(例如計數(shù)器330A-330N)。每一個計數(shù)器330A-330N包括一塊由CPU專用調(diào)度器328A-328N分配并“擁有的”存儲器(例如,CPU專用調(diào)度器328A擁有計數(shù)器330A,CPU專用調(diào)度器328B擁有計數(shù)器330B等)。
每個設(shè)備驅(qū)動332A-332N包括由OEM提供的計算機可讀指令,用來監(jiān)控實時的硬件性能例如CPU節(jié)流(也就是CPU工作頻率的變化)。在圖3所示的計算機系統(tǒng)實施例中,每個設(shè)備驅(qū)動332A-332N設(shè)定為基于通過形實轉(zhuǎn)換程序轉(zhuǎn)向器接收的來自CPU IPI管理器324A-324N的信息(例如,設(shè)備驅(qū)動332A通過形實轉(zhuǎn)換程序轉(zhuǎn)向器326A接收來自CPU IPI處理器324A的信息,設(shè)備驅(qū)動332B通過形實轉(zhuǎn)換程序轉(zhuǎn)向器326B接收采自CPU IPI處理器324B的信息,等等),監(jiān)控在CPU工作頻率下的改變。如前所述,每個CPU IPI處理器324A-324N收集OS和用戶進程的定時統(tǒng)計。通過監(jiān)控來自每個CPU IPI處理器324A-324N的定時統(tǒng)計以及存儲在每個計數(shù)器330A-330N中的數(shù)據(jù),設(shè)備驅(qū)動332A-332N被設(shè)定為(如果需要)使CPU專用調(diào)度器328A-328N調(diào)整存儲在計數(shù)器330A-330N中的計數(shù)器數(shù)據(jù)。
例如,如果CPU的工作頻率由于輕工作負荷而下降,則相應(yīng)的CPU專用調(diào)度器可以調(diào)整性能計數(shù)器的數(shù)據(jù)以反映CPU的真正處理器利用率(也就是說,CPU的真正處理器利用率說明CPU未工作在最大頻率時的情況)。在部分實施例中,CPU專用調(diào)度器被設(shè)定為改變計數(shù)值(也就是說計數(shù)值可以被加權(quán)或者簡單地從一個值改變?yōu)榱硪粋€),這樣當抽取改變后的計數(shù)數(shù)據(jù)根據(jù)方程式(1)來計算所觀察的處理器利用率(Ucpu)時,得到的值就是真正的處理器利用率。如上所述,來自三個計數(shù)器的信息(例如,OS內(nèi)核計數(shù)器、用戶應(yīng)用程序計數(shù)器和空操作計數(shù)器)可以被用來確定觀察的處理器利用率(Ucpu)。因此,要反映CPU的真正處理器利用率,這些計數(shù)值中的一個或多個要被修改。
例如,使用前述計數(shù)數(shù)據(jù)(也就是,OS內(nèi)核計數(shù)值=20、用戶應(yīng)用程序計數(shù)值=70、空操作計數(shù)值=10)和方程式(1),所觀察的處理器利用率(Ucpu)被確定為90%。然而,如果處理器僅在其最大工作頻率的80%下工作,則所觀察的處理器利用率為90%是不準確的(也就是,真正的處理器利用率實際上是90%×(80/100)=72%)。為了說明處理器正在低于最大頻率下工作,設(shè)備驅(qū)動(例如設(shè)備驅(qū)動332A-332N)可以使CPU專用調(diào)度器(例如CPU專用調(diào)度器328A-328N)在處理器性能實用程序抽取計數(shù)器數(shù)據(jù)之前,調(diào)整一個或多個計數(shù)器的計數(shù)數(shù)據(jù)。例如,為了基于方程式(1)將90%的利用率改為72%的利用率,設(shè)備驅(qū)動可使空操作計數(shù)值的數(shù)量增加(例如,如果OS內(nèi)核計數(shù)值=20并且用戶應(yīng)用程序數(shù)值=70,則將空操作計數(shù)值從空操作計數(shù)值=10調(diào)整為空操作計數(shù)值=35,這樣會使Ucpu的計算值由90%改為72%)。作為選擇,為了基于方程式(1)將90%的利用率改為72%的利用率,設(shè)備驅(qū)動可使用戶應(yīng)用程序計數(shù)值減少(例如,如果OS內(nèi)核計數(shù)值=20并且空操作計數(shù)值=10,則將用戶應(yīng)用程序計數(shù)值從用戶應(yīng)用程序計數(shù)值=70調(diào)整為應(yīng)用程序計數(shù)值=6,這樣會使Ucpu的計算值由90%改為72%)。同樣,OS內(nèi)核計數(shù)值和用戶應(yīng)用程序計數(shù)值中的一個或兩個可以減少,而空操作計數(shù)值可以增加,以說明處理器正在低于最大工作頻率下工作。
在部分實施例中,加權(quán)和末加權(quán)的計數(shù)值都可以存儲在計數(shù)器(例如,如果處理器正工作在其最大頻率的80%,則通過因子0.8來調(diào)整加權(quán)的計數(shù)值)中。因此,如果未加權(quán)的計數(shù)值是OS內(nèi)核計數(shù)值=20、用戶應(yīng)用程序計數(shù)值=70、空操作計數(shù)值=10,則加權(quán)的計數(shù)值是OS內(nèi)核計數(shù)值=20*0.8=16、用戶應(yīng)用程序計數(shù)值=70*0.8=56、空操作計數(shù)值=10+(20-16)+(70-56)=28(就是說,空操作計數(shù)值增加的數(shù)量等于OS內(nèi)核計數(shù)值、用戶應(yīng)用程序計數(shù)值減少的數(shù)量)。在部分實施例中,每次中斷,都存儲并合計加權(quán)的計數(shù)值和未加權(quán)的計數(shù)值。作為選擇,在預先設(shè)定的未加權(quán)的計數(shù)值數(shù)量或預先設(shè)定的時間周期之后,確定加權(quán)的計數(shù)值。在兩種情況下,加權(quán)的計數(shù)值可以由未加權(quán)的計數(shù)值乘以權(quán)數(shù)來獲得,而權(quán)數(shù)反映處理器當前工作頻率與處理器最大工作頻率的比較。在計數(shù)值被修改或加權(quán)后,處理器性能實用程序(例如,處理器性能實用程序指令226)可以從計數(shù)器抽取信息以計算并報告真實的處理器利用率。
如圖所示,OS空間304還包括系統(tǒng)管理中斷(SMI)軟件354和可以是基于基本輸入/輸出系統(tǒng)(BIOS)的系統(tǒng)管理模式(SMM)處理器352。SMI軟件354包括被設(shè)置為產(chǎn)生SMM中斷的計算機可讀指令。在至少部分實施例中,SMI軟件354與OEM驅(qū)動共同操作以處理系統(tǒng)300的OS未知的硬件管理。SMM處理器352包括由OEM提供的計算機可讀指令,用來提供SMM模式以管理硬件。
如圖所示,用戶空間306表示運行以滿足用戶需求的應(yīng)用程序的域。如圖所示,用戶空間306包括多個用戶應(yīng)用程序340A-340N。隨著系統(tǒng)300的CPU執(zhí)行不同的用戶應(yīng)用程序340A-340N,由處理器性能實用程序測量的處理器利用率也會改變。例如,如果用戶應(yīng)用程序340A-340N提供給CPU的工作負荷“輕”時,系統(tǒng)300中的一個或多個CPU的工作頻率可能會下降。
在多處理器實施例中,例如圖2和3所示的實施例中,如上所述的適用于單處理器的計算和報告觀察的處理器利用率和真正的處理器利用率也同樣適用于多處理器。例如,為了計算多個處理器的所觀察的處理器利用率,為每個處理器收集的計數(shù)器數(shù)據(jù)(也就是OS內(nèi)核計數(shù)值、用戶應(yīng)用程序計數(shù)值、空操作計數(shù)值)可以被累計在一起以確定總的所觀察的多處理器利用率。或者,總的所觀察的多處理器利用率可以由計算各個所觀察的處理器利用率并求它們的均值來確定。
“真正的”多處理器利用率可以在計數(shù)器數(shù)據(jù)被抽取之前通過加權(quán)或修改每個處理器的計數(shù)器數(shù)據(jù)來確定(基于每個處理器當前工作頻率與最大工作頻率的比較)。在這種方式下,所觀察的多處理器利用率的計算結(jié)果實際提供了真正的多處理器利用率?;蛘?,每個處理器的計數(shù)器數(shù)據(jù)在被抽取之前可以不被修改。如果抽取未修改的計數(shù)器數(shù)據(jù),則真正的多處理器利用率值也可通過計算各個真正的處理器利用率(如上所述)并求各個真正的處理器利用率的均值來確定。或者,真正的多處理器利用率值也可通過計算所觀察的多處理器利用率、然后用每個處理器當前工作頻率與最大工作頻率的比率的平均值調(diào)整(例如乘以)所觀察的多處理器利用率來確定。
圖4示出了根據(jù)本發(fā)明備選實施例的另一個系統(tǒng)400。如圖所示,系統(tǒng)400的許多組件與前面圖3所述的系統(tǒng)300的組件相同或類似。系統(tǒng)400與系統(tǒng)300至少在除去形實轉(zhuǎn)換程序轉(zhuǎn)向器(例如形實轉(zhuǎn)換程序轉(zhuǎn)向器326A)方面有所不同。同時設(shè)備驅(qū)動432A-432N不能使CPU專用調(diào)度器328A-328N修改或加權(quán)存儲在計數(shù)器330A-330N中的計數(shù)數(shù)據(jù)。取而代之的是,每個設(shè)備驅(qū)動432A-432N從每個相應(yīng)的計數(shù)器330A-330N中讀取未修改的計數(shù)數(shù)據(jù),并且基于接收到的信號402A-402N計算真正的處理器利用率。在至少部分實施例中,信號402A-402N包括OEM設(shè)備驅(qū)動中斷。信號402A-402N通知每個設(shè)備驅(qū)動432A-432N CPU工作頻率的改變(例如,信號402A通知設(shè)備驅(qū)動432A,信號402B通知設(shè)備驅(qū)動432B,等等)。
每個設(shè)備驅(qū)動432A-432N都能計算并報告真正的處理器利用率。作為附加或作為備選,每個設(shè)備驅(qū)動432A-432N可提供必要的信息(例如計數(shù)值和處理器當前工作頻率與最大工作頻率的比較),使得另一個性能實用程序能夠計算并報告真正的處理器利用率。
圖5示出了根據(jù)本發(fā)明實施例的一種方法500。如圖5所示,方法500包括確定處理器的最大工作頻率(模塊502)和確定處理器的當前工作頻率(模塊504)。方法500還包括對處理器活動進行計數(shù)(506)。如果當前工作頻率低于最大工作頻率(判斷模塊508),則基于當前工作頻率與最大工作頻率的比較來修改計數(shù)數(shù)據(jù)(模塊510)。例如計數(shù)數(shù)據(jù)可以被加權(quán)或者可以被調(diào)整以說明處理器當前工作頻率與最大工作頻率的不同。在修改了計數(shù)數(shù)據(jù)(模塊510)之后或者如果當前工作頻率不低于最大工作頻率(判斷模塊508),方法500包括基于計數(shù)數(shù)據(jù)計算處理器利用率(模塊512)。最后報告處理器利用率(模塊514)。
圖6示出了根據(jù)本發(fā)明備選實施例的另一種方法600。如圖6所示,方法600包括上面圖5所述的許多模塊。方法600與方法500的不同在于方法600不修改計數(shù)數(shù)據(jù)。如果處理器的當前工作頻率低于處理器的最大工作頻率(判斷模塊508),則方法600基于計數(shù)數(shù)據(jù)和處理器當前工作頻率與最大工作頻率的比較來計算真正的處理器利用率(模塊602)。如果處理器的當前工作頻率不低于處理器的最大工作頻率(判斷模塊508),則方法600僅基于計數(shù)數(shù)據(jù)計算觀察的處理器利用率(模塊512)。最后,報告觀察的處理器利用率或者真正的處理器利用率(也就是,真正的處理器利用率說明處理器工作頻率的動態(tài)變化)(模塊514)。如前所述,報告真正的處理器利用率值(UCPU_DYNAMIC)在幾個方面是有益的。例如,系統(tǒng)管理員或者其他用戶可以依據(jù)真正的處理器利用率來確定與業(yè)務(wù)相關(guān)的細節(jié),比如應(yīng)用程序的效率、部署的服務(wù)器的數(shù)量和/或向消費者收取的金額。
上面的論述了說明本發(fā)明的原理和不同的實施例。一旦完全理解了上述公開,對本領(lǐng)域技術(shù)人員來說,種種變化和修改會是顯而易見的。例如,雖然圖3和4的組件被指定在OS空間304和用戶空間306中,但是一些組件比如處理器性能實用程序可以在OS空間304或者在用戶空間306中。下面的權(quán)利要求可解釋為包含所有的類似變化和修改。
權(quán)利要求
1.一種系統(tǒng)(200),包括處理器(202A);和存儲器(208),耦合到所述處理器,所述存儲器(208)存儲處理器性能實用程序指令(228)和性能調(diào)整指令(230);當執(zhí)行時,所述處理器性能實用程序指令(228)被設(shè)定為引起對所述處理器(202A)的活動(106,108)進行計數(shù)并且引起基于計數(shù)值(102)確定處理器利用率值,當執(zhí)行時,所述性能調(diào)整指令(230)被設(shè)定為基于所述處理器的當前工作頻率與最大工作頻率的比較來調(diào)整所述處理器利用率值。
2.一種系統(tǒng)(200),包括多個處理器(202A-202N);和存儲器(208),耦合到所述多個處理器(202A-202N),所述存儲器(202)存儲處理器實用程序指令(228)和調(diào)整指令(230),當執(zhí)行時,所述處理器實用程序指令(228)被設(shè)定為引起收集處理器(202A)的活動計數(shù)數(shù)據(jù)(102)并且引起基于所述活動計數(shù)數(shù)據(jù)(102)來確定所觀察的處理器利用率值,當執(zhí)行時,所述調(diào)整指令被設(shè)定為基于所述處理器的當前工作頻率與最大工作頻率的比較來計算所述處理器(202A)的真正的處理器利用率值。
3.如權(quán)利要求2所述的系統(tǒng),其中將所述處理器實用程序指令(228)進一步設(shè)定為,當執(zhí)行時,引起收集所述多個處理器(202A-202N)的每一個的活動計數(shù)數(shù)據(jù)(102),并且引起基于所述多個處理器(202A-202N)的每一個的活動計數(shù)數(shù)據(jù)(102)來確定每一個處理器(202A-202N)的所觀察的處理器利用率值。
4.如權(quán)利要求3所述的系統(tǒng),其中將所述處理器實用程序指令(228)進一步設(shè)定為,當執(zhí)行時,確定所述所觀察的處理器利用率值的平均值。
5.如權(quán)利要求2所述的系統(tǒng),其中將所述調(diào)整指令(230)進一步設(shè)定為,當執(zhí)行時,基于每個處理器的當前工作頻率與最大工作頻率的比較來計算所述多個處理器(202A-202N)的每一個的真正的處理器利用率值。
6.如權(quán)利要求5所述的系統(tǒng),其中將所述調(diào)整指令(230)進一步設(shè)定為,當執(zhí)行時,確定所述真正的處理器利用率值的平均值。
7.一種方法,包括確定處理器的最大工作頻率;確定處理器的當前工作頻率;比較所述處理器的當前工作頻率與所述處理器的最大工作頻率;并且如果所述當前工作頻率小于所述最大工作頻率,則基于所述比較來計算處理器利用率值。
8.如權(quán)利要求7所述的方法,還包括對處理器活動(106,108)進行計數(shù),其中還基于處理器活動計數(shù)值(102)計算所述處理器利用率值。
9.如權(quán)利要求8所述的方法,還包括基于所述處理器活動計數(shù)值(102)確定第一處理器利用率值,以及通過將所述第一處理器利用率值乘以所述處理器的當前工作頻率與所述處理器的最大工作頻率的比率來確定第二處理器利用率值。
10.如權(quán)利要求8所述的方法,還包括使用所述處理器利用率值來確定至少一個與業(yè)務(wù)相關(guān)的細節(jié),所述與業(yè)務(wù)相關(guān)的細節(jié)是從由應(yīng)用程序的效率、部署的服務(wù)器數(shù)量和/或向消費者收取的金額構(gòu)成的組中選擇的。
全文摘要
在至少部分實施例中,系統(tǒng)(200)包括處理器(202A)和耦合到處理器(202A)的存儲器(208)。存儲器(208)存儲處理器性能實用程序指令(228)和性能調(diào)整指令(230)。當執(zhí)行時,處理器性能實用程序指令(228)被設(shè)定為引起計數(shù)處理器(202A)的活動(106,108)并且引起基于計數(shù)值(102)確定處理器利用率值。當執(zhí)行時,性能調(diào)整指令(230)被設(shè)定為基于處理器的當前工作頻率與最大工作頻率的比較來調(diào)整處理器利用率值。
文檔編號G06F11/34GK1737772SQ20051010983
公開日2006年2月22日 申請日期2005年8月4日 優(yōu)先權(quán)日2004年8月4日
發(fā)明者R·M·巴克斯, T·W·馬尼, T·D·羅德斯 申請人:惠普開發(fā)有限公司