一种实时CPI获取方法、系统及进程性能判别系统与流程

文档序号:11829352阅读:382来源:国知局
一种实时CPI获取方法、系统及进程性能判别系统与流程

本发明涉及进程性能监控技术领域,特别涉及一种实时CPI获取方法、系统及进程性能判别系统。



背景技术:

当前,随着高性能服务器应用的快速发展,程序开发人员越来越重视Linux进程的性能。通过事先获知Linux进程的性能信息,程序开发人员能够更清楚地知道应该在什么方面对Linux进程进行下一步的优化。

而Linux进程的CPI(即Clock Cycle Per Instruction,指令平均时钟周期数)是判断Linux进程优劣的关键指标,如果能够预先获知Linux进程的CPI指标,则可很方便地判断出Linux进程性能的优劣。而如何获取Linux进程的实时CPI指标是目前还有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种Linux进程的实时CPI获取方法,实现了获取Linux进程的实时CPI指标的目的。进一步的,本发明还提供了一种实时CPI获取系统和Linux进程性能判别系统。其具体方案如下:

一种Linux进程的实时CPI获取方法,包括:

通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取所述Linux进程在所述CPU时钟周期内的有效指令执行总数;

利用所述CPU时钟周期和所述有效指令执行总数,确定与所述Linux进程对应的实时CPI指标。

优选的,所述系统调用为封装后的系统调用。

优选的,所述通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取所述Linux进程在所述CPU时钟周期内的有效指令执行总数的过程,包括:

预先生成所述封装后的系统调用;

利用所述封装后的系统调用,实时获取所述CPU时钟周期和所述有效指令执行总数。

优选的,所述预先生成所述封装后的系统调用的过程,包括:

预先获取所述Linux进程的进程PID参数;

根据所述进程PID参数,对Linux系统中的sys_perf_event_open系统调用进行封装处理,得到所述封装后的系统调用。

优选的,所述确定与所述Linux进程对应的实时CPI指标的过程,包括:

将所述CPU时钟周期除以所述有效指令执行总数,得到所述实时CPI指标。

优选的,在所述确定与所述Linux进程对应的实时CPI指标的过程之后,还包括:

对Linux系统中的PMU数据进行清空处理。

本发明还公开了一种Linux进程的实时CPI获取系统,包括:

信息获取模块,用于通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取所述Linux进程在所述CPU时钟周期内的有效指令执行总数;

CPI计算模块,用于利用所述CPU时钟周期和所述有效指令执行总数,确定与所述Linux进程对应的实时CPI指标。

优选的,所述系统调用为封装后的系统调用。

优选的,所述信息获取模块包括:

生成子模块,用于预先生成所述封装后的系统调用;

获取子模块,用于利用所述封装后的系统调用,实时获取所述CPU时钟周期和所述有效指令执行总数。

优选的,所述生成子模块包括:

PID参数获取单元,用于预先获取所述Linux进程的进程PID参数;

系统调用封装单元,用于根据所述进程PID参数,对Linux系统中的sys_perf_event_open系统调用进行封装处理,得到所述封装后的系统调用。

本发明进一步公开了一种Linux进程性能判别系统,包括前述公开的实时CPI获取系统,还包括:

性能判断模块,用于利用所述实时CPI获取系统中得到的实时CPI指标,对所述Linux进程的性能进行实时地判断,得到相应的进程实时性能信息。

本发明中,实时CPI获取方法,包括:通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取Linux进程在CPU时钟周期内的有效指令执行总数;利用CPU时钟周期和有效指令执行总数,确定与Linux进程对应的实时CPI指标。在本发明中,通过利用系统调用来实时地获取Linux进程所对应的CPU时钟周期,并获取Linux进程在上述CPU时钟周期内的有效指令执行总数,然后基于上述CPU时钟周期和有效指令执行总数,可以确定出当前Linux进程所对应的实时CPI指标,由此实现了对Linux进程的实时CPI指标进行获取的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种Linux进程的实时CPI获取方法流程图;

图2为本发明实施例公开的一种Linux进程的实时CPI获取系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种Linux进程的实时CPI获取方法,参见图1所示,该方法包括:

步骤S11:通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取Linux进程在CPU时钟周期内的有效指令执行总数。

也即,首先实时获取Linux进程所对应的CPU时钟周期以及该CPU时钟周期内的有效指令执行总数。并且,本实施例是通过系统调用,来获取上述CPU时钟周期和上述有效指令执行总数的。

