一种计算机进程功耗的测量方法及测量装置、计算机系统的制作方法

文档序号:6471007阅读:166来源:国知局
专利名称:一种计算机进程功耗的测量方法及测量装置、计算机系统的制作方法
技术领域
本发明涉及计算机技术领域,具体涉及一种计算机进程功耗的测量方法及测量装
置、计算机系统。
背景技术
随着计算机硬件制造工艺水平的提高和计算机架构的改进,计算机的运算速度得 到大幅度的提升。然而,随着处理器及相关部件运行频率的增加,尽管采用了低功耗的设 计技术,但是硬件的功耗总体上仍在不断增大;另一方面,计算机操作系统也变得越来越 复杂,对硬件资源的占用也越多越大,也导致功耗的增加。在能源变得紧张的今天,人们希 望利用软、硬件技术,开发出既能满足人们使用计算机需求,同时又节省功耗的绿色计算机 (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 的控制权,从而得到执行本线程。操作系统中的一个进程是由若干线程的组成的,一个进程 的功耗等于该进程的每个线程耗电量的累加。本发明实施例的主要思想在于,利用进程调 度的特点,以线程为单位进行功耗测量,在得到进程的所有线程的功耗后,再统计得到该进 程的功耗。以下结合附图通过具体实施例作进一步说明。 请参见图l,为本发明实施例所述计算机进程功耗的测量方法的流程图,包括以下 步骤 步骤ll,监视操作系统中的线程调度。 这里,可以通过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 1/0代替嵌入式控制器。其中,驱动程序的设计可以按照SMBus硬件设备驱动程序设计去实现。 对于线程调度的监视,可以利用"Detour"方法,插入线程调度监视模块到Windows操作系统的Sw即Context核心处理函数中。这个函数负责执行线程间的上下文(context)切换。
具体的测量流程包括 步骤41,线程调度监视模块在获得CPU控制权后,监视操作系统的进程调度,这里假设线程调度监视模块通过查询EDI寄存器发现下一个即将调度到的线程(假设为线程T)是待测进程的一个线程; 步骤42,线程调度监视模块交出CPU控制权的同时,通知传感器IC开始进行功耗
度量,并在重新获得CPU控制权后,读取传感器IC计算得到的功耗数值; 步骤43,功率测量模块每秒钟对待测进程相关的所有线程功耗进行统计,将统计
结果存储功到线程信息记录中,并实时显示给用户。 综上所述,本发明实施例所提供的计算机进程功耗的测量方法及测量装置、计算机系统,实现了对计算机软件的基本运行单元——进程的功耗测量,获得了软件运行功耗的基础指标,为降低计算机系统功耗提供了技术支持。 以上所述仅是本发明的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
一种计算机进程功耗的测量方法,其特征在于,包括以下步骤监视操作系统中的线程调度;判断即将被调度到的线程是否为待测进程的线程,并输出判断结果;在所述判断结果表明所述即将被调度到的线程为所述待测进程的线程、并且所述即将被调度到的线程占用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所述的计算机系统,其特征在于,所述操作系统包括一用于调度线 程的线程调度处理模块,所述线程调度监视模块设置在所述线程调度处理模块中。
全文摘要
本发明提供了一种计算机进程功耗的测量方法及测量装置、计算机系统。所述方法包括监视操作系统中的线程调度;判断即将被调度到的线程是否为待测进程的线程,并输出判断结果;在所述判断结果表明所述即将被调度到的线程为所述待测进程的线程、并且所述即将被调度到的线程占用CPU时间片时,采集所述CPU的当前运行参数,并利用所述参数计算得到所述即将被调度到的线程的功耗;重复上述步骤,直到得到所述待测进程的所有线程的功耗,并根据所述所有线程的功耗,统计得到所述待测进程的功耗。按照本发明,可以实现对进程的功耗测量,获得了软件运行功耗的基础指标。
文档编号G06F1/32GK101727172SQ20081022493
公开日2010年6月9日 申请日期2008年10月27日 优先权日2008年10月27日
发明者宋春雨, 李志刚, 王凯 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1