一种CPU占用率的统计方法及装置与流程

文档序号:11199110阅读:1072来源:国知局
一种CPU占用率的统计方法及装置与流程
本发明涉及计算机技术,特别涉及一种cpu占用率的统计方法及装置。
背景技术
:多核处理器技术是cpu设计中的一项先进技术。它是指在一枚处理器芯片中集成至少两个完整的计算引擎(又称内核、硬核)核集成在一块芯片上,以增强计算性能。计算机通过在多个cpu硬核之间分配工作负荷,并且依靠与内存和输入输出(i/o)的高速片互联和高带宽管道。对系统性能进行提升。多核处理器,较之当前的单核处理器,能带来更多的性能和生产力优势,因而最终将成为一种广泛普及的计算模式。在采用多核处理器的操作系统中,为了在多个cpu硬核之间实现性能均衡,需要实时地掌握各个cpu硬核的cpu占用率。以linux系统为例。在linux系统中,可以用/proc/stat文件来计算各个cpu硬核的cpu占用率。这个文件包含了所有cpu硬核活动的信息,该文件中记录有时间元素信息,时间元素信息中涉及的每一种时间参数的取值都是从系统启动开始累计到当前时刻。具体的,上述文件中记录的时间元素信息如表1所示:表1usernicesystemidleiowaitirqsoftirqstealstealstealcpu1406030181785886783047000cpu0630138743710019000cpu1408474508311000cpu21701474555800000…………………………………………………………如表1所示,cpu、cpu0、cpu1、cpu2分别表示各个cpu硬核(以下均 简称硬核)的cpu占用率的平均值,以及硬核0、硬核1和硬核2的cpu占用率,其中,以cpu这一行为例,介绍时间元素信息中每一种时间参数的含义如下:user(如,1406):从系统启动开始累计到当前时刻,用户态的cpu时间(单位:jiffies)。1jiffies=0.01秒;nice(如,0):从系统启动开始累计到当前时刻,系统调整进程优先级所花费的cpu时间(单位:jiffies);system(如,3018):从系统启动开始累计到当前时刻,内核运行时间(单位:jiffies);idle(如,1785886);从系统启动开始累计到当前时刻,除硬盘io等待时间以外其它等待时间(单位:jiffies);iowait(如,78):从系统启动开始累计到当前时刻,硬盘io等待时间(单位:jiffies);irq(如,30):从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies);softirq(如,47):从系统启动开始累计到当前时刻,软中断时间(单位:jiffies);steal(如,0):从系统启动开始累计到当前时刻,丢失时间(单位:jiffies)。基于上述信息,可以采用以下方法计算操作系统中任意一个硬核的cpu占用率:以硬核0为例,先选取两个采样点,分别称为采样点1和采样点2,每一个采样点均对应记录有如表1所示的cpu0这一行的时间元素信息,然后计算两个采样点的时间元素信息的差值,基于以下公式计算出硬核0的cpu占用,公式如下:user差=user2–user1;system差=system2–system1;nice差=nice2–nice1;idle差=idle2–idle1;iowait差=iowait2–iowait1;irq差=irq2–irq1;softirq差=softirq2–softirq1;steal差=steal2–steal1;cputotal=user差+system差+nice差+idle差+iowait差+irq差+softirq差+steal差cpu占用率计算公式:cpuoccupany=100–((idle差+iowait差)*100)/cputotal由于时间元素信息中的每一种参数均是从系统启动时刻起记录到当前时刻,因此,需要选取两个采样点计算差值,才能计算出这两个采样点之间这一段采样时段中硬核0的cpu占用率。然而,现有技术下,采用上述方法只能计算出各个硬核在每一个采样时段的cpu占用率,无法精确计算出进程的cpu占用率。在操作系统中,进程是一个具有一定独立功能的程序,是关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程是一个实体,每一个进程都有专属的地址空间,一般情况下,包括文本区域、数据区域和堆栈。当系统运行慢时或者出异常时,只能根据各个硬核的cpu占用率粗略计算估计进程的cpu占用率情况,因此不能对cpu负荷高的进程进行有效监测,从而降低了多核处理器的性能。技术实现要素:本发明实施例提供一种cpu占用率的统计方法及装置,用以解决现有技术中存在因无法统计进程的cpu占用率而导致多核处理器性降低的问题。本发明实施例提供的具体技术方案如下:一种cpu占用率的统计方法,包括:确定目标进程,以及根据预设的进程和硬核之间的关联关系,确定所述目标进程对应的至少两个硬核,其中,所述至少两个硬核用于处理目标进程包含的各个线程;确定指定的目标采样时段,分别计算所述至少两个硬核中的每一个硬核在所述目标采样时段中对应的硬核cpu占用率;按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个硬核cpu占用率作为所述目标进程在所述目标采样时段内的软核cpu占用率。可选的,进一步包括:在所述目标进程初始化的过程中,针对所述目标进程分配相应的共享内存子区域;为所述目标进程分配至少两个硬核;将所述目标进程的id以及所述至少两个硬核的id之间的关联关系,记录在所述目标进程分配到的共享内存子区域中。可选的,确定指定的目标采样时段,分别计算所述至少两个硬核中的每一个硬核在所述目标采样时段中对应的硬核cpu占用率,包括:预先计算系统中的每一个硬核在每一个采样时段对应的硬核cpu占用率,待确定目标进程以及目标采样时段后,再提取出目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率;或者,确定目标进程以及目标采样时段后,实时计算目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率。可选的,计算所述目标进程对应的任意一个硬核在所述目标采样时段内的硬核cpu占用率时,包括:确定所述目标采样时段两端的第一采样点和第二采样点;获取对应所述任意一硬核在第一采样点记录的第一时间元素信息,以及获取对应所述任意一硬核在第二采样点记录的第二时间元素信息;基于所述第一时间元素信息和第二时间元素信息中记录的每一种时间参数之间的差值,计算所述任意一硬核在所述目标采样时段内的硬核cpu占用率。可选的,按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个硬核cpu占用率作为所述目标进程在所述目标采样时段内的软核cpu占用率,包括:将获得的所有硬核cpu占用率按照取值从大到小的顺序排列,并从前n1个硬核cpu占用率中选取一个硬核cpu占用率,作为所述目标进程在所述目标采样时段内的软核cpu占用率;或者,将获得的所有硬核cpu占用率按照取值从小到大的顺序排列,并从前n2个硬核cpu占用率中选取一个硬核cpu占用率,作为所述目标进程在所述目标采样时段内的软核cpu占用率;或者,针对获得的所有硬核cpu占用率计算平均值,并将所述平均值作为所述目标进程在所述目标采样时段内的软核cpu占用率。可选的,进一步包括:在一个预设的统计周期内,分别获得所述目标进程在所述统计周期中的每一个采样时段内对应的软核cpu占用率,基于获得的各个软核cpu占用率,计算所述目标进程在所述统计周期内的软核cpu占用率最大值,或者,软核cpu占用率最小值,或者,软核cpu占用率平均值。一种cpu占用率的统计装置,包括:确定单元,用于确定目标进程,以及根据预设的进程和硬核之间的关联关系,确定所述目标进程对应的至少两个硬核,其中,所述至少两个硬核用于处理目标进程包含的各个线程;计算单元,用于确定指定的目标采样时段,分别计算所述至少两个硬核中的每一个硬核在所述目标采样时段中对应的硬核cpu占用率;处理单元,用于按照预设筛选规则在获得的所有硬核cpu占用率中,选 取一个硬核cpu占用率作为所述目标进程在所述目标采样时段内的软核cpu占用率。可选的,所述处理单元进一步用于:在所述目标进程初始化的过程中,针对所述目标进程分配相应的共享内存子区域;为所述目标进程分配至少两个硬核;将所述目标进程的id以及所述至少两个硬核的id之间的关联关系,记录在所述目标进程分配到的共享内存子区域中。可选的,确定指定的目标采样时段,分别计算所述至少两个硬核中的每一个硬核在所述目标采样时段中对应的硬核cpu占用率时,所述计算单元用于:预先计算系统中的每一个硬核在每一个采样时段对应的硬核cpu占用率,待确定目标进程以及目标采样时段后,再提取出目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率;或者,确定目标进程以及目标采样时段后,实时计算目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率。可选的,计算所述目标进程对应的任意一个硬核在所述目标采样时段内的硬核cpu占用率时,所述计算单元用于:确定所述目标采样时段两端的第一采样点和第二采样点;获取对应所述任意一硬核在第一采样点记录的第一时间元素信息,以及获取对应所述任意一硬核在第二采样点记录的第二时间元素信息;基于所述第一时间元素信息和第二时间元素信息中记录的每一种时间参数之间的差值,计算所述任意一硬核在所述目标采样时段内的硬核cpu占用率。可选的,按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个硬核cpu占用率作为所述目标进程在所述目标采样时段内的软核cpu占用率时,所述处理单元用于:将获得的所有硬核cpu占用率按照取值从大到小的顺序排列,并从前n1个硬核cpu占用率中选取一个硬核cpu占用率,作为所述目标进程在所述目标采样时段内的软核cpu占用率;或者,将获得的所有硬核cpu占用率按照取值从小到大的顺序排列,并从前n2个硬核cpu占用率中选取一个硬核cpu占用率,作为所述目标进程在所述目标采样时段内的软核cpu占用率;或者,针对获得的所有硬核cpu占用率计算平均值,并将所述平均值作为所述目标进程在所述目标采样时段内的软核cpu占用率。可选的,所述处理单元进一步用于:在一个预设的统计周期内,分别获得所述目标进程在所述统计周期中的每一个采样时段内对应的软核cpu占用率,基于获得的各个软核cpu占用率,计算所述目标进程在所述统计周期内的软核cpu占用率最大值,或者,软核cpu占用率最小值,或者,软核cpu占用率平均值。综上所述,本发明实施例中,不再以硬核为单位统计cpu占用率,而是基于进程与硬核之间的对应关系,根据硬核cpu占用率推断出进程的软核cpu占用率,这样,可以根据准确评估进程造成的cpu负荷情况,从而动态调整进程绑定的硬核的id,进而合理利用处理器资源,有效提高处理器运行速率,提高设备的整体稳定性和高效性。附图说明图1为本发明实施例中进程与硬核之间的对应关系示意图;图2为本发明实施例中针对目标进程进行cpu占用率统计流程图;图3为本发明实施例中硬核对应读写指针示意图;图4为本发明实施例中统计装置功能结构示意图。具体实施方式本发明实施例中,提供了一种基于linux操作系统的实时计算进程的cpu占用率,令用户可以根据进程的cpu占用率,动态调整进程的cpu负载均衡,从而提高多核处理器的工作性能。下面结合附图对本发明优选的实施方式进行详细说明。实际应用中,进程也称为软核,软程和硬核之间存在对应关系。这是因为:一个进程是由多个线程组成的,为了实现硬核之间的性能均衡,会将一个进程中的多个线程分别分配至不同的硬核进行处理,以提高处理性能,因此,每一个进程均会对应至少两个硬核,而系统会对进程和硬核之间的对应关系进行记录。例如,参阅图1所示,在系统中针对各个进程分配了专属的共享内存区域用于记录进程和硬核之间的对应关系,共享内存总大小为“进程数目*硬核数目”,在某一进程(以下称为进程x)初始化时,会针对进程x分配共享内存子区域,然后将分配到的共享内存清成0xffffffff,当进程x被加载后,在进行初始化的过程中,为进程x分配至少两个硬核,用于处理进程x中包含的各个线程,接着,将进程x的id和上述至少两个硬核的id,关联记录在为进程x分配的共享内存子区域中。例如,参阅图1所示,在初始化过程中记录的关联关系中,软核0(即进程0)对应的硬核为硬核0和硬核1,软核n(即进程n)对应的硬核为硬核2和硬核4。基于上述预处理过程,参阅图2所示,本发明实施例中,针对目标进程,统计cpu占用率的详细过程如下:步骤200:确定目标进程,以及根据预设的进程和硬核之间的关联关系,确定目标进程对应的至少两个硬核,其中,该至少两个硬核用于处理目标进程包含的各个线程。具体的,可以选取一个进程作为目标进程,根据如图1所示的预先记录的进程和硬核之间的关联关系,确定目标进程对应的至少两个硬核。步骤210:确定指定的目标采样时段,分别计算上述至少两个硬核中的每一个硬核在上述目标采样时段中对应的硬核cpu占用率。实际应用中,步骤210可以采用但不限于以下两种方式:第一种方式为:预先计算系统中的每一个硬核在每一个采样时段对应的硬核cpu占用率,待确定目标进程以及目标采样时段后,再提取出目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率。例如,假设处理器中包含n个硬核,则需要计算出这n个硬核中的每一个硬核在各个采样时段的硬核cpu占用率,待选目标进程和目标采样时段后,假设目标进程被分配至硬核1和硬核2处理,那么,提取出硬核1和硬核2各自在目标采样时段中的硬核cpu占用率。这样,可以预先定期记录每一个硬核在每一个采样时段内的硬核cpu占用率,从而在需要使用时可以直接提取所需的目标值,进而有效节省了运算量,以及提高了计算效率。采用第一种方式,适应于配备有足够存储空间的应用场景。第二种方式为:确定目标进程以及目标采样时段后,实时计算目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率。这样,可以有针对性的计算当前目标进程对应的每一个硬核在目标采样时段内的硬核cpu占用率,节省了计算量,适用于计算量不频率,且存储空间有限的应用场景。无论采用第一种方式还是第二种方式,系统均需要按照设定的采样频率,在每一个采样点,分别对应处理器中的每一个硬核记录相应的时间元素信息,时间元素信息的具体内容参阅表1所示,在此不再赘述。进一步地,以目标进程对应的任意一个硬核(以下称为硬核x)为例,在计算硬核x在目标采样时段内的硬核cpu占用率时,可以先确定目标采样时段两端的第一采样点和第二采样点,再获取对应硬核x在第一采样点记录的第一时间元素信息,以及获取对应硬核x在第二采样点记录的第二时间元素信 息,再基于第一时间元素信息和第二时间元素信息中记录的每一种时间参数之间的差值,计算硬核x在目标采样时段内的硬核cpu占用率,在此不再赘述。步骤220:按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个硬核cpu占用率作为上述目标进程在上述目标采样时段内的软核cpu占用率。具体的,步骤220可以采用但不限于以下三种执行方式:第一种方式:将获得的所有硬核cpu占用率按照取值从大到小的顺序排列,并从前n1个硬核cpu占用率中选取一个硬核cpu占用率,作为目标进程在目标采样时段内的软核cpu占用率,其中,n1为预设常数。这样处理,是考虑到cpu运行过程中可以时刻对硬核的负荷进行查询,而硬核cpu占用率的较大值能够反应出硬核的高负荷状态,从而可以推断出所关联的目标进程的软核cpu占用率。第二种方式:将获得的所有硬核cpu占用率按照取值从小到大的顺序排列,并从前n2个硬核cpu占用率中选取一个硬核cpu占用率,作为目标进程在目标采样时段内的软核cpu占用率,其中,n2为预设常数。这样处理,是考虑到cpu运行过程中可以时刻对硬核的负荷进行查询,而硬核cpu占用率的较小值能够反应出硬核的空闲状态,从而可以推断出所关联的目标进程的空闲状态。第三种方式:针对获得的所有硬核cpu占用率计算平均值,并将该平均值作为目标进程在目标采样时段内的软核cpu占用率。这样处理,是考虑到cpu运行过程中可以时刻对硬核的负荷进行查询,而硬核cpu占用率的平均值能够反应进程的软核cpu占用率的总体状况,更有利于对进程的硬核负荷进行均衡处理。基于上述实施例,本发明实施例中,进一步地,设置有统计周期,一个统计周期内包含有若干采样时段,针对目标进程,在一个统计周期内的每一个采样时段中,均会获得一个相应的软核cpu占用率,那么,当一个统计周期结 束时,可以执行以下操作中的任意一种或任意组合:a:基于从各个采样时段内获得的所有软核cpu占用率,挑选出取值最大的软核cpu占用率,作为目标进程在上述统计周期内的软核cpu占用率最大值。b:基于从各个采样时段内获得的所有软核cpu占用率,挑选出取值最小的软核cpu占用率,作为目标进程在上述统计周期内的软核cpu占用率最小值。c:基于从各个采样时段内获得的所有软核cpu占用率,计算出各个软核cpu占用率平均值,作为目标进程在上述统计周期内的软核cpu占用率平均值。之所以设计统计周期,是为了能够精确统计出cpu在统计周期这一段时间内的cpu占用情况,以便调整进程的硬核分配方式;用户可以通过拉长或者减少统计周期占用的时长,结合统计周期内统计的软核cpu占用率情况,对进程与各个硬核之间的对应关系进行适应性调整,做到未雨绸缪。进一步地,如图3所示,为了保证系统在各个采样点针对同一硬核采集的时间元素信息之间实现互斥访问,本实施例中采用乒乓操作,即在任务初始化时,针对各个硬核分配n×2读取指针,即每一个硬核对应2个读写指针,以统计周期为单位,在一个统计周期完成时,针对每一个硬核进行读写指针互换。例如,假设硬核0对应的读指针当前指向的buffer中记录了上一个统计周期内的软核cpu最大值、软核cpu最小值和软核cpu平均值,同时,硬核0对应的写指针指向的buffer中就可以记录当前统计周期中各个采样点的时间元素信息,以及计算各个采样时段对应的软核cpu占用率。基于上述实施例,参阅图4所示,本发明实施例中,用于统计系统的软核cpu占用率的统计装置至少包括:确定单元40、计算单元41和处理单元42,其中,确定单元40,用于确定目标进程,以及根据预设的进程和硬核之间的关联关系,确定目标进程对应的至少两个硬核,其中,上述至少两个硬核用于处理 目标进程包含的各个线程;计算单元41,用于确定指定的目标采样时段,分别计算所述至少两个硬核中的每一个硬核在目标采样时段中对应的硬核cpu占用率;处理单元42,用于按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个硬核cpu占用率作为目标进程在目标采样时段内的软核cpu占用率。可选的,处理单元42进一步用于:在目标进程初始化的过程中,针对目标进程分配相应的共享内存子区域;为目标进程分配至少两个硬核;将目标进程的id以及上述至少两个硬核的id之间的关联关系,记录在目标进程分配到的共享内存子区域中。可选的,确定指定的目标采样时段,分别计算上述至少两个硬核中的每一个硬核在目标采样时段中对应的硬核cpu占用率时,计算单元41用于:预先计算系统中的每一个硬核在每一个采样时段对应的硬核cpu占用率,待确定目标进程以及目标采样时段后,再提取出目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率;或者,确定目标进程以及目标采样时段后,实时计算目标进程对应的至少两个硬核各自在目标采样时段内对应的硬核cpu占用率。可选的,计算目标进程对应的任意一个硬核在目标采样时段内的硬核cpu占用率时,计算单元41用于:确定目标采样时段两端的第一采样点和第二采样点;获取对应上述任意一硬核在第一采样点记录的第一时间元素信息,以及获取对应上述任意一硬核在第二采样点记录的第二时间元素信息;基于上述第一时间元素信息和第二时间元素信息中记录的每一种时间参数之间的差值,计算上述任意一硬核在目标采样时段内的硬核cpu占用率。可选的,按照预设筛选规则在获得的所有硬核cpu占用率中,选取一个 硬核cpu占用率作为目标进程在目标采样时段内的软核cpu占用率时,处理单元42用于:将获得的所有硬核cpu占用率按照取值从大到小的顺序排列,并从前n1个硬核cpu占用率中选取一个硬核cpu占用率,作为目标进程在目标采样时段内的软核cpu占用率;或者,将获得的所有硬核cpu占用率按照取值从小到大的顺序排列,并从前n2个硬核cpu占用率中选取一个硬核cpu占用率,作为目标进程在目标采样时段内的软核cpu占用率;或者,针对获得的所有硬核cpu占用率计算平均值,并将该平均值作为目标进程在目标采样时段内的软核cpu占用率。可选的,处理单元42进一步用于:在一个预设的统计周期内,分别获得目标进程在上述统计周期中的每一个采样时段内对应的软核cpu占用率,基于获得的各个软核cpu占用率,计算目标进程在上述统计周期内的软核cpu占用率最大值,或者,软核cpu占用率最小值,或者,软核cpu占用率平均值。综上所述,本发明实施例中,不再以硬核为单位统计cpu占用率,而是基于进程与硬核之间的对应关系,根据硬核cpu占用率推断出进程的软核cpu占用率,这样,可以根据准确评估进程造成的cpu负荷情况,从而动态调整进程绑定的硬核的id,进而合理利用处理器资源,有效提高处理器运行速率。有效提高处理器的运行效率,提高设备的整体稳定性和高效性。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1