专利名称:用于确定cpu利用率的独立于操作系统的方法和系统的制作方法
技术领域:
本发明领域总体上涉及到中央处理单元(CPU)。更具体而言,本领域发明涉及到确定CPU的利用率。再具体而言,本发明领域涉及一种用于确定CPU在数据处理系统中的利用率的独立于操作系统的方法和系统。
背景技术:
在大多数现代多道编程的数据处理或者计算机系统中,各种任务或者用户应用会竞争处理时间以便在中央处理单元(CPU)或者类似的处理设备上执行。即使在非常高级的多任务化环境中的活动也趋向易于突发,具有强度处理活动周期所跟随着的等待时间或者不活动周期。所以,由于各种原因,对CPU和其他相似的数据处理系统设备的利用率进行分析是很有用的。例如,在很少或者没有用户任务被调度的周期期间的高处理器利用率可以作为病毒程序或者某个在任务调度时导致抖动或者其他低效率系统行为的可修正故障的标记。目前,对于确定CPU在数据处理系统中的利用率,存在若干种已知的机制。
如一个例子,在常规操作系统(OS)中,CPU利用率是通过累积CPU经过取样间隔的空闲时间而确定该处理器不活动时间的百分数来加以确定的。为了实现这一目的,任务或者线程的列表由OS来加以维护,它们就绪待运行,即,不用等待某个事件来恢复执行。当该就绪待运行列表为空时,没有任何任务处于执行中,并且处理器是空闲的。因此,独立于CPU的定时器被读取,并且处理器基本上不活动。这是通过将处理器置于预定的处理器性能状态诸如由众所周知的高级配置和电源接口规范,修订版2.0,2000年7月27日(ACPI)所定义的C2或者C3状态而加以实现的。在C2状态下,时钟信号被从处理器的功能单元除去,同时它的存储器子系统仍然活动,并且可由其他设备“探测”。在C3状态下,该时钟信号也被从该数据处理系统的存储器部分除去,并且进入所谓的″深度休眠″状态。当一个新的任务被添加到该就绪待运行列表时,该处理器就被置于活动状态(诸如C0的ACPI状态)并且该定时器被再次读取。于是,第一和第二定时器读取之差(乘以该定时器的周期)就代表该CPU的空闲时间。这一经过取样间隔的时间的累积然后被用于确定CPU利用率(该CPU时间的百分之多少消耗在空闲上)。遗憾的是,CPU利用率以及就绪待运行的任务列表的状态的这种测量离开OS通过所支持的应用编程接口(API)都是不可行的。
附图简述本发明是通过例子加以说明的,并且并不限制于附图,在这些附图中
图1a说明可使用本发明的常规数据处理系统;图1b说明图1a所绘制的数据处理系统的现有技术体系结构;图2更加详细地说明图1b绘制的体系结构的一部分;图3说明绘制了根据本发明的数据处理系统的操作的体系结构的系统图;图4说明本发明的应用程序利用率顺序的第一实施例;图5说明本发明的应用程序利用率顺序的第二实施例;图6说明本发明的应用程序利用率顺序的第三实施例;图7说明本发明方法的一个实施例的高级逻辑流程图。
发明详述一种用于确定CPU在数据处理系统中的利用率的独立于操作系统的方法和系统在此被公开。在以下详细描述中,对大量的具体细节进行了阐述以便提供对本发明的彻底理解。不过,对于本领域普通技术人员而言显而易见的是,要实践本发明,并非必须使用这些具体细节。在其他环境下,众所周知的结构、材料、电路、过程和接口也没有在细节上加以展示或者描述以便不会使本发明不必要地不清楚。
现在参考图1a,对可使用本发明的常规数据处理系统100加以说明。数据处理或者计算机系统100包括系统单元102、诸如显示器104和打印机110的输出设备、以及诸如键盘108和鼠标106的输入设备。数据处理系统100通过操纵输入设备108和106或者直接地从固定的或者可拆卸的介质存储设备诸如磁盘112和网络连接接口(未示出)接收要加以处理的数据。数据处理系统100然后处理数据,并且通过诸如显示器104、打印机110的输出设备、固定的或者像磁盘112的可拆卸的介质存储设备或者网络连接接口展示作为结果的输出数据。
现在参考图1b,它绘制的是诸如图1a所说明的数据处理系统100的部件的高级框图。在常规计算机系统中,系统单元102包括诸如中央处理单元(CPU)120这样的处理设备,该中央处理单元通过处理器系统总线(PSB)114连接到二级(L2)高速缓存器122。处理器系统总线114接着通过北桥电路124耦合到诸如本地总线116这样的扩展总线和存储器126。本地总线116可以包括外围部件互连(PCI)、视频电子标准协会(VESA)总线等等,被紧耦合到处理器120和处理器系统总线114以便允许高速访问选择设备,诸如显示设备128。
存储器126可以包括能够存储数据以及要由CPU 120执行的指令的只读(ROM)和/或诸如同步动态随机访问存储器(SDRAM)模块这样的随机访问(RAM)存储器设备。对在存储器126中所存储的数据和指令的访问是通过在北桥电路124之内的存储器控制器(未示出)而提供的。L2高速缓存器122被类似地使用,典型地是采用分级方式加以使用的,以便存储由CPU 120直接访问的数据和指令。显示设备128可以包括阴极射线管(CRT)显示器,诸如显示器104、液晶显示器(LCD)、或者用于将各种类型的数据显示给计算机用户的类似设备。例如,图像、图形、或者文本信息可以在显示设备128上展示给用户。数据处理系统100的系统单元102另外的特征在于,诸如工业标准体系结构(ISA)总线的扩展或者″兼容性″总线118、以及将它耦合到本地总线116以便于将其他相对较慢的设备连接到系统100上的南桥电路134。南桥电路134包括通用串行总线(USB)端口138以及用于像网络接口卡130、诸如硬磁盘驱动器132的数据存储设备、和诸如扬声器或者声卡的音频设备140这样的设备的其他直接连接。
没有直接耦合到南桥134的其他设备可以通过所说明的扩展总线118连接到系统100。将提供可拆卸的介质存储设备诸如磁盘112上的附加数据存储容量的软盘驱动器(FDD)144、和输入设备诸如键盘108和光标控制设备136均被采用这种方式耦合到扩展总线118,以便将数据、指令、和/或命令选择传送到中央处理单元120。光标控制设备136可以包括常规鼠标,诸如图1a的鼠标106、轨迹球、或者能够传送希望的光标操作的任何其他设备。类似地,扩展总线118包括输入/输出(I/O)控制器,该控制器具有用于将诸如打印机110的其他I/O设备连接到该系统的标准串行和并行端口功能。
本发明的系统包括软件、信息处理硬件以及各种处理步骤,将在以下对它们进行描述。本发明的特征和处理步骤可以体现为在诸如磁盘112的介质中所包括的机器或者计算机可执行的指令。这些指令可用于使通过该指令加以编程的通用或者专用处理器诸如CPU 120执行所描述的本发明方法。候选地,本发明的特征或者步骤可由包含用于执行这些步骤的硬连线逻辑的专用硬件部件加以执行,或者由所编程的计算机部件和定制硬件部件的任何组合加以执行。
现在参考图2,它更加详细地对图1b所绘制的体系结构的一部分进行说明。所展示的处理器120利用北桥电路124的存储器控制器226通过处理器系统总线114与存储器126进行通信。公共系统时钟,(BClk)216由时钟发生器208生成,并且被施加到CPU 120的时钟控制锁相环(PLL)218以及被施加到存储器控制器226。核心电压206被类似地施加到在所说明的实施例中的CPU 120,提供必要的工作电源。在BClk信号216被施加的同时,来往于存储器126的访问以它的近似100兆赫兹(MHz)的频率发生。不过,中央处理单元120能够以比这大得多的速度来执行任务,因此,总线比值或者乘数212被使用时钟控制信号GHI#202加以选择,并且更高频率的中央处理单元时钟信号被利用PLL 218生成。因此,例如,如果该系统或者前端时钟216具有100MHz的频率,并且5比1的比率212被使用GHI#信号202加以选择,则所生成的CPU时钟将具有近似500MHz的频率。候选地,更高的倍数或者比如7比1的比值212可以被选择,产生近似700MHz的CPU时钟频率。
然后,所生成的中央处理单元时钟信号,在被传递到处理器核心200之前,被施加到时钟调节(throttling)逻辑220。调节是一种技术,通过这种技术,CPU时钟被从处理器核心撤消或者″切断选通(gatedoff)″以防止核心内的功能单元进行操作。调节逻辑220因此就充当在PLL 218和处理器核心200之间的开关,它由停止时钟(Stp_Clk)控制信号204驱使。时间戳计数器224也被包括在CPU 120之中,并且为″选通(gated through)″或者施加到所展示的该处理器核心的的CPU时钟的每个周期(有时称为滴答或者脉冲)而增加。因为时间戳计数器224跟踪被施加到处理器核心200的功能单元诸如指令译码器、浮点和整数执行单元等等的时钟滴答或者周期数,所以它提供由CPU 120所执行的实际工作的极其准确的表示。图2所说明的一个附加的芯片组体系结构部件是独立定时器210。独立于系统的定时器210独立于CPU 120及其关联的系统时钟216而运行,并且不受Stp_Clk信号204调节或者BClk信号216的频率修改的影响。使用在读取之间流过的独立定时器210的滴答数及其固定频率,可以获得对通过时间的准确测量。在一个实施例中,WindowsTM的高性能计数器,通过Win32应用编程接口(API)作为QueryPerformanceCounter()函数输出,可以用作独立定时器210。在一个候选的、遵从高级配置和电源接口(ACPI)的实施例中,可以利用电源管理定时器。尽管在所说明的实施例中,独立定时器210被描述为与时钟发生器电路208集成在一起,但是在候选实施例中,定时器210可以采用独立的设备或者集成电路来生成。
现在参考图3,它说明描述根据本发明的数据处理系统的操作的体系结构系统图。在该所说明的实施例中,诸如CPU利用率应用304的多个应用程序302通过诸如微软公司的WindowsTM操作系统的操作系统300、一个或者多个设备驱动器306以及基本输入/输出系统(BIOS)代码310与包括CPU 120的各平台硬件设备308交互。所说明的系统,关于各种应用302的多任务处理和应用302和平台硬件308之间的通信而言,是中断驱动的。因此,在本发明的一个实施例中,应用302对平台硬件308之中的硬件资源的请求会导致生成诸如系统控制中断(SCI)或者系统管理中断(SMI)这样的中断,以及导致中断处理程序例程被响应地执行。然后,在操作系统300和平台硬件308之间的交互通过设备驱动器306和BIOS 310就可容易地进行。在所说明的实施例中,BIOS 310包含诸如附加到数据处理系统100的各种设备308的物理设备地址这样的信息,并且关于数据的实际传送而言是很有用的。作为对照,设备驱动器306典型地专用于特定的硬件设备,并且通常涉及到各种设备格式之间的数据的翻译。
现在参考图4,它说明本发明的应用程序利用率顺序的第一实施例。工作和休眠的各个周期被绘制在时间间隔400上,它们相当于将中央处理单元时钟信号施加到CPU 120的处理器核心200或者从其除去。因此,所说明的工作周期402可以代表遵从ACPI的数据处理系统的C0处理器性能状态。类似地,所说明的″休眠″状态404则相当于C2和更大的状态,因为对于这些状态中的每一种状态,这样的处理器时钟信号被从处理器核心200除去。在所说明的图4的实施例中,CPU利用率应用包括周期性地执行小应用程序(applet)或者应用。每次该小应用程序被执行时,CPU利用率因数就被根据来自以前的执行(或者来自用于第一次执行的缺省值)的数据加以计算。如所说明的,在第一次执行406期间,该执行中的小应用程序在此前所描述的性能计数器中检索值。在该小应用程序的第二执行408期间,该性能计数器将被再次读取,并且在读取之间所流过的时间将被计算为第二次408和第一次406读取之间的计数器值之差乘以预定的定时器时钟周期。除了该性能计数器之外,在该利用率小应用程序的每次执行406、408期间,时间戳计数器224都被读取。在所说明的实施例中,在第一次执行406和第二次执行408之间已经被施加到CPU核心200的CPU时钟信号的滴答或者周期总数是从时间戳计数器224所获得的最终值(TSCount1)中减去第一值的读取(TSCount0)而计算出的。因为施加到CPU 120的时钟信号的频率可以如前所述那样被改变,所以通过将滴答计数值(TSCount1-TSCount0)乘以当前CPU时钟信号周期,所施加的滴答计数然后就被转换为时间单位,所述当前CPU时钟信号周期也是用于CPU的时间戳计数器224的时钟周期。这一周期在本发明的一个实施例中是从SMI中断处理程序中获得的,该SMI中断处理程序负责将处理器120从一种性能状态转换为另一种,因此就利用在此所描述的GHI#和StpClk控制信号将CPU 120的时钟信号从一个值转换为另一个值。于是,CPU 120的利用率可以被表示为在(独立于系统的计数器的读取之间的)取样间隔期间的时间的比值或者百分数,在此期间,CPU 120的时钟信号被施加到处理器核心200,考虑到所展示的施加的时钟信号频率的变化。
现在参考图5,它说明本发明的应用程序利用率顺序的第二实施例。工作和休眠的各种周期被类似地绘制在时间间隔500上,它们相当于将CPU时钟信号施加到CPU 120的处理器核心200或从其除去,以及因此分别对应于C0和C2和更大的ACPI处理器性能状态。不过,与图4的利用率顺序相对比,在所说明的图5的实施例中,周期性地执行的诸如SMI处理程序506、508的中断处理程序被利用来读取用于计算CPU利用率所必须的值而不实际地执行该计算。实际上,该值被读取、存储以及顺序地提供给用于确定活动CPU时间的实际百分数的CPU利用率小应用程序510。而且,在这一实施例中,电源管理定时器而非性能计数器被利用来确定通过的时间。在SMI处理程序506第一次执行期间,一个值被从该数据处理系统的时间戳计数器224(TSCount0)和电源管理定时器(PMTimer0)这二者中读取。在该周期性的处理程序第二次执行508期间,值被再次从这两个定时器中读取,并且在这两种情形之下,所获得的值都被存储。接着,CPU利用率小应用程序被执行510,并且CPU 120的空闲率被使用由该SMI处理程序所存储的值和这两个定时器的周期并作为在SMI处理程序执行506、508之间的间隔上的活动的CPU时间的比值或者百分数而加以计算。
现在参考图6,它说明本发明应用程序利用率顺序的第三实施例。工作和休眠的各种周期被类似地绘制在取样时间间隔600上,它们相当于将CPU时钟信号施加到CPU 120的处理器核心200或者从其除去,并且因此分别相当于C0、C2和更大的ACPI处理器性能状态。在所说明的实施例中,系统管理中断由周期性地执行的利用率小应用程序606、608生成,以便确定每个所需要的定时器或者计数器的值。因此,在利用率小应用程序第一次执行606期间,SMI被生成,使得该关联的SMI处理程序例程从时间戳计数器224和从诸如所展示的电源管理定时器的系统独立的定时器210中读取值。在该取样时间间隔到期之后,小应用程序608和SMI处理程序被再次执行,以便获得用于估计CPU120的利用率所必须的值。
现在参考图7,它说明本发明的方法的一个实施例的高级逻辑流程图。图7描述一种技术,通过该技术,CPU的利用率可以被独立于数据处理系统的操作系统而加以确定。图7所说明的过程以块700开始。之后,读取在此所论述的独立于系统的定时器,诸如电源管理定时器或者WindowsTM的性能计数器。(块702)。接着,取样时间间隔被使用该独立定时器的时钟周期以及当前和以前所读取的独立于系统的定时器值加以定义(块704)。一个值然后被从时间戳计数器中读取(块706),该时间戳计数器对于被施加到中央处理单元120的处理器核心200的CPU时钟信号的每个周期或者″时钟″增量一次。使用以前读取的时间戳计数器值和当前读取的值,在该取样时间间隔期间被施加到CPU处理器核心200的CPU时钟信号的滴答或者周期的总数可以被获得(块708)。之后,在该取样时间间隔期间该CPU时钟信号在CPU的处理器核心200之中曾处于活动的时间的总量或者″量子″可以被使用所累积的CPU时钟周期数和该CPU时钟信号的周期而导出(块710)。然后,CPU利用率可以被表示为这个活动CPU时钟信号时间与该取样时间间隔的比值(块712)。接着,确定该CPU利用率应用和分析是否要被终止(块714)。如果不终止,则该过程就以块702所绘制的入口点开始重复。如果要加以终止,则该过程就被终止(块716)。
尽管在此参考了优选的实施例对本发明进行了描述,但是其中的许多修改和变化对于本领域普通技术人员而言是很容易想到的。因此,所有的这种变化和修改都被包括在由所附的权利要求书所定义的本发明的预期范围之中。
权利要求
1.一种方法,包括测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子;以及利用所述时间量子确定所述中央处理单元在所述取样时间间隔期间的利用率。
2.权利要求1所述的方法,其中测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子包括累积在所述取样时间间隔之内的所述中央处理单元时钟信号被施加到所述处理器核心的所有时间量子。
3.权利要求1所述的方法,其中利用所述时间量子确定所述中央处理单元在所述取样时间间隔期间的利用率包括计算所述时间量子与所述取样时间间隔的比值。
4.权利要求1所述的方法,其中测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子包括确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数;以及利用所述周期总数和所述中央处理单元时钟信号的周期来计算所述时间量子。
5.权利要求4所述的方法,还包括周期性地执行利用率应用,其中所述取样时间间隔包括所述利用率应用第一次执行和所述利用率应用第二次执行之间的时间间隔。
6.权利要求4所述的方法,还包括周期性地执行系统管理中断处理程序,其中所述取样时间间隔包括所述系统管理中断处理程序第一次执行和所述系统管理中断处理程序第二次执行之间的时间间隔。
7.权利要求5所述的方法,其中确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数包括为在所述取样时间间隔期间被施加到所述处理器核心的所述中央处理单元时钟信号的每个周期,将时间戳计数器从初始值增加到最终值;从所述时间戳计数器的所述最终值中减去所述时间戳计数器的所述初始值,以便确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数。
8.权利要求7所述的方法,还包括响应所述利用率应用的所述第一次执行,读取所述时间戳计数器的所述初始值;以及响应所述利用率应用的所述第二次执行,读取所述时间戳计数器的所述最终值。
9.一种具有可由数据处理系统执行的多个指令的数据处理系统可读介质,其中所述指令被执行时,使所述数据处理系统执行如下操作测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子;以及利用所述时间量子来确定所述中央处理单元在所述取样时间间隔期间的利用率。
10.权利要求9所述的数据处理系统可读介质,其中使所述数据处理系统测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子的所述指令使所述数据处理系统执行如下操作累积在所述取样时间间隔之内的所述中央处理单元时钟信号被施加到所述处理器核心的所有时间量子。
11.权利要求9所述的数据处理系统可读介质,其中使所述数据处理系统利用所述时间量子来确定所述中央处理单元在所述取样时间间隔期间的利用率的所述指令使所述数据处理系统执行如下操作计算所述时间量子与所述取样时间间隔的比值。
12.权利要求9所述的数据处理系统可读介质,其中使所述数据处理系统测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子的所述指令使所述数据处理系统执行如下操作确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数;以及利用所述周期总数和所述中央处理单元时钟信号的周期计算所述时间量子。
13.权利要求12所述的数据处理系统可读介质,还包括多个指令,该多个执行被执行时使所述数据处理系统执行如下操作周期性地执行利用率应用,其中所述取样时间间隔包括所述利用率应用的第一次执行和所述利用率应用的第二次执行之间的时间间隔。
14.权利要求12所述的数据处理系统可读介质,还包括多个指令,该多个指令被执行时使所述数据处理系统执行如下操作周期性地执行系统管理中断处理程序,其中所述取样时间间隔包括所述系统管理中断处理程序的第一次执行和所述系统管理中断处理程序的第二次执行之间的时间间隔。
15.权利要求13所述的数据处理系统可读介质,其中使所述数据处理系统确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数的所述指令使所述数据处理系统执行如下操作为在所述取样时间间隔期间被施加到所述处理器核心的所述中央处理单元时钟信号的每个周期,将时间戳计数器从初始值增加到最终值;以及从所述时间戳计数器的所述最终值中减去所述时间戳计数器的所述初始值,以便确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数。
16.权利要求15所述的数据处理系统可读介质,还包括多个指令,该多个指令被执行时使所述数据处理系统执行如下操作响应所述利用率应用的所述第一次执行,读取所述时间戳计数器的所述初始值;以及响应所述利用率应用的所述第二次执行,读取所述时间戳计数器的所述最终值。
17.一种数据处理系统,包括用于处理数据和执行指令的中央处理单元,所述中央处理单元包括处理器核心;用于生成中央处理单元时钟信号和定义取样时间间隔的时钟发生器;用于存储多个指令的存储器,该多个指令被所述中央处理单元执行时使所述数据处理系统执行如下操作测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子;以及利用所述时间量子来确定所述中央处理单元在所述取样时间间隔期间的利用率。
18.权利要求17所述的数据处理系统,其中使所述数据处理系统利用所述时间量子来确定所述中央处理单元在所述取样时间间隔期间的利用率的所述指令使所述数据处理系统执行如下操作计算所述时间量子与所述取样时间间隔的比值。
19.权利要求17所述的数据处理系统,其中使所述数据处理系统测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子的所述指令使所述数据处理系统执行如下操作确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数;以及利用所述周期总数和所述中央处理单元时钟信号的周期计算所述时间量子。
20.权利要求19所述的数据处理系统,还包括时间戳计数器,该时间戳计数器用于为在所述取样时间间隔期间被施加到所述处理器核心的所述中央处理单元时钟信号的每个周期,从初始值增加到最终值,其中使所述数据处理系统确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数的所述指令使所述数据处理系统执行如下操作从所述时间戳计数器的所述最终值中减去所述时间戳计数器的所述初始值,以便确定在所述取样时间间隔期间被施加到所述中央处理单元的所述处理器核心的所述中央处理单元时钟信号的周期总数。
全文摘要
中央处理单元在取样时间间隔期间的利用率通过测量在取样时间间隔之内的中央处理单元时钟信号在中央处理单元的处理器核心之中是活动的时间量子而被确定。被施加到该处理器核心的中央处理单元时钟信号的周期总数和该中央处理单元时钟信号的周期被用来确定时间量子。然后,该利用率可以采用该时间量子与该总时间间隔的比值来加以表示。
文档编号G06F11/34GK1633644SQ01822952
公开日2005年6月29日 申请日期2001年11月13日 优先权日2000年12月29日
发明者B·库珀 申请人:英特尔公司