專利名稱:計(jì)算設(shè)備、計(jì)算方法及計(jì)算程序的記錄介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本文中所討論的實(shí)施例涉及使用計(jì)算機(jī)的測量技術(shù)。
背景技術(shù):
多個(gè)虛擬機(jī)的處理可以在一個(gè)實(shí)體機(jī)上執(zhí)行。存在一種基于虛擬機(jī)的中央處理單元(CPU)的使用率來估計(jì)虛擬機(jī)在實(shí)體機(jī)上執(zhí)行處理時(shí)的功率消耗的技術(shù)。各個(gè)CPU的使用率基于程序的處理所占用的CPU的時(shí)間來計(jì)算。與之相比,存在一種根據(jù)諸如CPU的處理負(fù)載等特性來修改用于同步電路的工作頻率(時(shí)鐘頻率)的技術(shù)。為了減少CPU消耗的功率和輻射的熱量,當(dāng)執(zhí)行控制以修改CPU的工作頻率時(shí),CPU每單位時(shí)間內(nèi)的實(shí)際操作數(shù)量在修改工作頻率之前和之后是不同的。因?yàn)楫?dāng)CPU工作時(shí)消耗功率,假如CPU的工作頻率改變并且CPU每單位時(shí)間內(nèi)的操作數(shù)量變化,則所述CPU的功率消耗也改變。根據(jù)CPU的占用時(shí)間來估計(jì)功率消耗的現(xiàn)有技術(shù)的方法不考慮由于工作頻率的變化而帶來的功率消耗的變化。因此,對于要執(zhí)行的程序,如果CPU被占用的時(shí)間量在工作頻率被改變之前和之后是相同的,則盡管CPU的實(shí)際操作數(shù)量改變了,但是改變之前和之后的功率消耗被錯(cuò)誤地估計(jì)為相同。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,一種計(jì)算方法包括:由處理器計(jì)算第一值和第二值之間的差值,所述第一值從對時(shí)鐘信號(hào)的脈沖進(jìn)行計(jì)數(shù)的時(shí)鐘計(jì)數(shù)器中讀取,所述時(shí)鐘信號(hào)的頻率發(fā)生改變并且響應(yīng)于對要被分配給處理器的處理單元的處理進(jìn)行啟動(dòng)的控制而被提供給處理器,所述第二值響應(yīng)于停止處理的控制來從時(shí)鐘計(jì)數(shù)器中讀取。本發(fā)明的目的和優(yōu)點(diǎn)將借助于權(quán)利要求中具體指出的組件或組合來實(shí)現(xiàn)以及獲得??梢岳斫猓懊娴拇篌w性描述和接下來的詳細(xì)描述都是示例性和說明性的,并且不對所要求保護(hù)的發(fā)明形成限制。
圖1示出了計(jì)算機(jī)的功能配置的示例。圖2示出了計(jì)算機(jī)的軟件配置的示例。圖3示出了計(jì)算機(jī)的硬件配置的示例。圖4示出了根據(jù)線程控制進(jìn)行數(shù)據(jù)讀取的工作原理。圖5示出了線程上下文的數(shù)據(jù)結(jié)構(gòu)的示例。
圖6示出了依據(jù)線程控制進(jìn)行數(shù)據(jù)讀取的工作原理。圖7示出了由執(zhí)行控制單元111執(zhí)行控制的流程圖。圖8示出了用于線程停止和終止的處理流程圖。圖9示出了用于線程激活和生成的處理流程圖。圖1OA示出了進(jìn)程和線程之間的關(guān)系。圖1OB示出了進(jìn)程和線程之間的關(guān)系。圖1OC示出了進(jìn)程和線程之間的關(guān)系。圖11示出了程序和進(jìn)程之間的關(guān)系。圖12示出了各個(gè)程序的操作數(shù)量。圖13示出了計(jì)算各個(gè)程序的操作數(shù)量的流程圖。圖14示出了計(jì)算各個(gè)程序的操作數(shù)量的流程圖。圖15示出了顯示測量結(jié)果的屏幕信息的示例。圖16示出了計(jì)算機(jī)I的軟件配置的示例。圖17示出了計(jì)算各個(gè)虛擬機(jī)的操作數(shù)量的流程圖。圖18示出了虛擬機(jī)與程序之間的關(guān)系。圖19示出了各個(gè)虛擬機(jī)的操作數(shù)量。圖20示出了顯示測量結(jié)果的屏幕信息的示例。圖21示出了計(jì)算機(jī)的軟件配置的示例。圖22示出了虛擬機(jī)與程序之間的關(guān)系。圖23示出了各個(gè)虛擬機(jī)的操作數(shù)量的示例。圖24示出了系統(tǒng)配置的示例。圖25示出了計(jì)算機(jī)的軟件配置的示例。圖26示出了切換單元的時(shí)序的示例。圖27A示出了進(jìn)程與線程之間的關(guān)系。圖27B示出了進(jìn)程與線程之間的關(guān)系。圖27C示出了進(jìn)程與線程之間的關(guān)系。圖28示出了程序與進(jìn)程之間的關(guān)系。圖29示出了各個(gè)程序的操作數(shù)量的示例。
具體實(shí)施例方式處理器的功率消耗根據(jù)提供給處理器的時(shí)鐘信號(hào)的頻率而發(fā)生變化。因?yàn)樘幚砥鞲鶕?jù)時(shí)鐘信號(hào)在一個(gè)周期內(nèi)對處理器中的電路充電以及放電一次,所以改變所述時(shí)鐘信號(hào)的頻率會(huì)導(dǎo)致在每單位時(shí)間內(nèi)執(zhí)行的充電和放電的次數(shù)改變。例如,當(dāng)時(shí)鐘信號(hào)源在生成不同頻率的時(shí)鐘信號(hào)的多個(gè)振蕩器之間切換時(shí),或由振蕩器生成的時(shí)鐘信號(hào)的頻率隨時(shí)間發(fā)生漂移時(shí),時(shí)鐘信號(hào)的頻率均發(fā)生變化。例如對于某一時(shí)間間隔t,當(dāng)處理器工作于頻率fl時(shí),處理器充電和放電的次數(shù)為fl *t,并且當(dāng)所述處理器工作于頻率f2時(shí),處理器充電和放電的次數(shù)為f2 *t。存在一種基于處理器的工作時(shí)間來估計(jì)功率消耗的方法。當(dāng)基于時(shí)間來估計(jì)處理器的操作數(shù)量時(shí),如果在超出表達(dá)式(I)所表示的t的某一時(shí)間段內(nèi)執(zhí)行測量,將會(huì)導(dǎo)致一次或多次充電和放電的誤差。換句話說,當(dāng)在某一時(shí)間段t內(nèi)測量處理器的操作數(shù)量時(shí),如果時(shí)鐘頻率以表達(dá)式(I)中所示的(fl-f2)或更大的值進(jìn)行變化,則會(huì)導(dǎo)致相當(dāng)于一個(gè)或多個(gè)時(shí)鐘周期的誤差。因此,當(dāng)頻率在待測量的時(shí)間段t上以表達(dá)式(I)中所示的(fl-f2)或更大的值進(jìn)行變化時(shí),可能需要要考慮到時(shí)鐘信號(hào)的頻率波動(dòng)。t ≤ I l/(fl-f2)......(I)下文中將參照附圖描述本發(fā)明的實(shí)施例。首先,基于圖1至3描述根據(jù)第一實(shí)施例的計(jì)算機(jī)I的配置。圖1示出了計(jì)算機(jī)I的功能配置的一個(gè)示例。該計(jì)算機(jī)I包括處理單元11和存儲(chǔ)單元12。處理單元11包括執(zhí)行單元110、執(zhí)行控制單元111、時(shí)鐘計(jì)數(shù)器112、讀取處理單元113、計(jì)算單元114以及存儲(chǔ)控制單元115。圖2示出了計(jì)算機(jī)I的軟件配置的一個(gè)示例。在圖2所示的軟件配置的示例中,在計(jì)算機(jī)I上運(yùn)行多種類型的應(yīng)用程序,包括應(yīng)用程序23a、應(yīng)用程序23b和應(yīng)用程序23c。計(jì)算機(jī)I上運(yùn)行的應(yīng)用程序不限于應(yīng)用程序23a-23c。例如,除應(yīng)用程序23a至23c之外的應(yīng)用程序也可以在計(jì)算機(jī)I上運(yùn)行。此外,計(jì)算機(jī)I上還運(yùn)行有用于執(zhí)行控制和管理以使硬件(hardware,HW) 21執(zhí)行應(yīng)用程序23a_23c的處理的操作系統(tǒng)(OS)。硬件21是下文中利用圖3所描述的硬件21。圖3示出了計(jì)算機(jī)I的 硬件配置的一個(gè)示例。計(jì)算機(jī)I包括處理器301、隨機(jī)存取存儲(chǔ)器(RAM)302、只讀存儲(chǔ)器(ROM)303、驅(qū)動(dòng)裝置304、記錄介質(zhì)305、通信接口(I/F)306、輸入接口( I/F)307和輸出接口( I/F)308。處理器301通過改變工作頻率進(jìn)行操作,所述工作頻率被用來與和處理器301的操作相關(guān)的電路進(jìn)行同步。處理器301、RAM302、R0M303、驅(qū)動(dòng)裝置304、通信接口 306、輸入接口 307以及輸出接口 308被耦接到總線309。所述通信接口 306被耦接到網(wǎng)絡(luò)310。所述輸入接口 307被耦接到輸入裝置311。所述輸出接口308被耦接到輸出裝置312。將描述圖1-3示出的計(jì)算機(jī)I中的各個(gè)元件的配置。處理單元11的功能通過例如處理器301基于0S22a、應(yīng)用程序23a至23c等執(zhí)行處理來實(shí)現(xiàn)。存儲(chǔ)單元12的功能通過例如在處理器301的控制下從RAM302或記錄介質(zhì)305等讀取信息或者將信息寫入RAM302或記錄介質(zhì)305等來實(shí)現(xiàn)。在執(zhí)行控制單元111(隨后進(jìn)行描述)的控制下,執(zhí)行單元110執(zhí)行應(yīng)用程序23a至23c的處理。執(zhí)行單元110的功能通過例如處理器301加載從記錄介質(zhì)305讀取到RAM302的應(yīng)用程序23a至23c并且處理包含在所加載的程序中的命令來實(shí)現(xiàn)。所述執(zhí)行控制單元111調(diào)度執(zhí)行單元110所執(zhí)行的應(yīng)用程序23a_23c的處理。當(dāng)各個(gè)應(yīng)用程序的處理以多任務(wù)處理的方式執(zhí)行時(shí),執(zhí)行控制單元111執(zhí)行控制,以為處理器301分配進(jìn)程,所述進(jìn)程為應(yīng)用程序的處理單元。何時(shí)分配進(jìn)程由基于包含在執(zhí)行控制單元111中的進(jìn)程調(diào)度器的算法所確定的處理狀態(tài)來決定。類似地,當(dāng)各個(gè)應(yīng)用程序的處理以多線程的方式執(zhí)行時(shí),所述執(zhí)行控制單元111執(zhí)行控制,以為處理器301分配線程,所述線程為應(yīng)用程序的處理單元。何時(shí)分配線程由基于包含在執(zhí)行控制單元111中的線程調(diào)度器的算法所確定的處理狀態(tài)來決定。所述執(zhí)行處理單元111的功能通過例如處理器301和RAM302基于包括進(jìn)程調(diào)度器或線程調(diào)度器的0S22a進(jìn)行操作來實(shí)現(xiàn)。所述時(shí)鐘計(jì)數(shù)器112是根據(jù)周期而遞增的計(jì)數(shù)器,其中用來與作為處理器301所執(zhí)行的處理的一部分的電路進(jìn)行同步的時(shí)鐘以所述周期進(jìn)行操作。所述時(shí)鐘計(jì)數(shù)器112被包含在處理器301中。當(dāng)處理器301是多內(nèi)核處理器時(shí),為各個(gè)內(nèi)核提供計(jì)數(shù)器,并且各個(gè)內(nèi)核的操作數(shù)量基于各個(gè)內(nèi)核所包含的計(jì)數(shù)器來進(jìn)行測量。在接下來的描述中,除非另有說明,將通過舉例的方式描述具有單個(gè)內(nèi)核的處理器301的情況。所述時(shí)鐘計(jì)數(shù)器112指示在某一時(shí)間,直到該時(shí)間處所述處理器301所執(zhí)行的操作數(shù)量。例如,時(shí)鐘計(jì)數(shù)器112在硬件21激活時(shí)開始計(jì)數(shù)。每當(dāng)經(jīng)過相當(dāng)于處理器301的工作頻率的一個(gè)周期的時(shí)間(即,每一個(gè)脈沖)時(shí),則執(zhí)行控制以向時(shí)鐘計(jì)數(shù)器112中設(shè)置的寄存器增加例如I比特。存儲(chǔ)所述時(shí)鐘計(jì)數(shù)器112的值的寄存器具有大小為例如32比特或64比特的區(qū)域。在接下來的描述中,響應(yīng)于讀取命令而讀取的時(shí)鐘值被當(dāng)作變量clkO。根據(jù)在執(zhí)行控制單元111執(zhí)行調(diào)度以生成、激活(導(dǎo)致處于執(zhí)行狀態(tài))、停止(導(dǎo)致處于休眠狀態(tài))或者終止進(jìn)程或線程中的控制,讀取處理單元113執(zhí)行處理以從包含在處理器301中的時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘值。讀取處理單元113的功能通過例如處理器301根據(jù)0S22a執(zhí)行控制來實(shí)現(xiàn),在所述0S22a中將讀取命令添加到使調(diào)度控制被執(zhí)行的命令組中。所述讀取命令是讀取包含在處理器301中的時(shí)鐘計(jì)數(shù)器112的值的命令。所述讀取命令是例如一種性能檢測機(jī)制(在各種類型的CPU中實(shí)現(xiàn))。在執(zhí)行控制單元111的控制下,計(jì)算單元114利用由讀取處理單元113讀取的時(shí)鐘值(clkl)執(zhí)行算術(shù)運(yùn)算(參見表達(dá)式(2)- (4))。例如,當(dāng)所述讀取處理單元113根據(jù)執(zhí)行控制單元111的進(jìn)程或線程的生成或激活來讀取時(shí)鐘值(clkl)時(shí),所述計(jì)算單元114執(zhí)行算術(shù)運(yùn)算(參見表達(dá)式(2)),以使用時(shí)鐘值(clkl)對變量clkO賦值。當(dāng)所述讀取處理單元113根據(jù)執(zhí)行控制單元111的進(jìn)程或線程的停止或終止來讀取時(shí)鐘值(clkl)時(shí),所述計(jì)算單元114計(jì)算時(shí)鐘值(clkl)與值(clkO)之間的差值d (參見表達(dá)式(3))。此外,所述計(jì)算單元114執(zhí)行算術(shù)運(yùn)算(參見表達(dá)式(4)),以將時(shí)鐘值(clkl)與值(clkO)之間的差值d合并入一個(gè)合并值S。所述合并值S是由隨后描述的存儲(chǔ)控制單元115寫入存儲(chǔ)單元12或從存儲(chǔ)單元12讀取的值。值(clkO)以及合并值S的初始值是諸如O等值。此外,表達(dá)式(2)到(4)中包含的“=”是表示賦值的運(yùn)算符,而不是等號(hào)。ClkO=Clkl......(2)d=clkl_clk0......(3)S=S+d......(4)所述計(jì)算單元114的功能通過使處理器301基于0S22a的進(jìn)程或線程的進(jìn)程或線程控制(生成、激活、停止或終止進(jìn)程或線程的控制)時(shí)的時(shí)鐘值(clkl)執(zhí)行表達(dá)式(2)到
(4)中的算術(shù)運(yùn)算來實(shí)現(xiàn)。所述時(shí)鐘值clkO以及時(shí)鐘值clkl均被存儲(chǔ)在處理器301的寄存器或類似裝置中。所述存儲(chǔ)控制單元115根據(jù)執(zhí)行控制單元111讀取存儲(chǔ)在存儲(chǔ)單元12中的數(shù)據(jù),以及將數(shù)據(jù)寫入到存儲(chǔ)單元12中。例如,根據(jù)停止或終止進(jìn)程或線程的控制,所述存儲(chǔ)控制單元115從存儲(chǔ)單元12中讀取將要被停止或終止的進(jìn)程或線程上下文。所述上下文是關(guān)于進(jìn)程或線程的信息,并且包括對應(yīng)于進(jìn)程或線程的合并值S。所述存儲(chǔ)控制單元115的功能通過處理器301從對應(yīng)于要被停止或終止的進(jìn)程或線程的進(jìn)程上下文或線程上下文中讀取合并值S來實(shí)現(xiàn)。
此外,例如所述存儲(chǔ)控制單元115在存儲(chǔ)單元12中存儲(chǔ)以下信息:該信息將計(jì)算單元114所計(jì)算出的合并值S與要被執(zhí)行控制單元111停止或終止的進(jìn)程或線程相關(guān)聯(lián)。所述存儲(chǔ)控制單元115的功能通過處理器301將合并值S寫入對應(yīng)于要被停止或終止的進(jìn)程或線程的進(jìn)程上下文或線程上下文中來實(shí)現(xiàn),所述合并值S通過處理器301執(zhí)行表達(dá)式
(3)和(4)中的算術(shù)運(yùn)算來計(jì)算得出。此外,例如作為由執(zhí)行處理單元111所執(zhí)行的進(jìn)程或線程的激活或生成的一部分,所述存儲(chǔ)控制單元115將由處理器301執(zhí)行表達(dá)式(2)中的算術(shù)運(yùn)算所計(jì)算得出的值clkO存儲(chǔ)到被激活或生成的進(jìn)程或線程的進(jìn)程上下文或線程上下文中。在另一種方法中,每當(dāng)計(jì)算單元114計(jì)算差值d時(shí),存儲(chǔ)控制單元115都會(huì)將計(jì)算出的差值d存儲(chǔ)在相應(yīng)的進(jìn)程上下文或線程上下文中。當(dāng)同一個(gè)進(jìn)程或線程運(yùn)行多次時(shí),差值d被多次存儲(chǔ)在相同的進(jìn)程上下文或線程上下文中。通過包含在處理單元11中的執(zhí)行單元110、執(zhí)行控制單元111、時(shí)鐘計(jì)數(shù)器112、讀取處理單元113、計(jì)算單元114和存儲(chǔ)控制單元115所執(zhí)行的上述處理,為處理器301所執(zhí)行的各個(gè)進(jìn)程或線程計(jì)算出在進(jìn)程或線程的處理中所包含的時(shí)鐘周期的數(shù)量。圖3中示出的硬件的各元件在下面進(jìn)一步描述。RAM302是可讀并可寫的存儲(chǔ)器。例如,諸如靜態(tài)RAM (SRAM)或動(dòng)態(tài)RAM (DRAM)等半導(dǎo)體存儲(chǔ)器被用作RAM302。替換地,閃速存儲(chǔ)器或類似裝置也可以被代替RAM而使用。R0M303可以包括可編程ROM (PROM)或類似裝置。驅(qū)動(dòng)裝置304是執(zhí)行從記錄介質(zhì)305中讀取信息和向記錄介質(zhì)305中寫入信息中的至少一個(gè)裝置。記錄介質(zhì)305存儲(chǔ)由驅(qū)動(dòng)裝置304寫入的信息。所述記錄介質(zhì)305是諸如硬盤、光盤(⑶)、數(shù)字多功能光盤(DVD)或藍(lán)光光盤等記錄介質(zhì)。例如,計(jì)算機(jī)I具有驅(qū)動(dòng)裝置304和對應(yīng)多種類型的記錄介質(zhì)的記錄介質(zhì) 305。輸入裝置311是響應(yīng)于物理操作而發(fā)送輸入信號(hào)的裝置。例如,輸入裝置311是諸如附接于計(jì)算機(jī)I的主體的鍵盤或按鈕等按鍵裝置,或諸如鼠標(biāo)或觸摸面板等點(diǎn)擊裝置。輸出裝置312是響應(yīng)于計(jì)算機(jī)I的控制而輸出信息的裝置。例如,輸出裝置312是諸如顯示器等圖像輸出裝置或者諸如揚(yáng)聲器等音頻輸出裝置。例如,諸如觸摸屏等輸入和輸出裝置,可以用作輸入裝置311和輸出裝置312。現(xiàn)在參照圖4-圖6來描述當(dāng)多線程被激活時(shí)如何執(zhí)行數(shù)據(jù)讀取的關(guān)系。盡管圖4-圖6中描述的是執(zhí)行多線程的情況,但數(shù)據(jù)讀取之間的關(guān)系與執(zhí)行多任務(wù)的情況是相同或相似的。圖4示出了涉及在執(zhí)行單元110、時(shí)鐘計(jì)數(shù)器112以及存儲(chǔ)在存儲(chǔ)單元12中的線程上下文之間進(jìn)行數(shù)據(jù)讀取的關(guān)系。執(zhí)行控制單元111根據(jù)線程調(diào)度器激活一個(gè)線程(或當(dāng)沒有線程時(shí),生成一個(gè)線程)。在由執(zhí)行控制單元111所執(zhí)行的線程激活處理的過程中,讀取處理單元113執(zhí)行從時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘周期的數(shù)量的處理(箭頭(I)和(2))。通過計(jì)算單元114和存儲(chǔ)控制單元115所執(zhí)行的處理,將所讀取的時(shí)鐘周期的數(shù)量(clkl)作為初始時(shí)鐘周期的數(shù)量(clkO)寫入到圖5所示的線程上下文Tl中(寫入到clkO:箭頭(3))。當(dāng)線程的激活完成時(shí),執(zhí)行單元110基于包含在圖5所示的線程上下文Tl中的信息來執(zhí)行所激活的線程的處理。
圖5示出了線程上下文Tl的數(shù)據(jù)結(jié)構(gòu)的示例。所述線程上下文Tl包括用于由處理器301所執(zhí)行的線程處理的處理信息,以及線程管理信息。所述處理信息是諸如程序計(jì)數(shù)器或堆棧指針等指定數(shù)據(jù)讀取位置的信息。執(zhí)行單元110基于在線程上下文Tl的信息中指定的處理信息執(zhí)行處理。線程管理信息包括線程標(biāo)識(shí)符(ID)、時(shí)間信息(線程被激活的時(shí)間to、線程處理時(shí)間的合并值St和類似信息)、以及時(shí)鐘周期數(shù)量的信息(線程的初始時(shí)鐘周期數(shù)量clkO以及在線程處理中所包含的時(shí)鐘周期的數(shù)量的合并值S)。在多任務(wù)控制中使用的進(jìn)程上下文具有例如與圖5中所示的線程上下文Tl相同或相似的數(shù)據(jù)結(jié)構(gòu),并包括進(jìn)程ID,而不是線程ID。所述進(jìn)程上下文還包括例如關(guān)于在進(jìn)程中運(yùn)行的線程的信息。所述執(zhí)行控制單元111響應(yīng)于例如切換到另一個(gè)線程而執(zhí)行線程停止處理。在線程停止處理中,存儲(chǔ)控制單元115在線程上下文Tl中保存諸如程序計(jì)數(shù)器或堆棧指針等處理信息。在線程停止處理中,讀取處理單元113執(zhí)行從時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘周期的數(shù)量的操作(箭頭(4)和(5))。計(jì)算單元114和存儲(chǔ)控制單元115基于在線程激活處理中所讀取的時(shí)鐘周期的數(shù)量(clkl)以及被寫入到線程上下文Tl中的時(shí)鐘周期的數(shù)量來計(jì)算合并值S (獲得clkO:箭頭(6)),并將所述合并值S寫入線程上下文Tl (箭頭(7))。通過上述處理,計(jì)算機(jī)I能夠?qū)募^(I)和(2)處的讀取點(diǎn)到箭頭(4)和(5)處的讀取點(diǎn)所計(jì)數(shù)的時(shí)鐘周期的數(shù)量記錄到線程上下文Tl中。圖6示出了當(dāng)存在多個(gè)線程時(shí)如何進(jìn)行數(shù)據(jù)讀取的關(guān)系。圖6中被表示為“線程a”的時(shí)段表示在“線程a”的線程激活、線程處理、以及線程停止的處理中所包含的時(shí)段。由存儲(chǔ)控制單元115執(zhí)行的用于激活和停止“線程a”的寫入處理,基于在箭頭(I)和(2)處讀取的時(shí)鐘周期的數(shù)量,在線程上下文(a)上執(zhí)行。線程上下文(a)是“線程a”的線程上下文。由存儲(chǔ)控制單元115執(zhí)行的用于激活和停止“線程b”的寫入處理,基于在箭頭(3)和(4)處讀取的時(shí)鐘周期的數(shù)量,在線程上下文(b)上執(zhí)行。線程上下文(b)是“線程b”的線程上下文。此外,當(dāng)在“線程b”的處理之后再次執(zhí)行“線程a”的處理時(shí),由存儲(chǔ)控制單元115執(zhí)行的用于激活和停止“線程a”的寫入處理,基于在箭頭(5)和(6)中讀取的時(shí)鐘周期的數(shù)量,在線程上下文(a)上執(zhí)行。在各個(gè)線程的處理中所包含的時(shí)鐘周期的數(shù)量由上述存儲(chǔ)控制單元115進(jìn)行計(jì)數(shù),從而更新包含在各個(gè)線程上下文中的合并值S。在第一實(shí)施例中,處理器301的工作頻率可以改變。例如,如果處理器301的工作頻率在箭頭X所指示的時(shí)間發(fā)生變化,那么處理器301的工作頻率在箭頭(I)和(2)指示的時(shí)間與由箭頭(5)和(6)指示的時(shí)間之間是不同的。也就是說,假設(shè)操作是在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行的指令,那么每單位時(shí)間內(nèi)的操作數(shù)量是不同的。因此,通過使用現(xiàn)有技術(shù)中測量處理器301所占用的時(shí)間的方法,基于箭頭(I)和(2)之間的時(shí)間和箭頭(5)和(6)之間的時(shí)間的處理器負(fù)載的估計(jì),將是不一致的,原因在于單位時(shí)間內(nèi)的實(shí)際操作數(shù)是不同的。然而在第一實(shí)施例中,即使工作頻率改變時(shí),可以在波動(dòng)之前或之后測量在箭頭(I)和(2)之間以及箭頭(5)和(6)之間的處理器301的實(shí)際操作數(shù)量。圖7示出了由處理單元11執(zhí)行控制以對各個(gè)線程的處理中所包含的時(shí)鐘周期的數(shù)量進(jìn)行計(jì)數(shù)的流程圖。所述控制,例如是由處理器301根據(jù)0S22a所執(zhí)行的控制。當(dāng)對各個(gè)進(jìn)程中所包含的時(shí)鐘周期的數(shù)量進(jìn)行計(jì)數(shù)時(shí),執(zhí)行與圖7中的流程相同或類似的流程。然而,在這種情況下,所述控制在進(jìn)程中而不是在線程中執(zhí)行。
首先,執(zhí)行控制單元111確定線程控制事件是否已發(fā)生(S11)。當(dāng)由執(zhí)行控制單元111確定線程控制事件已經(jīng)發(fā)生時(shí)(步驟Sll中為“是”),執(zhí)行控制單元111開始處理以停止或終止線程(S12)。S12中的處理將在后文描述。當(dāng)S12中的處理結(jié)束時(shí),執(zhí)行控制單元111開始處理以生成或激活一個(gè)線程(S13)。S13中的處理也在后文描述。根據(jù)分配給處理器301的進(jìn)程的狀態(tài),諸如當(dāng)正在執(zhí)行的線程的處理完成時(shí)或當(dāng)另一個(gè)線程的中斷發(fā)生時(shí),0S22a中包含的多線程調(diào)度器執(zhí)行是否發(fā)起了線程控制事件的判定。圖8示出了上述停止或終止線程的處理(S12)的示例。首先,執(zhí)行控制單元111判定所發(fā)生的事件是否是用于停止線程(S21)。當(dāng)所發(fā)生的事件不是用于停止線程時(shí)(在S21中為“否”),執(zhí)行控制單元111判定所發(fā)生的事件是否是用于終止線程(S29)。由包含在0S22a中的多線程調(diào)度器,根據(jù)諸如中斷是否已經(jīng)發(fā)生或線程處理是否已經(jīng)結(jié)束等情況來確定事件的生成以及根據(jù)該事件生成所執(zhí)行的處理。當(dāng)停止線程的事件發(fā)生時(shí)(在S21中為“是”),執(zhí)行控制單元111停止由控制器301正在處理的線程的讀取命令(S22)。在S22的處理之后,執(zhí)行控制單元111獲取與停止命令讀取對應(yīng)的線程的處理信息。例如,執(zhí)行控制單元111讀取處理器301中的程序計(jì)數(shù)器和堆棧指針的值。此外,執(zhí)行控制單元111控制存儲(chǔ)控制單元115以將所讀取的處理信息存儲(chǔ)在對應(yīng)于正在被停止的線程的線程上下文中,所述線程上下文被存儲(chǔ)在存儲(chǔ)單元12中(S23)。當(dāng)S23中的處理被執(zhí)行時(shí),在S24到S27中,通過讀取處理單元113、計(jì)算單元114和存儲(chǔ)控制單元115所執(zhí)行的處理,來執(zhí)行更新正在被停止的線程中的時(shí)鐘周期的數(shù)量的處理。首先,讀取處理單元113從時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘值(clkl) (S24),并且存儲(chǔ)控制單元115從正在被停止的線程的線程上下文中讀取初始時(shí)鐘值(clkO)以及合并值S(S25)。S25中的處理可以在S24之前執(zhí)行。計(jì)算單元114使用在S24和S25中讀取的時(shí)鐘值(clkl)、初始時(shí)鐘值(clkO)以及合并值S來執(zhí)行表達(dá)式(3)和(4)中的算術(shù)運(yùn)算,并更新合并值S (S26)。存儲(chǔ)控制單元115將更新后的合并值S存儲(chǔ)在存儲(chǔ)單元12中正在被停止的線程的線程上下文中(S27)。當(dāng)在S27中的處理被執(zhí)行時(shí),在S12中的處理結(jié)束(S28)。當(dāng)S29中的判定結(jié)果表明用于終止線程的事件已經(jīng)發(fā)生(在S29中為“是”),在S30到S33中,通過讀取處理單元113、計(jì)算單元114和存儲(chǔ)控制單元115所執(zhí)行的處理來執(zhí)行更新正在被終止的線程中的時(shí)鐘周期的數(shù)量的處理。S30至S33中的處理與S24到S27中的處理相同或相似,因此省略對其的說明。在S33的處理之后,存儲(chǔ)控制單元115將包含在正在被終止的線程的線程上下文中的線程ID和合并值S存儲(chǔ)在存儲(chǔ)單元12的另一個(gè)存儲(chǔ)區(qū)域中(S34)。因此,即使當(dāng)用于線程上下文的存儲(chǔ)區(qū)域被釋放時(shí),表示所述終止線程的操作數(shù)量的數(shù)據(jù)仍可以保留。當(dāng)S34中的處理結(jié)束時(shí),在S12中的處理結(jié)束(S28)。當(dāng)在S29中的判定結(jié)果表明事件不是用于終止線程時(shí)(在S29中為“否”),S12中的處理結(jié)束(S28)。例如,當(dāng)線程在計(jì)算機(jī)I被激活后立即開始時(shí),因?yàn)樵谥皼]有線程被處理,則在S29中判定該事件不是用于終止線程的事件。圖9示出了上述生成或激活線程的處理(S13)的處理示例。首先,執(zhí)行控制單元111判定已經(jīng)發(fā)生的事件是否是為了激活線程(S41)。當(dāng)所發(fā)生的事件不是用于激活線程時(shí)(在S41中為“否”),執(zhí)行控制單元111判定已經(jīng)發(fā)生的事件是否是用于生成線程(S47)。由包含在0S22a中的多線程調(diào)度器,根據(jù)諸如中斷是否已經(jīng)發(fā)生或線程處理是否已經(jīng)結(jié)束等情況來確定事件的生成以及根據(jù)該事件生成所執(zhí)行的處理。當(dāng)已經(jīng)發(fā)生的事件是用于激活線程時(shí)(在S41中為“是”),執(zhí)行控制單元111從時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘值(clkl) (S42)。在通過S42中的處理讀取時(shí)鐘值(clkl)后,如表達(dá)式(2)中所示,計(jì)算單元114使用時(shí)鐘值(clkl)對變量clkO賦值。存儲(chǔ)控制單元115將使用時(shí)鐘值(clkl)所賦值的變量clkO存儲(chǔ)在對應(yīng)于要被激活的線程的線程上下文中(S43)。此外,存儲(chǔ)控制單元115從存儲(chǔ)單元12讀取要被激活的線程的線程上下文中的處理信息(S44)。所述處理信息是用于要被激活的線程的處理的信息,并且該處理信息包括,例如程序計(jì)數(shù)器和堆棧指針的值。在S44中的處理可以在S42或S43的處理之前或之后進(jìn)行。當(dāng)在S44中的處理被執(zhí)行時(shí),執(zhí)行控制單元111使執(zhí)行單元110基于在S44中讀取的處理信息來開始處理(S45)。在S45中的處理被執(zhí)行后,在S13中的處理結(jié)束(S46)。當(dāng)在S47中判定的結(jié)果表示已經(jīng)發(fā)生的事件是用于生成線程時(shí)(在S47中為“是”),執(zhí)行控制單元111生成線程上下文(S48)。在S48中的處理中,基于來自執(zhí)行控制單元111的指令,存儲(chǔ)控制單元115確定在存儲(chǔ)單元12中用于存儲(chǔ)所述線程上下文的存儲(chǔ)區(qū)域,并使要被生成的線程的線程ID存儲(chǔ)于所述存儲(chǔ)區(qū)域中。讀取處理單元113從時(shí)鐘計(jì)數(shù)器112中讀取時(shí)鐘值(clkl) (S49)。S49中的處理可以在S48中的處理之前進(jìn)行。當(dāng)通過S49的處理讀取時(shí)鐘值(clkl)時(shí),如表達(dá)式(2)所示,計(jì)算單元114使用時(shí)鐘值(clkl)對變量clkO賦值。存儲(chǔ)控制單元115將使用時(shí)鐘值(clkl)所賦值的變量clkO存儲(chǔ)在要被生成的線程的線程上下文中(S50)。當(dāng)S50中的處理被執(zhí)行時(shí),執(zhí)行控制部111使執(zhí)行單元110開始處理(S51)。當(dāng)S51中的處理被執(zhí)行時(shí),S13中的處理結(jié)束(S46 )。當(dāng)在S13中的處理結(jié)束時(shí),執(zhí)行控制單元111執(zhí)行S11中的處理,并檢測線程控制事件的發(fā)生。當(dāng)計(jì)算機(jī)I執(zhí)行以上處理時(shí),對于在計(jì)算機(jī)I上運(yùn)行的各個(gè)線程及進(jìn)程,計(jì)數(shù)在由處理器301執(zhí)行的處理中所包含的時(shí)鐘周期的數(shù)量。由于處理器301的操作消耗功率,由處理器301執(zhí)行的實(shí)際操作數(shù)量的測量在估計(jì)處理器301的操作中所包含的成本(諸如處理器301的功率消耗)時(shí)是有意義的。例如,現(xiàn)有技術(shù)中根據(jù)占用時(shí)間估計(jì)處理器301的功率消耗的方法,在工作頻率變化之前以及之后,對于功率消耗的估計(jì)結(jié)果是不一致的。與之相比,在上述處理中,因?yàn)楂@得了處理器301的實(shí)際操作數(shù)量,因此即使處理器301的工作頻率變化時(shí),仍可根據(jù)變化后的工作頻率來估計(jì)功率消耗的數(shù)量。在第一實(shí)施例中,因?yàn)橐獮楦鱾€(gè)進(jìn)程或線程計(jì)算處理中所包含的時(shí)鐘周期的數(shù)量,因此對于在各個(gè)進(jìn)程或線程中的功率消耗的估計(jì)具有意義的操作數(shù)量是可檢測的。此外,除了功率消耗,計(jì)算機(jī)I還可以根據(jù)處理器301的操作數(shù)量來估計(jì)例如,由處理器301產(chǎn)生的功率消耗所生成的二氧化碳的量或者處理器301輻射的熱量,作為處理器301的操作所包含的成本。例如通過預(yù)先計(jì)算處理器301每時(shí)鐘周期所消耗的功率,并且將第一實(shí)施例中計(jì)數(shù)的時(shí)鐘周期的數(shù)量與預(yù)先計(jì)算的每時(shí)鐘周期所消耗的功率相乘,來計(jì)算功率消耗的估計(jì)值。類似地,例如,通過將預(yù)先計(jì)算的對應(yīng)于處理器301的一個(gè)時(shí)鐘周期所釋放的二氧化碳的量與第一實(shí)施例中所計(jì)數(shù)的時(shí)鐘周期的數(shù)量相乘,來計(jì)算二氧化碳量的估計(jì)值。此外,例如當(dāng)計(jì)算所釋放的二氧化碳量時(shí),待與第一實(shí)施例中計(jì)數(shù)的時(shí)鐘周期的數(shù)量相乘的值的大小可以根據(jù)被提供給處理器301的電力的發(fā)電類型而改變。例如,可以使用兩種類型的值:一種使用礦物燃料發(fā)電,一種使用可再生能源發(fā)電。類似的,由處理器301生成的熱量可以通過以下算術(shù)運(yùn)算來獲得,如將預(yù)先計(jì)算的表示處理器301的每時(shí)鐘周期所發(fā)出的熱量的值與時(shí)鐘周期的數(shù)量相乘。除了經(jīng)過處理器301中的電路的充電和放電之外,處理器301還由于電流泄漏而消耗功率。因此,例如,當(dāng)計(jì)算功率消耗時(shí),執(zhí)行單元110將由于電流泄漏導(dǎo)致的功率消耗與基于時(shí)鐘周期的數(shù)量所獲得的功率消耗相加,并輸出總和值。由電流泄漏導(dǎo)致的功率消耗如下計(jì)算。例如,通過與處理單元11計(jì)算時(shí)鐘周期的數(shù)量的方式相同或相似的處理來測量處理各個(gè)進(jìn)程或線程所包含的時(shí)間。執(zhí)行單元110將所測得的時(shí)間與每單位內(nèi)因電流泄漏而導(dǎo)致的功率消耗相乘。此時(shí),當(dāng)從時(shí)鐘計(jì)數(shù)器112讀取時(shí)鐘周期數(shù)時(shí),包含在處理單元11中的讀取處理單元113從計(jì)時(shí)器獲取時(shí)間信息。此外,執(zhí)行控制單元111以及存儲(chǔ)控制單元115執(zhí)行與時(shí)鐘周期的數(shù)量的計(jì)數(shù)方式相同或相似的處理,并將處理中使用的累計(jì)時(shí)間存儲(chǔ)在進(jìn)程上下文或線程上下文中。下面將描述第二個(gè)實(shí)施例。在第二實(shí)施例中使用了第一實(shí)施例中的計(jì)算機(jī)I。在第二實(shí)施例中,運(yùn)行在計(jì)算機(jī)I上的應(yīng)用程序23c執(zhí)行使處理器301在執(zhí)行應(yīng)用程序23a和23b的處理時(shí)的操作數(shù)量可視化的處理。執(zhí)行單元110基于應(yīng)用程序23c執(zhí)行例如如下所述的可視化處理。圖1OA至IOC示出了表示進(jìn)程和線程之間的關(guān)系的表T2a至T2c (以下也可以統(tǒng)稱為“表T2”)。圖1OA中所示的表T2a表示,進(jìn)程ID為“A-1”的進(jìn)程包括線程ID為“a”的線程。圖1OB中所示的表T2b表示,進(jìn)程ID為“B-1”的進(jìn)程包括線程ID為“b”的線程和線程ID為“c”的線程。圖1OC中所示的表T2c表示,進(jìn)程ID為“A-2”的進(jìn)程包括線程ID為“d”的線程。如圖1OB所示,在一個(gè)進(jìn)程中可能會(huì)生成兩個(gè)或更多個(gè)線程。表示進(jìn)程和線程之間的關(guān)系的表并不限于圖1OA至IOC中所示的那些??缮膳c計(jì)算機(jī)I上運(yùn)行的各個(gè)進(jìn)程對應(yīng)的表。圖11示出了表示程序和進(jìn)程之間的關(guān)系的表T3。表T3包括將計(jì)算機(jī)I正在執(zhí)行或計(jì)算機(jī)I過去執(zhí)行的程序與進(jìn)程相關(guān)聯(lián)的信息,其中所述進(jìn)程為各個(gè)程序的處理單元。表T2和T3被存儲(chǔ)在存儲(chǔ)單元12中。在圖11中,程序ID “A”與進(jìn)程ID “A-1”和“A-2”相關(guān)聯(lián),程序ID “B”與進(jìn)程ID “B-1”和“B-2”相關(guān)聯(lián),程序ID “C”與進(jìn)程ID “C-1”相關(guān)聯(lián)。作為例子,應(yīng)用程序23a的程序ID為“A”,應(yīng)用程序23b的程序ID為“B”,以及應(yīng)用程序23c的程序ID為“C”。執(zhí)行單元110提取與運(yùn)行在計(jì)算機(jī)I中的程序、過程和線程有關(guān)的信息,并更新表示進(jìn)程和線程之間的關(guān)系的表T2,以及表示程序和進(jìn)程之間的關(guān)系的表T3。所述更新在根據(jù)計(jì)算機(jī)上執(zhí)行的操作的時(shí)間或在給定的時(shí)間來周期性地執(zhí)行。當(dāng)更新時(shí)間已經(jīng)到達(dá)時(shí),執(zhí)行單元110通過獲取存儲(chǔ)在各個(gè)進(jìn)程的進(jìn)程上下文中的線程ID并將所獲得的線程ID存儲(chǔ)在表T2的對應(yīng)于各個(gè)進(jìn)程的一個(gè)表中來更新表T2。當(dāng)更新時(shí)間已經(jīng)到達(dá)時(shí),執(zhí)行單元110通過獲取存儲(chǔ)在進(jìn)程管理表(未示出)中的進(jìn)程ID以及將所獲得的相關(guān)于各個(gè)程序的進(jìn)程ID存儲(chǔ)于表T3中來更新表T3,執(zhí)行控制單元111使用所述進(jìn)程管理表來執(zhí)行進(jìn)程控制。
此外,執(zhí)行單元110從計(jì)算機(jī)I上執(zhí)行的各個(gè)線程或進(jìn)程的線程上下文或進(jìn)程上下文中采集合并值S,并基于所采集的合并值S以及表T2和T3來計(jì)算在計(jì)算機(jī)I上運(yùn)行的各個(gè)程序的操作數(shù)量。當(dāng)差值d代替合并值S而被存儲(chǔ)在各個(gè)進(jìn)程上下文或線程上下文中時(shí),計(jì)算各個(gè)進(jìn)程上下文或線程上下文中存儲(chǔ)的差值d的總和,并且將該總和視為給定程序的合并值S。使用例如圖12所示的表T4來管理各個(gè)程序的操作數(shù)量。在表T4中,各個(gè)程序的程序ID相關(guān)于程序的程序操作數(shù)量T。圖13示出了計(jì)算各個(gè)程序的程序操作數(shù)量T的流程圖。所述處理根據(jù)應(yīng)用程序23c由執(zhí)行單元110執(zhí)行。與表T2和T3的更新一樣,程序的操作數(shù)量T的計(jì)算在根據(jù)計(jì)算機(jī)I上所執(zhí)行的操作的時(shí)間或者在給定的時(shí)間來周期性地執(zhí)行。在S61的處理中,判定所述時(shí)間是否到達(dá)。當(dāng)確定計(jì)算程序操作數(shù)量T的時(shí)間已經(jīng)到達(dá)時(shí)(在S61中為“是”),執(zhí)行單元110從表T3所表示的程序ID中選擇未被選擇的程序ID (S62)。執(zhí)行控制單元111清空在S62中所選擇的表示程序ID的操作數(shù)量的變量D (S63)。S63中的處理可以在S62中的處理前被執(zhí)行。接下來,執(zhí)行單元110在與S62中從表T3中所選擇的程序ID相關(guān)的進(jìn)程ID中選擇未選擇的進(jìn)程ID (S64)。在S64中的處理之后,執(zhí)行單元110在與S64中所選擇的進(jìn)程ID相關(guān)的線程ID中選擇未被選擇的線程ID (S65)。執(zhí)行單元110從對應(yīng)于S65中所選擇的線程ID的線程上下文中讀取合并值S(S66)。在S66中的處理之后,執(zhí)行單元110將變量D的值更新為S66中所讀取的合并值S與變量D的總和(S67)。S卩,執(zhí)行單元110執(zhí)行算術(shù)運(yùn)算D=D+S,其中“=”是表示賦值的操作符。在此時(shí),執(zhí)行單元110將包含在線程上下文中的合并值S清零(S=O) (S68)。在S68中的處理之后,執(zhí)行單元110判定在與S64中從表T2所選擇的進(jìn)程ID相關(guān)聯(lián)的線程ID中是否存在未被選擇的線程ID。當(dāng)在S69中的判定結(jié)果表明存在未被選擇的線程ID時(shí)(S69中為“是”),執(zhí)行單元110再次執(zhí)行S65中的處理。當(dāng)在S69中的判定結(jié)果表明沒有未被選擇的線程ID時(shí)(S69中為“否”),執(zhí)行單元110判定在與S62中從表T3所選擇的程序ID相關(guān)聯(lián)的進(jìn)程ID中是否存在未被選擇的進(jìn)程ID(S70)。當(dāng)在S70中的判定結(jié)果表明存在未被選擇的進(jìn)程ID時(shí)(在S70中為“是”),執(zhí)行單元110再次執(zhí)行S64中的處理。當(dāng)在S70中的判定結(jié)果表明不存在未被選擇的進(jìn)程ID時(shí)(在S70中為“否”),執(zhí)行單元110更新與表T4中所選擇的程序ID相關(guān)聯(lián)的程序操作數(shù)量T (S71)。即,執(zhí)行單元110執(zhí)行算術(shù)運(yùn)算T=T+D,其中“=”是表示賦值的操作符。在S71的處理之后,執(zhí)行單元110確定在表T3所表示的程序ID中是否存在未被選擇的程序ID (S72)。當(dāng)在S72中的判斷結(jié)果表明存在未被選擇的程序ID時(shí)(在S72中為“是”),執(zhí)行單元110再次執(zhí)行S62中的處理。當(dāng)在S72中的判定結(jié)果表明不存在未被選擇的程序ID時(shí)(在S72中為“否”),執(zhí)行單元110判斷是否存在執(zhí)行顯示處理的請求(S73)。例如,當(dāng)用戶輸入顯示請求時(shí),或當(dāng)從另一設(shè)備接收到顯示請求時(shí),判定為存在執(zhí)行顯示處理的請求。當(dāng)不存在執(zhí)行顯示處理的請求時(shí)(在S73中為“否”),執(zhí)行單元110終止處理(S75)。當(dāng)在S73中的判定結(jié)果表明存在執(zhí)行顯示處理的請求時(shí)(在S73中為“是”),例如,生成如圖15所示的屏幕信息41(S74)。當(dāng)接收到來自用戶的顯示請求時(shí),執(zhí)行單元110將所生成的屏幕信息41顯示在輸出裝置312上。當(dāng)接收到來自另一個(gè)設(shè)備的顯示請求時(shí),執(zhí)行單元110將屏幕信息41發(fā)送到發(fā)送顯示請求的設(shè)備。圖15所示的屏幕信息41包括表示各個(gè)程序的時(shí)鐘周期的數(shù)量、功率消耗、釋放的熱量以及二氧化碳消耗量的信息。如第一實(shí)施例所述,各個(gè)程序的功率消耗以及釋放的二氧化碳的量可以通過,例如分別將每時(shí)鐘周期的功率消耗和每時(shí)鐘周期所釋放的二氧化碳量與程序操作數(shù)量T相乘來計(jì)算。下面描述第三實(shí)施例。在第三實(shí)施例中,使用了第一實(shí)施例中的計(jì)算機(jī)I的硬件。第三實(shí)施例在軟件配置上與第一和第二實(shí)施例是不同的。圖16示出了根據(jù)第三實(shí)施例的計(jì)算機(jī)I的軟件配置的示例。在計(jì)算機(jī)I上運(yùn)行著多個(gè)虛擬機(jī)26a-26c。用于執(zhí)行各個(gè)虛擬機(jī)26a_26c的處理的硬件21由管理程序22b控制。另外,在第三實(shí)施例中,計(jì)算機(jī)I包括執(zhí)行單元110、執(zhí)行控制單元111,時(shí)鐘計(jì)數(shù)器112,讀取處理單元113,計(jì)算單元114和存儲(chǔ)控制單元115。通過基于第三實(shí)施例中的管理程序122b的處理,處理器301實(shí)現(xiàn)第一實(shí)施例中的執(zhí)行控制單元111、讀取處理單元113、計(jì)算單元114以及存儲(chǔ)控制單元115的功能。在第三實(shí)施例中,對于各個(gè)進(jìn)程或線程的處理器301的操作數(shù)量,在管理程序22b的管理下進(jìn)行計(jì)算,其中的進(jìn)程或線程是各個(gè)虛擬機(jī)26a到26c的處理的處理單元。在第三實(shí)施例中,虛擬機(jī)26c是用于管理操作數(shù)量的虛擬機(jī)?;谔摂M機(jī)26c的由執(zhí)行單元Iio執(zhí)行的處理在下面參照圖7進(jìn)行描述。首先,執(zhí)行單元110執(zhí)行測量各個(gè)應(yīng)用程序的操作數(shù)量的處理,如第二實(shí)施例中S61至S72的處理(S81)。接下來,執(zhí)行單元110從在圖18所示的虛擬機(jī)管理表T5所包含的虛擬機(jī)標(biāo)識(shí)信息(virtual machineidentification information, VMID)中選擇未被選擇的虛擬機(jī)標(biāo)識(shí)信息(S82)。在此作為示例,虛擬機(jī)26a的VMID為“X”,虛擬機(jī)26b的VMID為“Y”,以及虛擬機(jī)26c的VMID為“Z”。當(dāng)S82中的處理被執(zhí)行時(shí),表示各個(gè)虛擬機(jī)的操作數(shù)量的變量U被清零(S83)。此外,執(zhí)行單元110在與S82中從虛擬機(jī)管理表T5所選擇的VMID相關(guān)聯(lián)的程序中選擇未被選擇的程序(S84)。執(zhí)行單元110從表T5中讀取S84中所選擇的程序的程序操作數(shù)量T,并基于所讀取的程序操作數(shù)量U更新變量U (S85)。例如,執(zhí)行單元110通過將變量U與程序操作數(shù)量T的總和賦值給變量U來更新變量U。當(dāng)S85中的處理被執(zhí)行時(shí),執(zhí)行單元110判定在與S82中從圖18所示的虛擬機(jī)管理表T5所選擇的VMID相關(guān)聯(lián)的程序中是否存在未被選擇的程序(S86)。當(dāng)S86中的判定結(jié)果表明存在未被選擇的程序時(shí)(在S86為“是”),執(zhí)行單元110再次執(zhí)行S84中的處理。當(dāng)S86中的判定結(jié)果表明不存在未被選擇的程序時(shí)(在S86中為“否”),執(zhí)行單元110將變量U的值與S82中選擇的VMID相關(guān)聯(lián),并將相關(guān)聯(lián)的U和VMID存儲(chǔ)在圖19所示的表T6中(S87)。在S87的處理之后,執(zhí)行單元110判定包含在表T5中的VMID中是否存在未被選擇的VMID(S88)。當(dāng)S88中的判定結(jié)果表明存在未被選擇的VMID時(shí)(在S88中為“是”),執(zhí)行單元110再次執(zhí)行S82中的處理。當(dāng)S88中的判定結(jié)果表明不存在未被選擇的VMID時(shí)(在S88中為“否”),執(zhí)行單元110執(zhí)行如第二實(shí)施例的S73和S74中的處理(S89)。例如,執(zhí)行單元110響應(yīng)于請求生成屏幕信息,并執(zhí)行發(fā)送所生成的屏幕信息或顯示所生成的屏幕信息的處理。圖20示出了第三實(shí)施例中的屏幕信息的示例。屏幕信息42是為使用虛擬機(jī)26a的用戶指示虛擬機(jī)26a的操作數(shù)量的信息。如圖20所示,為了例如在每月結(jié)束時(shí)生成包含各個(gè)月的用戶使用狀態(tài)的屏幕信息,執(zhí)行單元110將表T6拷貝到另一個(gè)存儲(chǔ)區(qū)域,并清除表T6中所包含的有關(guān)虛擬機(jī)(virtual machine, VM)操作數(shù)量的信息。此外,當(dāng)生成屏幕信息時(shí),執(zhí)行單元110為要被顯示的VMID讀取存儲(chǔ)在表T6中的VM操作數(shù)量,以及被存儲(chǔ)在其他存儲(chǔ)區(qū)域的過去月份的VM操作數(shù)量。類似于第二實(shí)施例,執(zhí)行單元110將所讀取的VM操作數(shù)量與每時(shí)鐘周期的功率消耗量以及每時(shí)鐘周期的二氧化碳釋放量分別相乘,從而分別計(jì)算出各個(gè)月的功率消耗以及二氧化碳釋放量。與功率消耗一樣,每月所收取的費(fèi)用根據(jù)給定合約(例如將每時(shí)鐘周期的費(fèi)用與時(shí)鐘周期的數(shù)量相乘而獲得的值)來確定。下面描述第四實(shí)施例。在第四實(shí)施例中,如在第三實(shí)施例中一樣,各個(gè)虛擬機(jī)都運(yùn)行于計(jì)算機(jī)I中。此外,具有控制硬件21的驅(qū)動(dòng)器功能的虛擬機(jī)也運(yùn)行于計(jì)算機(jī)I上,所述驅(qū)動(dòng)器執(zhí)行在計(jì)算機(jī)I上運(yùn)行的各個(gè)虛擬機(jī)的處理。相比之下,在第三實(shí)施例中,例如管理程序22b具有驅(qū)動(dòng)器功能。如在第三實(shí)施例中的一樣,虛擬機(jī)26c是例如管理操作數(shù)量的虛擬機(jī)。圖21示出了第四實(shí)施例中的計(jì)算機(jī)I的軟件配置的示例。除了圖16所示的第三實(shí)施例的軟件配置,還運(yùn)行有驅(qū)動(dòng)器VM27a和驅(qū)動(dòng)器VM27b。執(zhí)行VM26a的處理的硬件基于驅(qū)動(dòng)器VM27a來控制。此外,執(zhí)行VM26b的輸入以及輸出的硬件基于驅(qū)動(dòng)器VM27b來控制。圖22所示的表T7表示了第四實(shí)施例中的虛擬機(jī)管理表。虛擬機(jī)管理表T7是存儲(chǔ)以下數(shù)據(jù)的表:對于各個(gè)虛擬機(jī),該數(shù)據(jù)將運(yùn)行于計(jì)算機(jī)I上的虛擬機(jī)(包括驅(qū)動(dòng)器VM)的ID與運(yùn)行于虛擬機(jī)上的程序的ID相關(guān)聯(lián)。在虛擬機(jī)管理表T7中,驅(qū)動(dòng)器VM27的ID為“XX”,驅(qū)動(dòng)器VM27b的ID為“YY”。在虛擬機(jī)管理表T7中,還表明了 VM之間的關(guān)系。例如,虛擬機(jī)管理表T7包括與VMID “XX”相關(guān)聯(lián)的VMID “X”,作為表示關(guān)系的信息。所述信息表示VMID為“XX”的虛擬機(jī)為執(zhí)行VMID為“X”的虛擬機(jī)的處理的虛擬機(jī)。在第四實(shí)施例中,執(zhí)行單元110基于虛擬機(jī)26c執(zhí)行圖17中所示的流程圖。不同于第三實(shí)施例,在S82中,驅(qū)動(dòng)器虛擬機(jī)27a、27b和27c也被選擇。通過執(zhí)行單元110執(zhí)行S82至S88的流程,運(yùn)行于計(jì)算機(jī)I上的各個(gè)虛擬機(jī)的操作數(shù)量被計(jì)算。圖23示出各個(gè)虛擬機(jī)的操作數(shù)量。此外,在圖17所示的S89的流程中,執(zhí)行單元110執(zhí)行上述的顯示處理。在第四實(shí)施例中,對于虛擬機(jī)管理表T7中的彼此相關(guān)的虛擬機(jī),執(zhí)行單元110計(jì)算相關(guān)虛擬機(jī)的操作數(shù)量的總和,并顯示所述計(jì)算出的總和。在第四實(shí)施例中,通過執(zhí)行以上的處理,除了由處理器301針對要被測量的程序所執(zhí)行的算術(shù)處理,由處理器301執(zhí)行的硬件控制的操作數(shù)量也是可測量的。此外,對于在計(jì)算功率消耗時(shí)用作被乘數(shù)的系數(shù),例如要被各個(gè)虛擬機(jī)26a至26c的操作數(shù)量乘以的系數(shù)是與要被各個(gè)驅(qū)動(dòng)器VM27a和27b的操作數(shù)量乘以的系數(shù)不同的值。例如,對于驅(qū)動(dòng)器VM27a和27b,還可以設(shè)置考慮到由各個(gè)驅(qū)動(dòng)器VM27a和27b控制的硬件的功率消耗的系數(shù)。下文中將描述第五實(shí)施例。第五實(shí)施例是例如在圖24中示出的包括第一實(shí)施例中的計(jì)算機(jī)I的系統(tǒng)的實(shí)施例。如圖24所示的系統(tǒng),包括計(jì)算機(jī)1、計(jì)算機(jī)2、中繼設(shè)備3、中繼設(shè)備4以及網(wǎng)絡(luò)5。計(jì)算機(jī)I的硬件配置和功能配置與第一實(shí)施例到第四實(shí)施例中的計(jì)算機(jī)I的配置是相同或相似的。計(jì)算機(jī)2是例如與計(jì)算機(jī)I的硬件配置相同或相似的計(jì)算機(jī)。中繼設(shè)備3是對計(jì)算機(jī)I和網(wǎng)絡(luò)5之間的通信進(jìn)行中繼的設(shè)備。中繼設(shè)備4是對計(jì)算機(jī)2和網(wǎng)絡(luò)5之間的通信進(jìn)行中繼的設(shè)備。例如,計(jì)算機(jī)2是由運(yùn)行于計(jì)算機(jī)I上的虛擬機(jī)提供服務(wù)的計(jì)算機(jī)。替代地,被提供給的服務(wù)的計(jì)算機(jī)并不限于圖24中所示的計(jì)算機(jī)2。例如,服務(wù)可以被提供給多個(gè)計(jì)算機(jī)(未示出)。在第五實(shí)施例中,為被提供給服務(wù)的各個(gè)目的機(jī)測量處理器301的操作數(shù)量。對于被提供給服務(wù)的各個(gè)目的機(jī)的測量,意味著測量處理器301所執(zhí)行的操作數(shù)量。對請求被提供給服務(wù)的訪問源的各種處理的情況執(zhí)行所述測量。例如,上述測量意味著對以已經(jīng)通過接收服務(wù)的驗(yàn)證的用戶為單位(以可以通過用戶ID或類似信息標(biāo)識(shí)的帳號(hào)為單位)或以服務(wù)請求源的互聯(lián)網(wǎng)協(xié)議(IP)地址等為單位所執(zhí)行的處理,測量計(jì)算機(jī)I的操作數(shù)量。圖25示出了計(jì)算機(jī)I的軟件配置的示例。如在第三實(shí)施例中一樣,管理程序22b以及虛擬機(jī)26a至26c運(yùn)行于計(jì)算機(jī)I之上。在第五實(shí)施例中,虛擬機(jī)26a包含0S28a、應(yīng)用程序29a以及應(yīng)用程序29b。虛擬機(jī)26b包括0S28b、應(yīng)用程序29c以及應(yīng)用程序29d。虛擬機(jī)26a和26b兩者都不限于圖25所示的軟件配置,其他應(yīng)用程序也可以在計(jì)算機(jī)I上運(yùn)行。在第五實(shí)施例中,服務(wù)被基于應(yīng)用程序29a提供給另一個(gè)計(jì)算機(jī)。基于應(yīng)用程序29b來管理包含在虛擬機(jī)26a中的各個(gè)應(yīng)用程序的操作數(shù)量。如同第一實(shí)施例中的0S22a,0S28a是根據(jù)運(yùn)行于其上的各個(gè)應(yīng)用程序執(zhí)行硬件控制的軟件。0S28a使運(yùn)行于其上的各個(gè)應(yīng)用軟件的操作數(shù)量能夠被計(jì)數(shù)。與第一實(shí)施例不同,在第五實(shí)施例中,0S28a所執(zhí)行的控制為在管理程序22b上所執(zhí)行的控制,管理程序22b仿真硬件21。硬件21根據(jù)管理程序22b的控制執(zhí)行處理。圖26是示出要被測量的單元的切換時(shí)間的時(shí)序圖。即,圖26中所示的切換時(shí)間是,例如要由應(yīng)用程序29a進(jìn)行處理的單元的切換、要由0S28a進(jìn)行處理的單元的切換或者要由管理程序22b進(jìn)行處理的VM的切換。要由應(yīng)用程序29進(jìn)行處理的單元是可被服務(wù)(由應(yīng)用程序26a提供)識(shí)別的單元(要被處理的單元,如用戶(帳戶)或地址)。在圖26中,單元通過被稱為“CLID”的標(biāo)識(shí)信息來識(shí)別。標(biāo)識(shí)信息“CLID”是,例如用戶ID或處理請求源的地址。要被處理的VM由管理程序22b切換。在VM26a的處理被執(zhí)行的時(shí)段中,管理程序22b執(zhí)行待由0S28a處理的應(yīng)用程序的處理。要被處理的應(yīng)用由0S28a切換。要被處理的應(yīng)用的切換基本上由如第一實(shí)施例中所述的進(jìn)程或線程的切換來執(zhí)行。在0S28a的控制下,根據(jù)進(jìn)程或線程的切換(包括停止、終止、激活以及生成進(jìn)程或線程)來讀取時(shí)鐘計(jì)數(shù)器的值。此時(shí)所讀取的時(shí)鐘計(jì)數(shù)器的值是由管理程序22b仿真的時(shí)鐘計(jì)數(shù)器的值,并且該值可以通過計(jì)數(shù)在用于VM26a的處理中所包含的時(shí)鐘周期的數(shù)量而獲得。要被處理的單元由應(yīng)用程序29a切換。在圖26中,標(biāo)識(shí)信息CLID為Cl的單元被切換到標(biāo)識(shí)信息CLID為C2的單元(XI)。通過所述切換(XI),應(yīng)用程序29a向0S28a通知所述切換。切換的通知包括切換目的機(jī)處的單元的標(biāo)識(shí)信息CLID。根據(jù)來自應(yīng)用程序29a的切換通知,0S28a執(zhí)行時(shí)鐘計(jì)數(shù)處理并且改變計(jì)數(shù)器值的存儲(chǔ)位置。時(shí)鐘計(jì)數(shù)處理按照與根據(jù)應(yīng)用的切換的計(jì)數(shù)類似的方式來執(zhí)行(參見圖7-9)。改變計(jì)數(shù)器值的存儲(chǔ)位置是對存儲(chǔ)時(shí)鐘周期的數(shù)量的合并值S的線程上下文或進(jìn)程上下文進(jìn)行切換的處理。在第五實(shí)施例中,線程上下文和進(jìn)程上下文被提供給要被處理的各個(gè)單元,其將在下面進(jìn)行描述。圖27A-27C以及圖28示出了在第五實(shí)施例中用于管理程序、進(jìn)程以及線程的管理表的示例。在第五實(shí)施例中,為各個(gè)被處理的對象管理例如程序、進(jìn)程、以及線程。也就是說,將各個(gè)要被處理的對象的標(biāo)識(shí)信息CLID與圖5、11和12所示的表中所包含的程序、進(jìn)程以及線程的ID相加,并且管理所述標(biāo)識(shí)信息CLID和所述ID。圖27A至27C示出了進(jìn)程與線程之間的關(guān)系。在第五實(shí)施例中,0S28a將在通知中給出的標(biāo)識(shí)信息CLID增加到進(jìn)程ID以及線程ID兩者中。圖28示出了程序和進(jìn)程之間的關(guān)系。在第五實(shí)施例中,0S28a將在通知中給出的標(biāo)識(shí)信息CLID增加到程序ID和進(jìn)程ID兩者中。當(dāng)0S28a改變存儲(chǔ)位置時(shí),如果如圖27A至27C和圖28所示的信息對于在切換目的地處要被處理的單元來說并不存在,則基于來自應(yīng)用程序29a的通知中所包含的標(biāo)識(shí)信息CLID來生成管理信息。例如,要被生成的信息包含表不程序與進(jìn)程之間關(guān)系的信息和表示進(jìn)程與線程之間的關(guān)系的信息(如圖27A至27C以及圖28所示),以及用于各個(gè)CLID的線程上下文和進(jìn)程上下文。如同第二實(shí)施例中的應(yīng)用程序23c那樣,所述應(yīng)用程序29b是例如管理運(yùn)行于0S28a上的應(yīng)用的操作數(shù)量的應(yīng)用程序。圖29所示的表Tll由應(yīng)用程序29b管理。圖29示出了表11,該表是存儲(chǔ)了根據(jù)0S28a運(yùn)行的各個(gè)程序的各個(gè)處理單元的操作數(shù)量的表。應(yīng)用程序29b基于圖27A-27C以及圖28中所示出的關(guān)系以及存儲(chǔ)于各個(gè)線程上下文或各個(gè)進(jìn)程上下文中的合并值S的值來更新圖29中所示的表T11。所述更新通過類似于圖13和14中所示出的對表T4的更新的處理來執(zhí)行。因此,應(yīng)用程序29b測量在各個(gè)要被處理的單元中可被識(shí)別的處理所包含的處理器301的操作數(shù)量。由應(yīng)用程序29b生成的屏幕信息通過如電子郵件等工具發(fā)送到,例如適當(dāng)?shù)奶幚砟繕?biāo)。所述屏幕信息是例如表示操作數(shù)量的測量結(jié)果的屏幕信息,例如圖15或圖10中所示的那樣。因此,接收所提供的服務(wù)的用戶變得能夠知曉在提供的服務(wù)時(shí)所包含的處理器301的操作數(shù)量。例如在上述第一至第五實(shí)施例的任意一個(gè)中,處理器301可包括多個(gè)內(nèi)核。根據(jù)進(jìn)程或線程控制,OS從分配進(jìn)程或線程的處理器301的各個(gè)內(nèi)核所設(shè)置的時(shí)鐘計(jì)數(shù)器中讀取值,從而計(jì)算在各個(gè)內(nèi)核所執(zhí)行的處理中所包含的操作數(shù)量。本文所述的所有示例和條件語言都用于教示的目的,以幫助讀者理解本發(fā)明和發(fā)明人所提出的促進(jìn)本技術(shù)領(lǐng)域的發(fā)展的概念,并被認(rèn)為不局限于該具體闡述的示例和條件,同樣說明書中的這些示例的組成不表示本發(fā)明的優(yōu)勢和劣勢。雖然本發(fā)明的實(shí)施例被詳細(xì)的描述,但是應(yīng)當(dāng)理解,在不脫離本發(fā)明的精神和范圍的情況下,可以對本發(fā)明進(jìn)行各種修改、替換和變形。
權(quán)利要求
1.一種計(jì)算方法,包括: 通過處理器計(jì)算第一值與第二值之間的差值,所述第一值從用于對時(shí)鐘信號(hào)的脈沖進(jìn)行計(jì)數(shù)的時(shí)鐘計(jì)數(shù)器中讀取,所述時(shí)鐘信號(hào)具有多種頻率并響應(yīng)于對要被分配給所述處理器的單元的處理進(jìn)行啟動(dòng)的控制命令而提供給所述處理器,所述第二值響應(yīng)于停止處理的控制命令從所述時(shí)鐘計(jì)數(shù)器中讀取。
2.如權(quán)利要求1所述的計(jì)算方法,還包括:計(jì)算通過將所計(jì)算出的差值與表示某類每單位數(shù)量的時(shí)鐘周期的成本值的系數(shù)相乘所獲得的成本值。
3.如權(quán)利要求1或2所述的計(jì)算方法,還包括:在存儲(chǔ)裝置中與用于識(shí)別所述單元的標(biāo)識(shí)信息相關(guān)聯(lián)地存儲(chǔ)所計(jì)算出的差值。
4.如權(quán)利要求3所述的計(jì)算方法,還包括: 計(jì)算第三值和第四值之間的差值,所述第三值響應(yīng)于在進(jìn)一步執(zhí)行所述單元的處理時(shí)啟動(dòng)進(jìn)一步執(zhí)行的處理的控制命令來從所述時(shí)鐘計(jì)數(shù)器中讀取,所述第四值響應(yīng)于停止已經(jīng)在控制下啟動(dòng)的處理的控制命令來從所述時(shí)鐘計(jì)數(shù)器中讀??;以及 在所述存儲(chǔ)裝置中與所述標(biāo)識(shí)信息相關(guān)聯(lián)地存儲(chǔ)合并值,所述合并值通過將基于所述第三值和所述第四值所計(jì)算出的差值與存儲(chǔ)于所述存儲(chǔ)裝置中的與所述標(biāo)識(shí)信息相關(guān)聯(lián)的差值相加而獲得。
5.如權(quán)利要求4所述的計(jì)算方法,還包括: 計(jì)算第五值和第六值之間的差值,所述第五值響應(yīng)于在要執(zhí)行其他單元的處理時(shí)啟動(dòng)另一個(gè)單元的處理的控制命令來從所述時(shí)鐘計(jì)數(shù)器中讀取,所述第六值響應(yīng)于停止所述其他單元的處理的控制命令來從所述時(shí)鐘計(jì)數(shù)器中讀??;以及 當(dāng)所述其他單元是程序與所述單元的程序相同的單元時(shí),在所述存儲(chǔ)裝置中與標(biāo)識(shí)所述程序的程序標(biāo)識(shí)信息相關(guān)聯(lián)地存儲(chǔ)所述合并值與基于所述第五值和所述第六值所計(jì)算出的差值的總和。
6.如權(quán)利要求5所述的計(jì)算方法,還包括: 當(dāng)使所述程序的輸入控制和輸入控制中的至少一個(gè)被執(zhí)行的驅(qū)動(dòng)程序的單元的處理被執(zhí)行時(shí),計(jì)算第七值和第八值之間的差值,所述第七值響應(yīng)于啟動(dòng)所述驅(qū)動(dòng)程序單元的處理的控制命令從所述時(shí)鐘計(jì)數(shù)器中讀取,所述第八值響應(yīng)于停止所述驅(qū)動(dòng)程序單元的處理的控制命令從所述時(shí)鐘計(jì)數(shù)器中讀?。灰约? 在所述存儲(chǔ)裝置中與程序標(biāo)識(shí)信息相關(guān)聯(lián)地存儲(chǔ)基于所述第七值和所述第八值的差值與所述合并值和基于所述第五值和所述第六值所計(jì)算出的差值的所述總和的總和。
7.如權(quán)利要求1至6中任一項(xiàng)所述的計(jì)算方法,其中, 所述單元是用作多線程控制對象的線程、用作多任務(wù)控制對象的進(jìn)程以及對訪問計(jì)算機(jī)的訪問源執(zhí)行處理的單元中的一個(gè)。
8.一種計(jì)算設(shè)備,包括: 計(jì)算單元,所述計(jì)算單元用于計(jì)算第一值與第二值之間的差值,所述第一值從對時(shí)鐘信號(hào)的脈沖進(jìn)行計(jì)數(shù)的時(shí)鐘計(jì)數(shù)器中讀取,所述時(shí)鐘信號(hào)具有多種頻率并且響應(yīng)于對要被分配給所述處理器的單元的處理進(jìn)行啟動(dòng)的控制命令而被提供給所述處理器,所述第二值響應(yīng)于停止處理的控制命令從所述時(shí)鐘計(jì)數(shù)器中讀取。
9.如權(quán)利要求8所述的計(jì)算裝置,還包括:所述單元是用作多線程控制對象的線程、用作多任務(wù)控制對象的進(jìn)程以及對訪問計(jì)算機(jī)的訪問源執(zhí)行處理的單元中的一個(gè)。
10.如權(quán)利要求8或9所述的計(jì)算裝置,還包括: 存儲(chǔ)單元,所述存儲(chǔ)單 元與標(biāo)識(shí)所述單元的標(biāo)識(shí)信息相關(guān)聯(lián)地存儲(chǔ)所計(jì)算出的差值。
全文摘要
本發(fā)明公開了計(jì)算設(shè)備、計(jì)算方法及計(jì)算程序的記錄介質(zhì)。計(jì)算方法包括由處理器計(jì)算第一值和第二值之間的差值,所述第一值從對時(shí)鐘信號(hào)的脈沖進(jìn)行計(jì)數(shù)的時(shí)鐘計(jì)數(shù)器中讀取,所述時(shí)鐘信號(hào)的頻率發(fā)生改變并且響應(yīng)于對要被分配給處理器的處理單元的處理進(jìn)行啟動(dòng)的控制而被提供給處理器,所述第二值響應(yīng)于停止處理的控制而從時(shí)鐘計(jì)數(shù)器中讀取。
文檔編號(hào)G06F9/455GK103176836SQ201210559889
公開日2013年6月26日 申請日期2012年12月20日 優(yōu)先權(quán)日2011年12月21日
發(fā)明者加藤美保, 鈴木啟之, 北山翼, 黑羽法男 申請人:富士通株式會(huì)社