云计算系统的性能数据的采集与存储方法及装置的制造方法
【技术领域】
[0001]本申请涉及云计算领域,特别涉及一种云计算系统的性能数据的采集与存储方法及装置,还有一种云计算系统的性能检测方法、装置及系统。
【背景技术】
[0002]云计算系统包括服务器、存储、网络等海量基础硬件资源和单机操作系统、中间件、数据库等海量基础软件资源。云计算系统的硬件构成可以看为计算机集群,涉及到的机器可能会有数千台之多。对于云计算系统的使用者来说,付出的费用通常与应用占有的硬件资源成正比。使用的硬件资源越多,所需付出的成本就越高。因此,提供面向云计算系统的性能分析工具,帮助云计算系统的开发者与用户对云计算系统软件与应用软件进行性能优化,减少系统软件与应用软件的资源开销,具有节约成本的现实意义。
[0003]运行在云计算系统上的应用程序多为分布式应用,这些应用部署在不同机器上的模块可能是同构的,也可能是异构的。因此面向云计算系统的性能分析工具,必须支持分布式软件的性能分析。
[0004]进一步的,由于云计算系统的规模庞大,运行在该系统之上的系统软件与应用软件每天都会发生很多性能异常。特别是这些软件系统还没有趋于稳定时。为了能够快速排查性能异常的原因,有必要在云计算系统中保存软件的性能数据。
[0005]在现有技术中,因为云计算系统存在上述特性,所以在采集或者存储云计算系统的性能数据时,尚没有一种能够准确采集、存储、分析分布式应用性能数据的有效的方案。
【发明内容】
[0006]本申请所要解决的技术问题是提供一种云计算系统的性能数据的采集与存储方法,用以解决现有技术中没有能够准确采集并存储云计算系统的性能数据方案的问题,进一步的,还能基于采集并存储的性能数据对云计算系统的进行性能分析。
[0007]本申请还提供了一种云计算系统的性能数据的采集与存储装置,以及一种云计算系统的性能检测方法、装置及系统,用以保证上述方法在实际中的实现及应用。
[0008]为了解决上述问题,本申请公开了一种云计算系统的性能数据的采集与存储方法,应用于云计算系统中的各台主机上,包括:
[0009]按照预设的采样周期采集本机的性能数据,所述性能数据包括:本机CPU的寄存器值、正在运行的进程标示符PID、该进程的名称和该进程的用户栈;
[0010]利用所述本机CPU的寄存器值解析该进程的用户栈以得到该进程在采集时刻的函数调用链和所述函数调用链中各个函数对应的DS0文件;
[0011]将所述采集时刻作为关键字,所述采样周期、PID、名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值对应保存至第一数据库中,并将所述各个函数对应的DS0文件的SHA1编码作为关键字,所述DS0文件中的函数地址表在磁盘上的存放位置作为键值对应保存至第二数据库中,所述函数地址表中对应保存有函数名称以及函数的起始和结束地址。
[0012]本申请公开了一种云计算系统的性能数据的采集与存储装置,包括:
[0013]采集单元,用于按照预设的采样周期采集本机的性能数据,所述性能数据包括:本机CPU的寄存器值、正在运行的进程标示符PID、该进程的名称和该进程的用户栈;
[0014]第一解析单元,用于利用所述本机CPU的寄存器值解析该进程的用户栈以得到该进程在采集时刻的函数调用链和所述函数调用链中各个函数对应的DS0文件;
[0015]第一保存单元,用于将所述采集时刻作为关键字,所述采样周期、PID、进程名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值对应保存至第一数据库中;
[0016]第二保存单元,用于将所述各个函数对应的DS0文件的SHA1编码作为关键字,所述DS0文件中的函数地址表在磁盘上的存放位置作为键值对应保存至第二数据库中,所述函数地址表中对应保存有函数名称以及函数的起始和结束地址。
[0017]本申请公开了一种云计算系统的性能检测方法,包括:
[0018]接收用户关于云计算系统的性能检测请求,所述性能检测请求中包括:性能检测目标主机、所述目标主机上运行的目标进程的名称、所述目标进程所涉及的DS0文件和时间范围;
[0019]将所述性能检测请求发送给所述性能检测目标主机,并接收所述性能检测目标主机返回的目标数据;所述目标数据为所述性能检测目标主机依据所述目标进程的名称、所述目标进程所涉及的DS0文件和时间范围在预置的第一数据库中检索出的数据,所述目标数据包括:采样周期、函数调用链地址以及所述函数调用链中各个函数对应的DS0文件的SHA1编码;在所述第一数据库中,采集时刻作为关键字,采样周期、PID、名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值对应保存;
[0020]依据所述目标数据中的SHA1编码从预置的第二数据库中匹配出对应的函数地址表;在所述第二数据库中,所述各个函数对应的DS0文件的SHA1编码作为关键字,所述DS0文件中的函数地址表在磁盘上的存放位置作为键值对应保存;
[0021]利用所述函数地址表对所述目标数据中的函数调用链地址进行解析,以得到所述当前进程中调用的各个函数名称;
[0022]利用所述采样周期计算各个函数名称对应的各个函数的执行时间占比。
[0023]本申请公开了一种云计算系统的性能检测装置,包括:
[0024]接收请求单元,用于接收用户关于云计算系统的性能检测请求,所述性能检测请求中包括:性能检测目标主机、所述目标主机上运行的目标进程的名称、所述目标进程所涉及的DS0文件和时间范围;
[0025]发送单元,用于将所述性能检测请求发送给所述性能检测目标主机;
[0026]接收数据单元,用于接收所述性能检测目标主机返回的目标数据;所述目标数据为所述性能检测目标主机依据所述目标进程的名称、所述目标进程所涉及的DS0文件和时间范围在预置的第一数据库中检索出的数据,所述目标数据包括:采样周期、函数调用链地址以及所述函数调用链中各个函数对应的DS0文件的SHA1编码;在所述第一数据库中,采集时刻作为关键字,采样周期、PID、名称、函数调用链地址以及所述各个函数对应的DS0文件的SHA1编码作为键值对应保存;
[0027]匹配单元,用于依据所述目标数据中的SHA1编码从预置的第二数据库中匹配出对应的函数地址表;在所述第二数据库中,所述各个函数对应的DS0文件的SHA1编码作为关键字,所述DS0文件中的函数地址表在磁盘上的存放位置作为键值对应保存;
[0028]第二解析单元,用于利用所述函数地址表对所述目标数据中的函数调用链地址进行解析,以得到所述当前进程中调用的各个函数名称;
[0029]计算单元,用于利用所述采样周期计算各个函数名称对应的各个函数的执行时间& t匕。
[0030]与现有技术相比,本申请包括以下优点:
[0031]在本申请中,可以将云计算系统中各台主机的性能数据分别进行采集与存储,并分别保存在两个Key-Value型数据库中,就可以使各台主机上都保存有自己的性能数据,并且根据关键字Key即可方便高效的检索出对应的Value,这样实现了简易的分布式数据存储,避免了数据集中存储带来的不必要的网络开销。并且充分利用了各台主机上的存储资源。并且,对来自多台机器的性能数据进行聚合、分析还有利于根据数据库中的性能数据对云计算系统的性能进行分析,从而实现对云计算系统的性能数据的分析。进一步的,还可以接触性能分析结果有针对性的对主机中的各个软件进行性能优化。
[0032]此外,通过对第一数据库和第二数据库进行上述方式的生命周期管理,可以更有效的存储更有价值的数据,同时也节省了云计算系统中各台主机的存储空间。并且,本申请实施例可以对来自多台主机的性能数据进行聚合和分析等,实现了针对大规模计算机集群及分布式应用程序的性能分析。
[0033]当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
【附图说明】
[0034]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035]图1是本申请的一种云计算系统的性能数据的采集与存储方法实施例的流程图;
[0036]图2为本申请的一种云计算系统的性能数据的采集与存储装置实施例的结构框图;
[0037]图3是本申请的一种云计算系统的性能检测方法实施例的流程图;
[0038]图4是本申请的一种云计算系统的性能检测装置实施例的结构框图;
[0039]图5是本申请的一种云计算系统的性能检测系统实施例的结构框图。
【具体实施方