步骤S12:利用上述CPU时钟周期和上述有效指令执行总数,确定与Linux进程对应的实时CPI指标。

也即,本发明实施例是基于CPU时钟周期和有效指令执行总数来对实时CPI指标进行确定。

本发明实施例中,实时CPI获取方法,包括:通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取Linux进程在CPU时钟周期内的有效指令执行总数;利用CPU时钟周期和有效指令执行总数,确定与Linux进程对应的实时CPI指标。在本发明实施例中,通过利用系统调用来实时地获取Linux进程所对应的CPU时钟周期,并获取Linux进程在上述CPU时钟周期内的有效指令执行总数,然后基于上述CPU时钟周期和有效指令执行总数,可以确定出当前Linux进程所对应的实时CPI指标,由此实现了对Linux进程的实时CPI指标进行获取的目的。

本发明实施例公开了一种具体的Linux进程的实时CPI获取方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

上一实施例中,通过系统调用,可获取到CPU时钟周期和有效指令执行总数。其中,上述系统调用具体可以为封装后的系统调用,也即是经过封装后得到的系统调用。

具体的,上一实施例步骤S11中,通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取Linux进程在CPU时钟周期内的有效指令执行总数的过程,可包括下面步骤S111和S112;其中,

步骤S111:预先生成上述封装后的系统调用;

步骤S112:利用上述封装后的系统调用,实时获取上述CPU时钟周期和上述有效指令执行总数。

更具体的,上述步骤S111中,预先生成封装后的系统调用的过程,可以包括下面步骤S1111和S1112;其中,

步骤S1111:预先获取Linux进程的进程PID参数(PID,即进程标识符);

步骤S1112:根据上述进程PID参数,对Linux系统中的sys_perf_event_open系统调用进行封装处理,得到封装后的系统调用。需要说明的是,上述sys_perf_event_open是Linux系统中自带的一个系统调用。

另外,上一实施例步骤S12中,确定与Linux进程对应的实时CPI指标的过程,具体可以包括:将CPU时钟周期除以有效指令执行总数,得到实时CPI指标。

当然,本发明实施例也可以通过搜索预设的映射关系表,来查找到与上述实时CPI指标。可以理解的是,上述映射关系表为预先创建的用于记录目标参数与CPI指标之间映射关系的数据表,其中,上述目标参数包括上述CPU时钟周期和有效指令执行总数。

进一步的,本实施例中,在确定与Linux进程对应的实时CPI指标的过程之后,还可以对Linux系统中的PMU(即Performance Monitor Unit)数据进行清空处理。

相应的,本发明实施例还公开了一种Linux进程的实时CPI获取系统,参见图2所示,该系统包括:

信息获取模块21,用于通过系统调用,实时获取Linux进程对应的CPU时钟周期,并实时获取Linux进程在CPU时钟周期内的有效指令执行总数;

CPI计算模块22,用于利用CPU时钟周期和有效指令执行总数,确定与Linux进程对应的实时CPI指标。

在本发明实施例中,通过利用系统调用来实时地获取Linux进程所对应的CPU时钟周期,并获取Linux进程在上述CPU时钟周期内的有效指令执行总数,然后基于上述CPU时钟周期和有效指令执行总数,可以确定出当前Linux进程所对应的实时CPI指标,由此实现了对Linux进程的实时CPI指标进行获取的目的。

本实施例中,上述系统调用具体可以为封装后的系统调用。

相应的,上述信息获取模块具体包括生成子模块和获取子模块;其中,

生成子模块,用于预先生成上述封装后的系统调用;

获取子模块,用于利用上述封装后的系统调用,实时获取CPU时钟周期和有效指令执行总数。

另外,上述生成子模块具体包括PID参数获取单元和PID参数获取单元;其中,

PID参数获取单元,用于预先获取Linux进程的进程PID参数;

系统调用封装单元,用于根据进程PID参数,对Linux系统中的sys_perf_event_open系统调用进行封装处理,得到封装后的系统调用。

本发明实施例进一步公开了Linux进程性能判别系统,包括前述实施例中公开的实时CPI获取系统,还包括:

性能判断模块,用于利用上述实时CPI获取系统中得到的实时CPI指标,对Linux进程的性能进行实时地判断,得到相应的进程实时性能信息。

也即,本发明实施例是基于上述实时CPI指标来判断出当前Linux进程的实时性能的。

最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种实时CPI获取方法、系统及进程性能判别系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1