CN101727172A - 一种计算机进程功耗的测量方法及测量装置、计算机系统 - Google Patents
一种计算机进程功耗的测量方法及测量装置、计算机系统 Download PDFInfo
- Publication number
- CN101727172A CN101727172A CN200810224937A CN200810224937A CN101727172A CN 101727172 A CN101727172 A CN 101727172A CN 200810224937 A CN200810224937 A CN 200810224937A CN 200810224937 A CN200810224937 A CN 200810224937A CN 101727172 A CN101727172 A CN 101727172A
- Authority
- CN
- China
- Prior art keywords
- thread
- power consumption
- measured
- cpu
- scheduled
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供了一种计算机进程功耗的测量方法及测量装置、计算机系统。所述方法包括:监视操作系统中的线程调度;判断即将被调度到的线程是否为待测进程的线程,并输出判断结果;在所述判断结果表明所述即将被调度到的线程为所述待测进程的线程、并且所述即将被调度到的线程占用CPU时间片时,采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程的功耗;重复上述步骤,直到得到所述待测进程的所有线程的功耗,并根据所述所有线程的功耗,统计得到所述待测进程的功耗。按照本发明,可以实现对进程的功耗测量,获得了软件运行功耗的基础指标。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种计算机进程功耗的测量方法及测量装置、计算机系统。
背景技术
随着计算机硬件制造工艺水平的提高和计算机架构的改进,计算机的运算速度得到大幅度的提升。然而,随着处理器及相关部件运行频率的增加,尽管采用了低功耗的设计技术,但是硬件的功耗总体上仍在不断增大;另一方面,计算机操作系统也变得越来越复杂,对硬件资源的占用也越多越大,也导致功耗的增加。在能源变得紧张的今天,人们希望利用软、硬件技术,开发出既能满足人们使用计算机需求,同时又节省功耗的绿色计算机(PC)。
在计算机系统中,由于硬件的使用频度以及硬件资源的占用,都是由软件来确定的,因此,软件功耗能够反映出计算机系统真实运行环境中的功耗。软件功耗对于开发者解决降低计算机功耗的具有十分重要的意义,是开发者制定降低计算机功耗的方法和策略的基础。而在现有技术中,计算机功耗的测量对象,几乎都是硬件部件,鲜见对软件功耗的测量。
发明内容
本发明实施例所要解决的技术问题是提供一种计算机进程功耗的测量方法及测量装置、计算机系统,实现了对计算机软件的基本运行单元——进程的功耗测量,获得了软件运行功耗的基础指标。
为解决上述技术问题,本发明实施例提供方案如下:
一种计算机进程功耗的测量方法,包括以下步骤:
监视操作系统中的线程调度;
判断即将被调度到的线程是否为待测进程的线程,并输出判断结果;
在所述判断结果表明所述即将被调度到的线程为所述待测进程的线程、并且所述即将被调度到的线程占用CPU时间片时,采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程的功耗;
重复上述步骤,直到得到所述待测进程的所有线程的功耗,并根据所述所有线程的功耗,统计得到所述待测进程的功耗。
优选地,上述测量方法中,所述当前运行参数包括所述CPU的电流值和电压值,所述采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程功耗包括:多次采集所述CPU的电压值和电流值,并将每次采集的电流值和电压值相乘,得到多个乘积值;对所述多个乘积值求平均值,得到所述即将被调度到的线程的功耗。
优选地,上述测量方法中,所述统计得到所述待测进程的功耗包括:
根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;
根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
优选地,上述测量方法中,所述统计得到所述待测进程的功耗还包括:在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
优选地,上述测量方法中,所述监视操作系统中的线程调度包括:利用放置在所述操作系统中的线程调度监视模块监视所述操作系统的线程调度。
优选地,上述测量方法中,所述线程调度监视模块进一步通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程的信息,并根据所获取的即将被调度到的信息,判断所述即将被调度到的线程是否为待测进程的线程。
本发明实施例还提供了一种计算机进程功耗的测量装置,包括:
采集模块,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
优选地,上述测量装置中,还包括:
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集模块与所述线程调度监视模块之间的通讯接口。
优选地,上述测量装置中,所述采集模块包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
优选地,上述测量装置中,所述功率测量模块包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
优选地,上述测量装置中,所述功率测量模块还包括:
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
优选地,上述测量装置中,所述线程调度监视模块包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
本发明实施例还提供了一种计算机系统,包括:
包括底层硬件,所述底层硬件包括CPU;
运行在所述底层硬件之上的操作系统,其特征在于,还包括:
采集模块,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
优选地,上述计算机系统中,还包括:
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集模块与所述线程调度监视模块之间的通讯接口。
优选地,上述计算机系统中,所述采集模块包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
优选地,上述计算机系统中,所述功率测量模块包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
优选地,上述计算机系统中,所述功率测量模块还包括:
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
优选地,上述计算机系统中,所述线程调度监视模块包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程的信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
优选地,上述计算机系统中,所述操作系统包括一用于调度线程的线程调度处理模块,所述线程调度监视模块设置在所述线程调度处理模块中。
从以上所述可以看出,本发明实施例提供的一种计算机进程功耗的测量方法及测量装置、计算机系统,实现了对计算机软件的基本运行单元——进程的功耗测量,获得了软件运行功耗的基础指标,为制定降低计算机功耗的方法和策略奠定了基础,便于人们在用户的应用系统中,找到降低功耗的关键环节。并且,本发明实施例所述测量方法及测量装置,是直接测量用户真实运行环境中的进程功耗,比任何仿真或特意搭建的测试环境,更具备真实性,更能反映出操作系统的软件的真实功耗。
附图说明
图1为本发明实施例所述计算机进程功耗的测量方法的流程图;
图2为本发明实施例所述计算机进程功耗的测量装置的示意图;
图3为本发明实施例所述测量方法的应用举例示意图。
具体实施方式
在计算机操作系统中,软件的基本运行单元是进程。现代个人计算机上的操作系统是基于优先级的抢先式多处理器调度系统。调度系统总是运行优先级最高的(Ready)线程。在一个处理器(CPU)核心上同时只能有一个线程得到调度获得CPU时间片,即获得CPU的控制权,从而得到执行本线程。操作系统中的一个进程是由若干线程的组成的,一个进程的功耗等于该进程的每个线程耗电量的累加。本发明实施例的主要思想在于,利用进程调度的特点,以线程为单位进行功耗测量,在得到进程的所有线程的功耗后,再统计得到该进程的功耗。以下结合附图通过具体实施例作进一步说明。
请参见图1,为本发明实施例所述计算机进程功耗的测量方法的流程图,包括以下步骤:
步骤11,监视操作系统中的线程调度。
这里,可以通过Detour的方法,插入一个线程调度监视模块到操作系统线程调度处理程序中,用以监视操作系统中的线程调度。具体的,线程调度监视模块在其占用CPU时间片(即获得CPU的控制权)的时候,可以通过查询CPU内部寄存器获取线程调度信息,例如,目的变址寄存器(EDI,Destinationindex register)中保存的是下一个即将被调度到的线程的信息,而源变址寄存器(ESI,Source index register)寄存器中保存的是当前要调度出的线程。因此,通过线程调度监视模块查询相关寄存器,可以很容易监控到线程调度切换事件,并且,根据操作系统的线程数据结构,很容易分析出线程信息及其所属的进程。
步骤12,判断即将被调度到的线程(这里清晰起见,这里称呼该线程为第一线程)是否为待测进程的线程,并输出判断结果。
这里,线程调度监视模块在其占用CPU时间片(即获得CPU的控制权)的时候,可以根据线程数据结构,分析出第一线程所属的进程,从而能够判断该第一线程是否为待测进程的一个线程。
步骤13,在所述第一线程占用CPU时间片、并且所述判断结果表明所述第一线程为所述待测进程的线程时,采集所述CPU的当前运行参数,并利用所述参数计算得到所述第一线程的功耗。
这里,由于线程调度监视模块在其占用CPU时间片(即获得CPU的控制权)的时候,判断出即将被调度到的第一线程为待测进程的线程,因此,在线程调度监视模块被剥夺CPU时间片(即交出CPU控制权)的同时,通过与底层传感器子模块连接的驱动接口模块,启动传感器子模块采集CPU的运行参数,例如,CPU当前的电压值和电流值。在线程调度监视模块交出CPU控制权的同时,第一线程开始占用CPU的时间片,因此,此时传感器子模块是针对第一线程进行功耗测量。在线程调度监视模块重新获得CPU的控制权时(这时第一线程被剥夺占用CPU时间片),线程调度监视模块通过驱动接口模块,来读取计算子模块根据所述传感器子模块采集到的电压值和电流值计算得到的第一线程的功耗。
这里,由传感器子模块完成对CPU电功率参数的感知和测量,例如,测量CPU的电压以及电流值,可以使用电压传感器和电流传感器芯片,其中电流的测量通常可以采用霍尔感应器件,或者将电流转换成电压,再由电压传感器芯片完成测量。具体的,在所述第一线程占用CPU时间片期间,可以多次采集CPU的电压值和电流值(例如,每1ms一次),并将每次采集的电流值和电压值相乘,得到多个乘积值;再对所述多个乘积值求平均值,得到所述第一线程的功耗;最后,将计算得到的功耗转换为系统管理总线(SMBus,SystemManagement Bus)信号,并等待线程调度监视模块通过驱动接口模块读取。
这里,所述运行参数还可以是CPU的电流值和电阻值,通过采集CPU的电流值和电阻值,并根据采集到的电流值和电阻值,按照功率计算公式,同样也可以计算得到所述第一线程的功耗。
步骤14,重复上述步骤11~13,直到得到所述待测进程的所有线程的功耗,并根据所述所有线程的功耗,统计得到所述待测进程的功耗。
这里,在按照步骤11~13得到待测进程的所有线程的功耗后,就可以计算待测进程的功耗,具体的计算方式有多种,例如,对所有线程的功耗直接求平均值,将得到的结果作为待测进程的平均功耗。这种计算方法在各线程所占用的CPU时间片都相等的时候比较准确。
当然,还可以根据每个线程所占用的CPU时间片在待测进程的所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;进而根据每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,从而得到所述待测进程的在单位时间内的平均功耗。按照这种计算方法得到的计算结果更为准确。
这里,还可以从待测进程的所有线程的功耗中,确定其中功耗最小的功耗和功耗最大的功耗,分别作为待测进程的瞬时的最小功耗和最大功耗。
本发明实施例还提供了一种计算机进程功耗的测量装置,如图2所示,该装置包括:
采集模块,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集模块与所述线程调度监视模块之间的通讯接口;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
这里,所述采集具体包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
所述功率测量模块具体可以包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗;
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
这里,所述线程调度监视模块具体可以包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
通过上述进程的测量方法及测量装置,本发明实施例实现了对计算机软件的基本运行单元——进程的功耗测量,获得了软件运行功耗的基础指标,为制定降低计算机功耗的方法和策略奠定了基础,便于人们在用户的应用系统中,找到降低功耗的关键环节。本实施例所述测量方法及测量装置,是直接测量用户真实运行环境中的进程功耗,比任何仿真或特意搭建的测试环境,更具备真实性,更能反映出操作系统的软件的真实功耗。
本发明实施例还提供了一种计算机系统,该计算机系统包括:
包括底层硬件,所述底层硬件包括CPU;
运行在所述底层硬件之上的操作系统;
采集模块,与所述CPU连接,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集与所述线程调度监视模块之间的通讯接口;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
这里,所述操作系统包括一用于调度线程的线程调度处理模块,所述线程调度监视模块设置在所述线程调度处理模块中。
所述采集模块具体包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
所述功率测量模块具体可以包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗;
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
这里,所述线程调度监视模块具体可以包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程的信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
最后,以现有X86架构的ATX电源的计算机,以及运行视窗(Windows)操作系统为例,说明本发明实施例实现的具体方法和步骤,但本发明实施例并不限于这种硬件架构和操作系统类型。
如图3所示,传感器IC连接到ATX4针的+12V引脚处,作为驱动接口模块的嵌入式控制器(Embedded Controller)连接在传感器IC和芯片组之间。在现有X86架构的ATX电源的计算机上,要测量CPU的功率,不必也不能直接在处理器的针脚处测量(因为有多个电源引脚分散在CPU芯片不同位置),而只要通过测量ATX4针的+12V引脚处的电压值和电流值,再通过电流和电压计算其功率就行了。
ATX4的电源的电压和电流被采集后,进入传感器集成芯片(IC),传感器IC对电平信号进行整流、滤波等处理,并计算得到CPU的功耗,并将功耗便换成SMBUS总线信号,通过传感器IC与嵌入式控制器(EmbeddedController)之间的SMBus总线(对笔记本电脑),传递到嵌入式控制器,最后,由嵌入式控制器通过短管脚计数总线(LPC,Low Pin Count)传递到计算机的芯片组上。对于台式机,则可以由SUPER I/O代替嵌入式控制器。其中,驱动程序的设计可以按照SMBus硬件设备驱动程序设计去实现。
对于线程调度的监视,可以利用“Detour”方法,插入线程调度监视模块到Windows操作系统的SwapContext核心处理函数中。这个函数负责执行线程间的上下文(context)切换。
具体的测量流程包括:
步骤41,线程调度监视模块在获得CPU控制权后,监视操作系统的进程调度,这里假设线程调度监视模块通过查询EDI寄存器发现下一个即将调度到的线程(假设为线程T)是待测进程的一个线程;
步骤42,线程调度监视模块交出CPU控制权的同时,通知传感器IC开始进行功耗度量,并在重新获得CPU控制权后,读取传感器IC计算得到的功耗数值;
步骤43,功率测量模块每秒钟对待测进程相关的所有线程功耗进行统计,将统计结果存储功到线程信息记录中,并实时显示给用户。
综上所述,本发明实施例所提供的计算机进程功耗的测量方法及测量装置、计算机系统,实现了对计算机软件的基本运行单元——进程的功耗测量,获得了软件运行功耗的基础指标,为降低计算机系统功耗提供了技术支持。
以上所述仅是本发明的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (19)
1.一种计算机进程功耗的测量方法,其特征在于,包括以下步骤:
监视操作系统中的线程调度;
判断即将被调度到的线程是否为待测进程的线程,并输出判断结果;
在所述判断结果表明所述即将被调度到的线程为所述待测进程的线程、并且所述即将被调度到的线程占用CPU时间片时,采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程的功耗;
重复上述步骤,直到得到所述待测进程的所有线程的功耗,并根据所述所有线程的功耗,统计得到所述待测进程的功耗。
2.如权利要求1所述的测量方法,其特征在于,所述当前运行参数包括所述CPU的电流值和电压值,所述采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程功耗包括:多次采集所述CPU的电压值和电流值,并将每次采集的电流值和电压值相乘,得到多个乘积值;对所述多个乘积值求平均值,得到所述即将被调度到的线程的功耗。
3.如权利要求1所述的测量方法,其特征在于,所述统计得到所述待测进程的功耗包括:
根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;
根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
4.如权利要求3所述的测量方法,其特征在于,所述统计得到所述待测进程的功耗还包括:在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
5.如权利要求1所述的测量方法,其特征在于,所述监视操作系统中的线程调度包括:利用放置在所述操作系统中的线程调度监视模块监视所述操作系统的线程调度。
6.如权利要求5所述的测量方法,其特征在于,所述线程调度监视模块进一步通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程的信息,并根据所获取的即将被调度到的信息,判断所述即将被调度到的线程是否为待测进程的线程。
7.一种计算机进程功耗的测量装置,其特征在于,包括:
采集模块,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
8.如权利要求7所述的测量装置,其特征在于,还包括:
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集模块与所述线程调度监视模块之间的通讯接口。
9.如权利要求7所述的测量装置,其特征在于,所述采集模块包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
10.如权利要求7所述的测量装置,其特征在于,所述功率测量模块包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
11.如权利要求7所述的测量装置,其特征在于,所述功率测量模块还包括:
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
12.如权利要求9所述的测量装置,其特征在于,所述线程调度监视模块包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
13.一种计算机系统,其特征在于,包括:
包括底层硬件,所述底层硬件包括CPU;
运行在所述底层硬件之上的操作系统,其特征在于,还包括:
采集模块,用于采集CPU的当前运行参数,并利用所述参数计算得到CPU的功耗;
线程调度监视模块,用于监视操作系统中的线程调度,并判断即将被调度到的线程是否为待测进程的线程:如果是,则在所述即将被调度到的线程占用CPU时间片时,获取所述CPU的功耗作为所述即将被调度到的线程的功耗;
功率测量模块,与所述线程调度监视模块连接,用于获取所述即将被调度到的线程的功耗,并判断所述待测进程的所有线程的功耗是否都已得到,如果是,则根据所述所有线程的功耗,统计得到所述待测进程的功耗。
14.如权利要求13所述的计算机系统,其特征在于,还包括:
驱动接口模块,分别与所述采集模块和线程调度监视模块连接,用于提供所述采集模块与所述线程调度监视模块之间的通讯接口。
15.如权利要求13所述的计算机系统,其特征在于,所述采集模块包括:
传感器子模块,用于多次采集所述CPU的电压值和电流值;
计算子模块,用于将所述传感器子模块每次采集到的电压值和电流值相乘,得到多个乘积值,并对所述多个乘积值求平均值,得到所述CPU的功耗。
16.如权利要求13所述的计算机系统,其特征在于,所述功率测量模块包括:
获取子模块,用于获取所述即将被调度到的线程的功耗;
平均功耗子模块,用于根据所述待测进程中每个线程所占用的CPU时间片在所述所有线程所占用的CPU时间片中的比例,确定每个线程的功耗的权值;并根据所述每个线程的功耗的权值,对所述待测进程的每个线程的功耗进行加权并求和,得到所述待测进程的在单位时间内的平均功耗。
17.如权利要求13所述的计算机系统,其特征在于,所述功率测量模块还包括:
极值功耗子模块,用于在所述待测进程的所有线程的功耗中,确定其中功耗最小的第一功耗和功耗最大的第二功耗,分别作为所述待测进程的最小功耗和最大功耗。
18.如权利要求15所述的计算机系统,其特征在于,所述线程调度监视模块包括:
监视子模块,用于在所述线程调度监视模块占用CPU时间片后,通过查询所述CPU的目的变址寄存器EDI,获取即将被调度到的线程的信息,并根据所获取的即将被调度到的线程的信息,判断所述即将被调度到的线程是否为待测进程的线程,并输出判断结果;
测量控制子模块,用于在所述判断结果表明所述即将被调度到的线程为待测进程的线程、并且所述线程调度监视模块被剥夺CPU时间片的同时,启动所述传感器子模块采集所述CPU的电压值和电流值;以及在所述线程调度监视模块重新占用CPU时间片时,通过所述驱动接口模块,获取所述计算子模块计算得到的CPU的功耗作为所述即将被调度到的线程的功耗。
19.如权利要求13所述的计算机系统,其特征在于,所述操作系统包括一用于调度线程的线程调度处理模块,所述线程调度监视模块设置在所述线程调度处理模块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249371A CN101727172B (zh) | 2008-10-27 | 2008-10-27 | 一种计算机进程功耗的测量方法及测量装置、计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249371A CN101727172B (zh) | 2008-10-27 | 2008-10-27 | 一种计算机进程功耗的测量方法及测量装置、计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101727172A true CN101727172A (zh) | 2010-06-09 |
CN101727172B CN101727172B (zh) | 2012-12-19 |
Family
ID=42448154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102249371A Active CN101727172B (zh) | 2008-10-27 | 2008-10-27 | 一种计算机进程功耗的测量方法及测量装置、计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101727172B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306118A (zh) * | 2011-08-31 | 2012-01-04 | 中兴通讯股份有限公司 | Android终端应用程序功耗监控的方法和装置 |
CN103245829A (zh) * | 2013-05-24 | 2013-08-14 | 中国科学院计算技术研究所 | 一种虚拟机功耗测量方法 |
CN103777933A (zh) * | 2012-10-23 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 显示进程信息的方法及装置 |
CN105159755A (zh) * | 2015-10-12 | 2015-12-16 | 无锡还有网络科技有限公司 | 多处理器的仿真处理系统 |
CN105446877A (zh) * | 2015-11-04 | 2016-03-30 | 上海聚力传媒技术有限公司 | 一种测试移动应用程序功耗的方法和装置 |
CN106155862A (zh) * | 2016-07-25 | 2016-11-23 | 张升泽 | 电子芯片内的电流计算方法及系统 |
CN106155815A (zh) * | 2016-07-21 | 2016-11-23 | 张升泽 | 电流在多个内核中的分配方法及系统 |
CN106227639A (zh) * | 2016-07-25 | 2016-12-14 | 张升泽 | 多核芯片电压计算方法及系统 |
CN106294063A (zh) * | 2016-07-26 | 2017-01-04 | 张升泽 | 基于芯片的温度控制方法及系统 |
WO2018018373A1 (zh) * | 2016-07-25 | 2018-02-01 | 张升泽 | 多个内核芯片的功率计算方法及系统 |
WO2018018425A1 (zh) * | 2016-07-26 | 2018-02-01 | 张升泽 | 多内核芯片线程分配方法及系统 |
CN108509021A (zh) * | 2011-11-21 | 2018-09-07 | 英特尔公司 | 用于性能改善的可重配置图形处理器 |
CN109412884A (zh) * | 2018-08-21 | 2019-03-01 | 平安科技(深圳)有限公司 | 组件的性能数据采集方法、装置及存储介质、服务器 |
CN110008071A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种远程调试装置及方法 |
CN112596601A (zh) * | 2020-12-30 | 2021-04-02 | 海光信息技术股份有限公司 | 使计算设备产生定量功耗的方法及装置 |
CN112988498A (zh) * | 2019-12-16 | 2021-06-18 | 深圳市万普拉斯科技有限公司 | 基于功耗的异常检测方法、装置、计算机设备和存储介质 |
CN114327019A (zh) * | 2021-12-29 | 2022-04-12 | 成都中科慧源科技有限公司 | 一种设备能耗检测装置、方法、系统、设备及存储介质 |
CN114691375A (zh) * | 2022-06-02 | 2022-07-01 | 青岛展诚科技有限公司 | 基于并行算法的集成电路电阻抽取方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100527047C (zh) * | 2004-12-14 | 2009-08-12 | 松下电器产业株式会社 | 电子装置及其相关峰值功率控制方法 |
TWI326428B (en) * | 2005-03-18 | 2010-06-21 | Marvell World Trade Ltd | Real-time control apparatus having a multi-thread processor |
CN101067758B (zh) * | 2007-06-14 | 2010-05-19 | 华南理工大学 | 一种嵌入式系统的能耗管理方法 |
-
2008
- 2008-10-27 CN CN2008102249371A patent/CN101727172B/zh active Active
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9778721B2 (en) | 2011-08-31 | 2017-10-03 | Xi'an Zhongxing New Software Co. Ltd. | Method and device for monitoring power consumption of application in android terminal |
CN102306118A (zh) * | 2011-08-31 | 2012-01-04 | 中兴通讯股份有限公司 | Android终端应用程序功耗监控的方法和装置 |
CN108509021A (zh) * | 2011-11-21 | 2018-09-07 | 英特尔公司 | 用于性能改善的可重配置图形处理器 |
CN103777933A (zh) * | 2012-10-23 | 2014-05-07 | 腾讯科技(深圳)有限公司 | 显示进程信息的方法及装置 |
CN103777933B (zh) * | 2012-10-23 | 2016-07-27 | 腾讯科技(深圳)有限公司 | 显示进程信息的方法及装置 |
CN103245829A (zh) * | 2013-05-24 | 2013-08-14 | 中国科学院计算技术研究所 | 一种虚拟机功耗测量方法 |
CN103245829B (zh) * | 2013-05-24 | 2015-11-18 | 中国科学院计算技术研究所 | 一种虚拟机功耗测量方法 |
CN105159755A (zh) * | 2015-10-12 | 2015-12-16 | 无锡还有网络科技有限公司 | 多处理器的仿真处理系统 |
CN105446877A (zh) * | 2015-11-04 | 2016-03-30 | 上海聚力传媒技术有限公司 | 一种测试移动应用程序功耗的方法和装置 |
CN106155815A (zh) * | 2016-07-21 | 2016-11-23 | 张升泽 | 电流在多个内核中的分配方法及系统 |
WO2018018373A1 (zh) * | 2016-07-25 | 2018-02-01 | 张升泽 | 多个内核芯片的功率计算方法及系统 |
CN106227639A (zh) * | 2016-07-25 | 2016-12-14 | 张升泽 | 多核芯片电压计算方法及系统 |
CN106155862A (zh) * | 2016-07-25 | 2016-11-23 | 张升泽 | 电子芯片内的电流计算方法及系统 |
WO2018018425A1 (zh) * | 2016-07-26 | 2018-02-01 | 张升泽 | 多内核芯片线程分配方法及系统 |
CN106294063A (zh) * | 2016-07-26 | 2017-01-04 | 张升泽 | 基于芯片的温度控制方法及系统 |
CN109412884A (zh) * | 2018-08-21 | 2019-03-01 | 平安科技(深圳)有限公司 | 组件的性能数据采集方法、装置及存储介质、服务器 |
CN110008071A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种远程调试装置及方法 |
CN112988498B (zh) * | 2019-12-16 | 2022-12-13 | 深圳市万普拉斯科技有限公司 | 基于功耗的异常检测方法、装置、计算机设备和存储介质 |
CN112988498A (zh) * | 2019-12-16 | 2021-06-18 | 深圳市万普拉斯科技有限公司 | 基于功耗的异常检测方法、装置、计算机设备和存储介质 |
CN112596601A (zh) * | 2020-12-30 | 2021-04-02 | 海光信息技术股份有限公司 | 使计算设备产生定量功耗的方法及装置 |
CN112596601B (zh) * | 2020-12-30 | 2023-03-14 | 海光信息技术股份有限公司 | 使计算设备产生定量功耗的方法及装置 |
CN114327019A (zh) * | 2021-12-29 | 2022-04-12 | 成都中科慧源科技有限公司 | 一种设备能耗检测装置、方法、系统、设备及存储介质 |
CN114327019B (zh) * | 2021-12-29 | 2023-10-24 | 成都中科慧源科技有限公司 | 一种设备能耗检测装置、方法、系统、设备及存储介质 |
CN114691375A (zh) * | 2022-06-02 | 2022-07-01 | 青岛展诚科技有限公司 | 基于并行算法的集成电路电阻抽取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101727172B (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101727172B (zh) | 一种计算机进程功耗的测量方法及测量装置、计算机系统 | |
US8555283B2 (en) | Temperature-aware and energy-aware scheduling in a computer system | |
Snowdon et al. | Accurate on-line prediction of processor and memoryenergy usage under voltage scaling | |
Wu et al. | A dynamic compilation framework for controlling microprocessor energy and performance | |
EP2658231B1 (en) | Energy-saving device and method for portable terminal | |
US7770034B2 (en) | Performance monitoring based dynamic voltage and frequency scaling | |
CN1303497C (zh) | 多模式功率节制机制 | |
Tan et al. | EMSIM: An energy simulation framework for an embedded operating system | |
CN201886034U (zh) | 流速流量测算仪表 | |
US20110022876A1 (en) | Computer system and operating method thereof | |
WO2007062897A3 (en) | Apparatus and method for measuring and reporting processor capacity and processor usage in a computer system with processors of different speed and/or architecture | |
US8161493B2 (en) | Weighted-region cycle accounting for multi-threaded processor cores | |
CN105357401A (zh) | 一种多核移动终端的省电方法及装置 | |
US8762744B2 (en) | Energy management system configured to generate energy management information indicative of an energy state of processing elements | |
CN101924512A (zh) | 船用同步发电机励磁控制装置 | |
CN109408399A (zh) | 一种算力估计方法、装置、设备和存储介质 | |
CN103298087B (zh) | 基于状态机的无线传感器网络节点低功耗方法 | |
Sundriyal et al. | Modeling of the CPU frequency to minimize energy consumption in parallel applications | |
Goel et al. | Techniques to measure, model, and manage power | |
US20210215763A1 (en) | Method for improving accuracy of capacity measurement | |
US9032129B2 (en) | Advanced energy profiler | |
CN201594099U (zh) | 多功能电能计量表 | |
Köhler et al. | Pinpoint the joules: Unifying runtime-support for energy measurements on heterogeneous systems | |
CN201508207U (zh) | 用于热电厂节能调度系统的数据采集终端 | |
CN109407039B (zh) | 智能电表及其系统、自诊断方法和故障检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |