专利名称:实时监测处理器运算负荷的方法
技术领域:
本发明涉及一种对处理器的监测技术,特别是指一种实时监测处理器运算负荷的方法。
背景技术:
随着处理器处理量的增加,对充分利用处理器现有处理能力的需求也日益迫切,因此需要采用一种有效的实时监测处理器运算负荷的方法,来对处理器的运算负荷进行监测,预防处理器超出负荷极限情况的发生。在这种背景下,目前出现了一些监测处理器运算负荷的方法,这些方法可以比较精确的反映出处理器的运算负荷。
下面介绍两种比较常用的处理器运算负荷控制方法一种方案是通过使用仿真环境对处理器的运算负荷进行监测。在这种方法中,安装了仿真软件的主机需要通过仿真器与处理器相连,由使用者在算法程序的起始位置和结束位置进行标记,当程序执行到这些位置时就会暂时延缓程序的运行,并将处理器时钟当前的计数值通过仿真器传递给主机,主机对计数值进行比较后就可以得到处理器程序执行的最大负荷、最小负荷和平均负荷,这种方法可以比较准确的监测处理器的运行情况。
但这种方案的缺点是对仿真环境具有非常大的依赖性,因此在脱离仿真环境的实际工作条件下,就无法实现对处理器程序运算负荷的监测,使用者只能根据在仿真环境中测试得到的数据推测程序是否超出负荷。同时这种方法需要在运行过程里延缓处理器的程序,将时钟的计数值发送给主机,完成计数值的传送后再重新开始对程序的执行,因此很大程度的影响了对处理器运算负荷监测的实时性和正确性。
另一种方案是采用负荷估计的方法监测处理器运算负荷。这种方法要求使用者预先估计出处理器所要执行的各种算法运算量,当处理器处理的程序中每增加一个算法后,处理器就根据该算法运算量的估计值,对当前的运算总负荷进行累加,并将当前处理器的运算负荷上报给主机,当处理器运算的总负荷已经达到其最大负荷后,主机将不允许处理器继续增加运算,以防止出现超出最大负荷的情况。这种方法不依赖于处理器的仿真环境,可以应用在实际工作环境中。
但这种方法的缺点是处理器负荷的数据依赖使用者的估计,这些估计值取自前期测试的结果,但是这些估计的结果不能精确的代表当前处理器的运算负荷,而只能粗略的表示处理器负荷的大概情况,因此不可避免的引入了比较大的误差。
发明内容
有鉴于此,本发明的主要目的在于提供一种实时监测处理器运算负荷的方法,使之脱离对仿真环境或数据估计的依赖,能实时准确地监测处理器的运算负荷。
本发明进一步的目的是使主机能够及时采取相应措施对处理器的运算负荷进行控制。
根据上述目的,本发明的技术方案具体是这样实现的一种实时监测处理器运算负荷的方法,其特征在于,利用处理器自身的硬件定时器记录处理器每个状态对应的时间信息,该方法至少包括以下步骤a)在处理器启动或上一程序执行结束后,将处理器中的硬件定时器清零并开始计数,在处理器结束等待过程后,读出硬件定时器当前的数值作为处理器的空闲时间保存;b)将该硬件定时器的计数清零并重新开始计数,在当前程序执行结束后,读出硬件定时器的当前数值作为处理器的工作时间保存;
c)用步骤b)所获得的工作时间除以该工作时间与步骤a)所获得的空闲时间之和,得到处理器当前运算负荷占用的百分率,保存该处理器当前运算负荷占用的百分率值供主机读取,然后返回步骤a)。
该方法所述硬件定时器按处理器的主频进行计数。
该方法进一步包括主机定时读取所保存的处理器当前运算负荷占用的百分率进行分析处理。
从上述方案可以看出,本发明方法通过利用处理器自身的硬件定时器实时记录处理器的空闲时间和工作时间,实现了对处理器的运算负荷进行实时监测,既能够准确、实时的监测程序的运算量,预防出现处理器运算负荷超出其处理能力的情况,又可脱离对仿真环境的依赖,从而可以应用在处理器的实际运行环境中。同时这种方法由于用硬件定时器计数所占用的处理器资源非常小,不需要产生中断,完全不影响程序运行的实时性和运算结果的正确性。
图1为本发明实施例的工作流程图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明方案是采用处理器的硬件计数器分别记录下程序执行前的等待时间和程序执行的时间,将程序执行前的等待时间作为处理器的空闲时间,将程序执行时间作为处理器的工作时间,再将处理器的工作时间除以处理器的空闲和工作时间之和,得到处理器运算负荷占用的百分率,将其保存起来以供主机读取。
主机根据所获取的处理器当前状态的时间参数,分析处理器当前的运算负荷情况,进而采取相应措施对处理器的工作量进行控制。
对处理器当前状态的具体的检测过程参见图1所示,包括以下步骤
步骤1预先对处理器的硬件定时器进行初始化,初始化过程主要是对硬件定时器的参数进行配置以使其按照处理器的主频进行计数。
步骤2在处理器启动或上一程序执行完成后,处理器进入等待过程,将硬件定时器计数清零并开始计数,在当前等待过程结束后,读出硬件定时器当前的数值,将其作为处理器的空闲时间存储在处理器内存中。
步骤3处理器开始执行当前程序时,将硬件定时器计数清零并重新开始计数,在当前程序执行结束后,读出硬件定时器的当前数值,将其作为处理器执行该程序的工作时间存储在处理器内存中。
步骤4处理器将工作时间的数值除以工作时间和空闲时间之和,从而得到处理器当前运算负荷占用的百分率,并将结果存储以供主机读取,返回步骤2。
基于上述过程,主机定时通过与处理器的内部接口读取处理器内存中的运算负荷占用的百分率,并对其进行分析处理,如果处理器的运算负荷超出允许的范围,主机为防止处理器超负荷运行将马上采取相应的措施,如报警、重新启动处理器、调整处理器的等待时间、减少处理器所执行的算法等等。这里,主机定时读取的时间间隔可以根据预先对处理器运算量的估计和主机的工作情况来确定。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种实时监测处理器运算负荷的方法,其特征在于,利用处理器自身的硬件定时器记录处理器每个状态对应的时间信息,该方法至少包括以下步骤a)在处理器启动或上一程序执行结束后,将处理器中的硬件定时器清零并开始计数,在处理器结束等待过程后,读出硬件定时器当前的数值作为处理器的空闲时间保存;b)将该硬件定时器的计数清零并重新开始计数,在当前程序执行结束后,读出硬件定时器的当前数值作为处理器的工作时间保存;c)用步骤b)所获得的工作时间除以该工作时间与步骤a)所获得的空闲时间之和,得到处理器当前运算负荷占用的百分率,保存该处理器当前运算负荷占用的百分率值供主机读取,然后返回步骤a)。
2.根据权利要求1所述方法,其特征在于,所述硬件定时器按处理器的主频进行计数。
3.根据权利要求1所述方法,其特征在于,该方法进一步包括主机定时读取所保存的处理器当前运算负荷占用的百分率进行分析处理。
全文摘要
本发明公开了一种实时监测处理器运算负荷的方法,该方法包括以下步骤硬件定时器开始计数,在处理器所要处理的程序的等待过程结束后,读出硬件定时器当前的数值,将当前数值作为处理器的空闲时间保存,将硬件定时器的计数清零;处理器执行当前程序,在当前程序执行结束后读出定时器的当前数值,将其作为处理器的工作时间保存;将工作时间除以工作时间与空闲时间之和,将相除后的结果作为处理器当前运算负荷占用的百分率保存以供主机读取,将计数器的数值清零后返回。该方法能够实时准确地监测处理器的运算负荷,进而可及时采取相应措施对处理器的运算负荷进行控制。
文档编号G06F11/14GK1534482SQ03121390
公开日2004年10月6日 申请日期2003年3月27日 优先权日2003年3月27日
发明者吴波, 张军, 吴 波 申请人:华为技术有限公司