虚拟机监控方法及装置的制造方法_2

文档序号:9417222阅读:来源:国知局
0中,该监控列表中可以包含所有需要监控的进程的所属类型的信息。其中,不需要监控的进程的类型可以包括:系统中的内核(kernel)进程、以及由普通命令产生的进程(如more、copy等)。
[0031]具体地,终端设备100可通过VMM120可以根据与该系统调用相关的进程信息判断该进程的类型,并将其与监控列表中存储的信息进行匹配,以判断该系统调用的进程是否位于预设的监控列表内,若该系统调用的进程位于预设的监控列表内,则至少记录该进程进入该系统调用(syscall-entry)的入口时间(entry time)、及退出该系统调用(syscall-exit)出口时间(exit time)。
[0032]像这样,通过利用监控列表,过滤不需要监控的系统调用可以使监控更具有针对性,且可减少监控行为对进程性能的影响,从而可提高监控效率。
[0033]步骤S104,根据该入口时间及出口时间统计相关进程进行系统调用的时间分布并以可视形式输出该时间分布。
[0034]具体地,终端设备100通过VMM120监控每一次系统调用被触发的整个过程,并在每次监控结束时,根据本次系统调用的入口时间及出口时间,对本次系统调用的相关信息进行统计,并将统计结果根据预置的总体结构进行保存。于本实施例中,保存信息的总体结构可如图3所示。如图3所示,统计结果至少可以包括:触发本次系统调用的进程的进程名(process name)、系统调用的名称或种类(Syscall name)、调用成功或失败的次数(Syscallsuccess/fail)、调用时间(syscall time-cost)。其中,调用时间可以为入口时间与出口时间的时间差。
[0035]定期地,终端设备100根据保存的上述信息,对预置监控周期内的监控数据进行统计,获取预置监控周期内相关进程进行系统调用的时间分布。于本实施例中,该时间分布可以包括:所有被监控的业务进程的进程名与标识符、每个被监控的业务进程调用的系统调用的名称、调用的成功次数、调用的失败次数、单次调用的最大时间、调用的总时间、以及该调用系统调用的行为在各个预置时间段的分布次数。
[0036]终端设备100将统计结果以可视形式输出,以便用户根据输出的统计结果分析获取运行异常的进程(例如:导致CPU高负载的进程),并对该进程进行优化操作。
[0037]或者,终端设备100可将统计结果输出给处理模块,以使处理模块对统计结果进行分析,获取其中满足预置条件的进程,并根据执行预设的优化代码对该进程进行优化。其中,预置条件可以用于判断一个进程是否运行异常,例如:进行系统调用的成功次数是否大于预置数值,进行系统调用的时间是否超过预置的时间等等。
[0038]本发明实施例提供的虚拟机监控方法,通过在虚拟机内核内截取客机操作系统的所有的系统调用并获取与该系统调用相关的进程信息,然后,根据该进程信息判断发起该系统调用的进程是否位于预设的监控列表内,若是则至少记录该系统调用的入口时间及出口时间,根据该入口时间及出口时间统计相关进程进行系统调用的时间分布并以可视形式输出该时间分布,实现了有针对性的进程监控,同时还可获得更多的监控数据,从而可提高监控虚拟机性能的效率。
[0039]请参阅图4,图4为本发明第二实施例提供的虚拟机监控方法的流程图。如图4所示,本实施例提供的虚拟机监控方法包括:
[0040]步骤S201,通过虚拟机内核启动运行客机操作系统;
[0041]本步骤与第一实施的SlOl相同,此处不再赘述。
[0042]步骤S202,根据用户输入的数据构建布隆过滤器(bloom filter);
[0043]bloom filter为二进制向量数据结构,可用于检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况。
[0044]用户输入的数据可以包括不需要监控的进程的类型,例如:系统中的内核(kernel)进程、以及由普通命令产生的进程(如more、copy等)等等。
[0045]终端设备100根据用户输入的不需要监控的进程的类型以及系统中所有进程的类型,生成需要对其进行监控的进程的类型信息的集合,并根据该集合构建bloom filter。
[0046]步骤S203,在该虚拟机内核内截取该客机操作系统的所有的系统调用并获取与该系统调用相关的进程信息;
[0047]本步骤与第一实施的步骤S102相同,此处不再赘述。
[0048]步骤S204,获取该进程的标识符,并在预设的布隆过滤器中查询该进程的标识符;
[0049]终端设备100通过VMM120获取与截取的系统调用对应的进程的标识符,并在bloom filter中查询该进程的标识符。具体地,在bloom filter中查询该进程的标识符可以采用哈希函数的方法,将一个元素映射到一个m长度的阵列上的一个点,当这个点是I时,那么这个元素在集合内,反之则不在集合内。当检测的元素很多的时候,可使用k个哈希函数对应k个点,如果所有点都是I的话,那么元素在集合内,如果有O的话,元素则不在集合内。
[0050]经过大量统计,当通过bloom filter对不需要监控的系统调用进行过滤时,进程性能的损耗为3%左右。因此,通过bloom filter对不需要监控的系统调用进行过滤,可以有效降低过滤带来的进程性能的损失,减少因监控行为而对进程性能造成的影响,从而可提高监控效率。
[0051]步骤S205,若查找到该标识符,则判断该进程位于预设的监控列表内,至少记录该系统调用的入口时间及出口时间;
[0052]由于bloom filter是根据需要对其进行监控的进程的类型信息的集合构建,因此当在bloom filter中查找到该标识符时,可确定该进程位于预设的监控列表内。终端设备100可通过VMM120至少记录该进程进入该系统调用的入口时间、及退出该系统调用出口时间。
[0053]步骤S206,根据该入口时间及出口时间统计相关进程进行系统调用的时间分布并以可视形式输出该时间分布;
[0054]本步骤与第一实施例的步骤S104相同,此处不再赘述。
[0055]步骤S207,根据用户输入更新该客机操作系统内的应用程序代码使该客机操作系统被监控的进程系统调用所消耗的时间降低。
[0056]具体地,终端设备100接收用户所触发的优化指令,根据该优化指令的指示获取用户输入的更新该客机操作系统内的应用程序代码,并执行该应用程序代码。该应用程序代码可以用于使Guest OS被监控的进程系统调用所消耗的时间降低。
[0057]本发明实施例提供的虚拟机监控方法,通过在虚拟机内核内截取客机操作系统的所有的系统调用并获取与该系统调用相关的进程信息,然后,根据该进程信息判断发起该系统调用的进程是否位于预设的监控列表内,若是则至少记录该系统调用的入口时间及出口时间,根据该入口时间及出口时间统计相关进程进行系统调用的时间分布并以可视形式输出该时间分布,实现了有针对性的进程监控,同时还可获得更多的监控数据,从而可提高监控虚拟机性能的效率。此外由于实现了通过bloom filter对不需要监控的系统调用进行高效过滤,因此可降低因监控行为而对进程性能造成的影响,减少监控给进程性能带来的损耗。
[0058]图5为本发明第三实施例提供的虚拟机监控装置的结构示意图。本实施例提供的虚拟机监控装置可运行于图1所示的终端设备100中,用于实现上述虚拟机监控方法。如图5所示,虚拟机监控装置30包括:启动模块31、进程信息获取模块32、记录模块33以及统计与输出模块34。
[0059]启动模块31,用于通过虚拟机内核启动运行客机操作系统;
[0060]进程信息获取模块32,用于在该虚拟机内核内截取该客机操作系统的所有的系统调用并获取与该系统调用相关的进程信息;
[0061]记录模块33,用于根据进程信息获取模块32获取的该进程信息判断发起该系统调用的进程是否位于预设的监控列表内,若是则至少记录该系统调用的入口时间及出口时间;
[0062]统计与输出模块34,用于根据记录模块33记录的该入口时间及出口时间统计相关进程进行系统调用的时间分布并以可视形式输出该时间分布。
[0063]本实施例对虚拟机监控装置30的各功能模块实现
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1