云计算系统的性能数据的采集与存储方法及装置的制造方法_2

文档序号:9489104阅读:来源:国知局
式】
[0040]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0041]本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
[0042]本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0043]参考图1,示出了本申请一种云计算系统的性能数据的采集与存储方法实施例的流程图,本实施例可以应用于云计算系统中的各台主机上,本实施例可以包括以下步骤:
[0044]步骤101:按照预设的采样周期采集本机的性能数据,所述性能数据包括:本机CPU的寄存器值、正在运行的进程标示符、该进程的名称和该进程的用户栈。
[0045]在本申请的实施例中,云计算系统中可能存在上千台主机,每一台主机都可以按照本实施例的方法进行性能数据的采集与存储。其中,采样周期可以预先由本领域技术人员设置好,例如,20ms,50Hz。其中,各台主机在采样时刻到来时,采集本机CPU的寄存器值,例如指令之神寄存器IP,栈指针寄存器SP,指针寄存器BP等的值。此外,还需要采集在采集时刻各台主机上正在运行的进程的标示符PID,该进程的进程名称,以及该进程的用户栈。这些数据内容可以通过操作系统提供的接口获得。
[0046]当然,在采集性能数据的时候,还可以采集其他数据,例如CPU的特权级别,这可以表示出当前采用是属于操作系统的还是用户级别的,例如还可以采集采样间隔,因为采样周期是预先设置好的固定值,而在实际采集过程中,具体采集的那一时刻的数值未必恰好等于采样周期,可能会存在一些偏差,因此,实际的采样间隔值也可以通过高精度的系统时钟采集得到。
[0047]步骤102:利用所述本机CPU的寄存器值解析所述当前进程的用户栈以得到该进程在采集时刻的函数调用链地址和所述函数调用链中各个函数对应的DS0文件。
[0048]在采集到本机CPU的寄存器值之后,可以利用本机CPU的寄存器值来解析当前进程的用户栈,从而可以得到当前进程在采集时刻的函数调用链,以及函数调用链中各个函数对应的DS0 (动态共享对象,Dynamic Shared Object)文件。其中,函数调用链表示CPU正在执行的当前函数,以及逐级调用直到当前函数的函数集合。函数调用链地址是指函数调用链中各个函数的地址。其中,当前进程可能对应多个DS0文件,因此,本步骤中需要解析出函数调用链中的各个函数都属于哪一个DS0文件。
[0049]步骤103:将所述采集时刻作为关键字,所述采样周期、当前进程的PID、进程名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值对应保存至第一数据库中。
[0050]在采集到性能数据之后,则首先将采集时刻作为关键字Key,采样周期、当前进程的PID、进程名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值Value,对应保存至第一个Key-Value型数据库中。
[0051]步骤104:将所述各个函数对应的DS0文件的SHA1编码作为关键字,所述DS0文件中的函数地址表在磁盘上的存放位置作为键值对应保存至第二数据库中,所述函数地址表中对应保存有函数名称以及函数的起始和结束地址。
[0052]此外,再将所述各个函数对应的DS0文件的SHA1编码作为关键字Key,DS0文件中的函数地址表在磁盘上的存放位置作为键值Value,对应保存至第二个Key-Value型数据库中。其中,DS0文件中包括函数地址表,函数地址表中保存有函数名称,以及与函数名称对应的函数的起始地址和结束地址。因为一个DS0文件可能对应多个函数,因此,一个SHA1编码也可能对应多个函数。
[0053]可以理解的是,步骤103和步骤104的顺序也可以颠倒。
[0054]采用上述方法将云计算系统中各台主机的性能数据分别进行采集与存储,并分别保存在两个Key-Value型数据库中,就可以使各台主机上都保存有自己的性能数据,并且根据关键字Key即可方便高效地检索出对应的Value,这样实现了简易的分布式数据存储,避免了数据集中存储带来的不必要的网络开销。并且充分利用了各台主机上的存储资源。并且,也有利于根据数据库中的性能数据对云计算系统的性能进行分析,从而实现对云计算系统的性能数据的分析。
[0055]在不同的实施例中,在步骤104之后,还可以包括:
[0056]步骤105:判断所述第一数据库或第二数据库中的数据的存储时间是否超过预设时间阈值,如果是,则进入步骤106。
[0057]可以理解的是,由于各台主机的存储空间有限,并且性能数据的数据量较大,因此,可以在第一数据库或者第二数据库中仅保存N天的文件,N是自然数,具体值可以由本领域技术人员根据各台主机的实际存储空间或者技术需求进行设定。那么,N即是预设时间阈值,例如7天,主机可以判断第一数据库或者第二数据库中的数据的存储时间是不是已经超过预设时间阈值,如果超过了,则不再对其进行保存,没有超过,则不对数据进行任何处理。
[0058]步骤106:删除存储时间超过预设时间阈值的数据。
[0059]主机可以删除自己存储的超过预设时间阈值的数据,这样可以进一步的节省主机的存储空间。
[0060]可以理解的是,在实际应用中,还可以将实际中的“一天”设置为所述第一关系库和第二关系库中的数据表的时间属性,所述时间属性可以表示:每一天的性能数据单独存储在第一数据库或者第二数据库的一个表格中。即是,将每一天的性能数据单独存储在一个数据表中。
[0061]通过对第一数据库和第二数据库进行上述方式的生命周期管理,可以更有效的存储更有价值的数据,同时也节省了云计算系统中各台主机的存储空间。
[0062]参考图2,示出了本申请一种云计算系统的性能检测方法实施例的流程图,本实施例可以应用于云计算系统中专门用于性能检测的若干台主机上,其中,性能检测的主机与采集与存储性能数据的主机可以不同,那么,本实施例可以包括以下步骤:
[0063]步骤201:接收用户关于云计算系统的性能检测请求,所述性能检测请求中包括:性能检测目标主机、所述目标主机上运行的目标进程的名称、所述目标进程所涉及的DS0文件和时间范围。
[0064]在用户触发了关于云计算系统的性能检测请求的时候,专门用于性能检测的主机可以响应性能检测请求,获取到性能检测请求中涉及的:性能检测目标主机、所述目标主机上运行的目标进程的名称、所述目标进程所涉及的DS0文件和时间范围。其中,性能检测目标主机表示用户需要检测云计算系统中哪一台主机的性能,目标主机上运行的目标进程的名称表示用户需要检测的主机上的待检测进程,目标进程所涉及的DSO文件,因为一个进程可能涉及多个DSO文件,用户可以在性能检测请求中指定哪一个或者哪一些DSO文件,时间范围则限定了检测哪些采集时刻采集到的性能数据。
[0065]步骤202:将所述性能检测请求发送给所述性能检测目标主机,并接收所述性能检测目标主机返回的目标数据;所述目标数据为所述性能检测目标主机依据所述目标进程的名称、所述目标进程所涉及的DS0文件和时间范围在预置的第一数据库中检索出的数据,所述目标数据包括:采样周期、函数调用链以及所述函数调用链中各个函数对应的DS0文件的SHA1编码。
[0066]在本实施例中,专门用于检测的主机接收到性能检测请求之后,会将该请求转发给该请求中涉及的性能目标检测主机,性能目标检测主机接收到该请求之后,会根据其中的目标进程的名称、所述目标进程所涉及的DS0文件和时间范围来在第一数据库中筛选目标数据,其中,目标数据包括:采样周期、函数调用链以及函数调用链中各个函数对应的DS0文件的SHA1编码。其中,所述第一数据库是采用图1所示的方法预先建立的。具体的,性能目标检测主机可以先以时间范围为关键字,在第一数据库中检索出在该时间范围内的所有Value,再用目标进程的名称和目标进程所涉及的DS0文件来筛选出最终的目标数据。
[0067]步骤203:依据所述目标数据中的SHA1编码从预置的第二数据库中匹配出对应的函数地址表。
[0068]在步骤202中得到了各个函数对应的DS0文件的SHA1编码之后,再以该SHA1编码为关键字从第二数据库
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1