首页 / 专利库 / 电脑零配件 / 计算机系统 / 一种虚拟机的监控方法、装置和系统

一种虚拟机的监控方法、装置和系统

阅读:634发布:2023-03-25

专利汇可以提供一种虚拟机的监控方法、装置和系统专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了一种 虚拟机 的监控方法、装置和系统;本发明实施例采用截获子机中对I/O设备的 访问 进程 ,根据该访问进程对该I/O设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确 定位 ,使得后续可以根据该故障原因对虚拟机的性能进行改善。,下面是一种虚拟机的监控方法、装置和系统专利的具体信息内容。

1.一种虚拟机的监控方法,其特征在于,包括:
截获子机中对输入/输出设备的访问进程
根据所述访问进程对所述输入/输出设备的访问过程进行模拟;
监控并统计所述模拟过程中退出访问的次数和分布信息。
2.根据权利要求1所述的方法,其特征在于,所述监控并统计所述模拟过程中退出访问的次数和分布信息,包括:
对所述模拟过程进行监控,以统计退出的访问的次数;
获取退出的访问所对应的输入/输出设备的地址;
将所述地址与本地保存数据进行比较,以确定退出访问的分布信息,所述本地保存数据包括输入/输出设备的地址与子机中输入/输出端口的映射关系。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述访问进程对所述输入/输出设备的访问过程进行模拟,包括:
根据所述访问进程确定所述输入/输出设备的地址;
为所述输入/输出设备在子机中分配相应的输入/输出端口;
建立所述输入/输出设备的地址与分配的输入/输出端口之间的映射关系;
基于所述映射关系对所述输入/输出设备的访问过程进行模拟。
4.根据权利要求3所述的方法,其特征在于,所述为所述输入/输出设备在子机中分配相应的输入/输出端口,包括:
确定所述输入/输出设备为外设部件互连标准PCI设备时,采用动态分配方式为所述输入/输出设备在子机中分配相应的输入/输出端口;
确定所述输入/输出设备为指令集架构ISA设备时,采用静态分配方式为所述输入/输出设备在子机中分配相应的输入/输出端口。
5.根据权利要求4所述的方法,其特征在于,所述建立所述输入/输出设备的地址与分配的输入/输出端口之间的映射关系之后,还包括:
保存静态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据。
6.根据权利要求4所述的方法,其特征在于,所述建立所述输入/输出设备的地址与分配的输入/输出端口之间的映射关系之后,还包括:
保存动态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据;
利用预置的设备控制接口函数对所述本地保存数据中动态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系进行动态更新。
7.一种虚拟机的监控装置,其特征在于,包括:
截获单元,用于截获子机中对输入/输出设备的访问进程;
模拟单元,用于根据所述访问进程对所述输入/输出设备的访问过程进行模拟;
监控单元,用于监控并统计所述模拟过程中退出访问的次数和分布信息。
8.根据权利要求7所述的监控装置,其特征在于,所述监控单元包括统计子单元、获取子单元和比较子单元;
所述统计子单元,用于对所述模拟过程进行监控,以统计退出的访问的次数;
所述获取子单元,用于获取退出的访问所对应的输入/输出设备的地址;
所述比较子单元,用于将所述地址与本地保存数据进行比较,以确定退出访问的分布信息,所述本地保存数据包括输入/输出设备的地址与子机中输入/输出端口的映射关系。
9.根据权利要求7或8所述的监控装置,其特征在于,所述模拟单元包括确定子单元、分配子单元、建立子单元和模拟子单元;
所述确定子单元,用于根据所述访问进程确定所述输入/输出设备的地址;
所述分配子单元,用于为所述输入/输出设备在子机中分配相应的输入/输出端口;
所述建立子单元,用于建立所述输入/输出设备的地址与分配的输入/输出端口之间的映射关系;
所述模拟子单元,用于基于所述映射关系对所述输入/输出设备的访问过程进行模拟。
10.根据权利要求9所述的监控装置,其特征在于,所述分配子单元,具体用于:
确定所述输入/输出设备为外设部件互连标准PCI设备时,采用动态分配方式为所述输入/输出设备在子机中分配相应的输入/输出端口;
确定所述输入/输出设备为指令集架构ISA设备时,采用静态分配方式为所述输入/输出设备在子机中分配相应的输入/输出端口。
11.根据权利要求10所述的监控装置,其特征在于,还包括保存单元;
所述第一保存单元,用于保存静态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据。
12.根据权利要求11所述的监控装置,其特征在于,
所述保存单元,还用于保存动态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据;利用预置的设备控制接口函数对所述本地保存数据中动态分配的输入/输出设备的地址与子机中输入/输出端口的映射关系进行动态更新。
13.一种虚拟机的监控系统,其特征在于,包括子机和权利要求7至12任一项所述的虚拟机的监控装置,其中:
所述子机,用于调用访问进程以对输入/输出设备进行访问。

说明书全文

一种虚拟机的监控方法、装置和系统

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种虚拟机的监控方法、装置和系统。

背景技术

[0002] 系统虚拟化具有很好的隔离性、封装性、兼容性及硬件独立性,因此获得了广泛的使用。所谓系统虚拟化,也称为虚拟机(Virtual Machine),指的是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。其中,虚拟机所在的实体设备称为母机,而模拟出来的一个或多个系统则称为该母机的子机。
[0003] 为了更好地了解虚拟机的运行状况,现有技术提出了对虚拟机的运行进行监控。现有的虚拟机监控一般都是从子机中对各个进程,比如中央处理器(CPU,Central Processing Unit)、内存和输入输出(I/O,input/output)设备等设备的使用情况来进行监控的,并据此来对虚拟机的性能进行评判。
[0004] 在对现有技术的研究和实践过程中,本发明的发明人发现,在虚拟机中执行IO操作时,会转化为执行I/O设备的portio或mmio(内存映射I/O,Memory mapping I/O)访问,这样会使得虚拟机退出,从而导致性能下降,但是目前的监控方法并无法对此进行监控,从而无法准确地对子机的故障进行定位

发明内容

[0005] 本发明实施例提供一种虚拟机的监控方法、装置和系统,可以对子机的I/O操作进行精细量化的监控统计,从而对子机的故障进行准确定位。
[0006] 本发明实施例提供一种虚拟机的监控方法,包括:
[0007] 截获子机中对I/O设备的访问进程;
[0008] 根据所述访问进程对所述I/O设备的访问过程进行模拟;
[0009] 监控并统计所述模拟过程中退出访问的次数和分布信息。
[0010] 相应的,本发明实施例还提供一种虚拟机的监控装置,包括:
[0011] 截获单元,用于截获子机中对I/O设备的访问进程;
[0012] 模拟单元,用于根据所述访问进程对所述I/O设备的访问过程进行模拟;
[0013] 监控单元,用于监控并统计所述模拟过程中退出访问的次数和分布信息。
[0014] 此外,本发明实施例还提供一种虚拟机的监控系统,包括子机和本发明实施例提供的任一种虚拟机的监控装置,其中:
[0015] 所述子机,用于调用访问进程以对I/O设备进行访问。
[0016] 本发明实施例采用截获子机中对I/O设备的访问进程,根据该访问进程对该I/O设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。附图说明
[0017] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1是本发明实施例提供的虚拟机的监控方法的流程图
[0019] 图2是本发明实施例提供的虚拟机的监控方法的另一流程图;
[0020] 图3a是本发明实施例提供的虚拟机的监控装置的结构示意图;
[0021] 图3b是本发明实施例提供的虚拟机的监控装置的另一结构示意图;
[0022] 图4是本发明实施例提供虚拟机的监控系统的结构示意图。

具体实施方式

[0023] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024] 本发明实施例提供一种虚拟机的监控方法、装置和系统。以下将分别进行详细说明。
[0025] 实施例一、
[0026] 本实施例将从虚拟机的监控装置的度进行描述,该虚拟机的监控装置具体可以集成在母机中,可以包括快速模拟器(QEMU,Quick EMUlator)和基于内核的虚拟机(KVM,Kernel-based Virtual Machine)。
[0027] 一种虚拟机的监控方法,包括:截获子机中对I/O设备的访问进程,根据该访问进程对所述I/O设备的访问过程进行模拟,监控并统计该模拟过程中退出访问的次数和分布信息。
[0028] 如图1所示,该虚拟机的监控方法的流程具体可以如下:
[0029] 101、截获子机中对I/O设备的访问进程。例如,具体可以由KVM截获子机中对I/O设备的访问进程。
[0030] 在X86-CPU中,对I/O设备的访问可以通过两种方式:I/O端口(portio)方式和内存映射I/O(mmio,memory mapping I/O)方式,其中,portio方式主要是将I/O设备的寄存器映射到IO地址空间,portio方式可以通过IN/OUT指令访问I/O端口;而mmio方式主要是将I/O设备的寄存器映射到内存地址空间,mmio方式可以通过CPU访问内存指令,如move等访问内存方式来访问I/O端口。本发明实施例所说的访问进程可以是mmio方式的访问(简称mmio访问),也可以是portio方式的访问(简称portio访问)。
[0031] 102、根据截获的访问进程对该I/O设备的访问过程进行模拟。
[0032] 例如,具体可以由KVM或QEMU来对该I/O设备的访问过程进行模拟,比如,具体可以如下:
[0033] (1)根据该访问进程确定该I/O设备的地址。
[0034] 例如,具体可以根据该mmio访问或portio访问确定该I/O设备的地址。
[0035] (2)为该I/O设备在子机中分配相应的I/O端口。
[0036] 其中,根据不同的I/O设备,可以采用不同的方式为其在子机中分配I/O端口,例如,具体可以如下:
[0037] 确 定 该 I/O设 备 为 外 设 部 件 互 连 标 准 (PCI,Peripheral Component Interconnect)设备时,采用动态分配方式为该I/O设备在子机中分配相应的I/O端口。
[0038] 确定该I/O设备为指令集架构(ISA,Instruction Set Architecture)设备时,采用静态分配方式为该I/O设备在子机中分配相应的I/O端口。
[0039] 此外,若是由QEMU来分配该I/O端口,则在分配了相应的I/O端口后,还可以绑定相应的回调函数,以便后续其他模可以通过调用该回调函数将相关操作返回QEMU中进行处理,其中,回调函数就是一个通过函数指针调用的函数。
[0040] (3)建立该I/O设备的地址与分配的I/O端口之间的映射关系。
[0041] 在建立了映射关系之后,还可以保存该映射关系,以作为本地保存数据,以供后续使用。比如,保存静态分配的I/O设备的地址与子机中I/O端口的映射关系,作为本地保存数据;或者,保存动态分配的I/O设备的地址与子机中I/O端口的映射关系,作为本地保存数据,并利用预置的设备控制接口函数(ioctl)对其(即该本地保存数据中的“动态分配的I/O设备的地址与子机中I/O端口的映射关系”)进行动态更新。
[0042] 其中,ioctl指的是设备驱动程序中对设备的I/O通道进行管理的函数。
[0043] (4)基于该映射关系对该I/O设备的访问过程进行模拟。
[0044] 需说明的是,KVM截获该访问进程后,如果该I/O设备在KVM中进行了模拟,就调用相关回调函数进行处理并返回QEMU,如果KVM未模拟此I/O设备,则将其返回QEMU中进行处理。
[0045] 103、监控并统计该模拟过程中退出访问的次数和分布信息。
[0046] 例如,可以由KVM来监控并统计该模拟过程中退出访问的次数和分布信息,具体可以如下:
[0047] 对该模拟过程进行监控,以统计退出的访问的次数,获取退出的访问所对应的I/O设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0048] 其中,该本地保存数据包括I/O设备的地址与子机中I/O端口的映射关系,具体可参见步骤102。
[0049] 由上可知,本实施例采用截获子机中对I/O设备的访问进程,根据该访问进程对该I/O设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0050] 实施例二、
[0051] 根据实施例一所描述的方法,以下将举例作进一步详细说明。
[0052] 在本实施例中,将以虚拟机的监控装置具体包括QEMU和KVM(即KVM内核模块)为例进行说明。
[0053] 一种虚拟机的监控方法,如图2所示,具体流程可以如下:
[0054] 201、KVM截获子机中对I/O设备的访问进程,比如mmio访问或portio访问。
[0055] 202、KVM对访问进程进行模拟,调用相关回调函数进行处理并将处理结果返回给QEMU;或者,若KVM未模拟此I/O设备,则将该访问进程传送给QEMU,由QEMU对访问进程进行模拟。
[0056] 具体模拟时,可以先根据该访问进程确定该I/O设备的地址,并为该I/O设备在子机中分配相应的I/O端口,然后再建立该I/O设备的地址与分配的I/O端口之间的映射关系,并基于该映射关系对该I/O设备的访问过程进行模拟。
[0057] 在QEMU中进行IO设备模拟时,可以使用两种方式进行I/O设备的portio/mmio映射:
[0058] (1)PCI设备的映射;
[0059] 采用动态分配方式为该I/O设备在子机中分配相应的I/O端口,即其portio/mmio访问的映射关系为动态分配,其中,映射时,若为portio访问,则映射到I/O端口,并绑定回调函数,若为mmio访问,则映射到I/O内存(I/O region),并绑定回调函数。
[0060] (2)ISA设备的映射;
[0061] 采用静态分配方式为该I/O设备在子机中分配相应的I/O端口,即其portio/mmio访问的映射关系为静态分配。
[0062] 其中,Linux子机中针对portio和mmio的I/O端口分配可以如下:
[0063] (1)portio的I/O端口分配;
[0064] 端口范围:设备
[0065] 0000-001f:dma1
[0066] 0020-0021:pic1
[0067] 0040-0043:timer0
[0068] 0050-0053:timer1
[0069] 0060-0060:keyboard
[0070] 0064-0064:keyboard
[0071] 0070-0077:rtc/*针对rtc设备,端口范围为8*/
[0072] 0080-008f:dma page reg
[0073] 00a0-00a1:pic2
[0074] 00c0-00df:dma2
[0075] 00f0-00ff:fpu
[0076] 03c0-03df:vga+
[0077] 03f8-03ff:serial/*针对串口设备,端口范围为8*/
[0078] 0cf8-0cff:PCI conf1
[0079] afe0-afe3:ACPI GPE0_BLK
[0080] b000-b003:ACPI PM1a_EVT_BLK
[0081] b004-b005:ACPI PM1a_CNT_BLK
[0082] b008-b00b:ACPI PM_TMR
[0083] b010-b015:ACPI CPU throttle
[0084] c000-c03f:virtio-pci/*针对virtio-blk-pci设备,端口范围为64*/[0085] c060-c07f:virtio-pci/*针对virtio-net-pci设备,端口范围为32*/[0086] c080-c09f:virtio-pci/*针对virtio-balloon-pci设备,端口范围为32*/[0087] (2)mmio的I/O端口分配分配;
[0088] 地址范围:设备
[0089] 00000000-0009fbff:System RAM/*端口范围为0~638k*/
[0090] 00100000-dfffdfff:System RAM/*端口范围为1m~3583m*/
[0091] 01000000-014f1408:Kernel code/*端口范围为16m~20m*/
[0092] 014f1409-01738d5f:Kernel data/*端口范围为20m~23m*/
[0093] 017b2000-01850d03:Kernel bss/*端口范围为23m~24m*/
[0094] 02000000-09ffffff:Crash kernel/*端口范围为32m~159m*/
[0095] febf1000-febf1fff:virtio-pci/*针对virtio-net-pci设备之MSI-X(中断),端口范围为4k*/
[0096] febf2000-febf2fff:virtio-pci/*针对virtio-blk-pci设备之MSI-X(中断),端口范围为4k*/
[0097] fec00000-fec00fff:IOAPIC 0/*针对kvm-ioapic设备,端口范围为4k*/[0098] fed00000-fed003ff:HPET 0/*针对hpet设备,端口范围为1k*/
[0099] fee00000-fee00fff:Local APIC/*针对kvm-lapic设备,端口范围为4k*/[0100] 100000000-21fffffff:System RAM
[0101] 203、KVM对该模拟过程进行监控,以统计退出的访问的次数。
[0102] 204、KVM获取退出的访问所对应的I/O设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0103] 其中,该本地保存数据包括I/O设备的地址与子机中I/O端口的映射关系,例如:
[0104] (1)对于QEMU中静态分配的portio/mmio的I/O端口范围,在KVM中可以直接保存一份,作为本地保存数据,格式可以为
[0105] (2)对于QEMU中动态分配的portio/mmio的I/O端口范围,在KVM中可以新增一个ioctl,在QEMU动态更新IO设备bar时(pci_update_mappings),可以通过该ioctl将动态更新的映射关系传给KVM进行保存,格式可以为
[0106] 当然,也可以采用其他的格式来保存,在此不再赘述。
[0107] 由上可知,本实施例采用由KVM截获子机中对I/O设备的访问进程,然后由KVM或QEMU根据该访问进程对该I/O设备的访问过程进行模拟,然后,再由KVM监控并统计该模拟过程中退出访问的次数和分布信息,从而实现母机对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0108] 实施例三、
[0109] 相应的,本发明实施例还提供一种虚拟机的监控装置,如图3a所示,该虚拟机的监控装置包括截获单元301、模拟单元302和监控单元303,如下:
[0110] 截获单元301,用于截获子机中对输入/输出设备的访问进程。
[0111] 其中,该访问进程可以是mmio访问,也可以是portio访问。
[0112] 模拟单元302,用于根据该访问进程对该I/O设备的访问过程进行模拟。
[0113] 监控单元303,用于监控并统计该模拟过程中退出访问的次数和分布信息。
[0114] 例如,其中,模拟单元302可以包括确定子单元、分配子单元、建立子单元和模拟子单元,如下:
[0115] 确定子单元,用于根据该访问进程确定所述I/O设备的地址。
[0116] 例如,具体可以根据该mmio访问或portio访问确定该I/O设备的地址。
[0117] 分配子单元,用于为该I/O设备在子机中分配相应的输入/输出端口。
[0118] 其中,根据不同的I/O设备,可以采用不同的方式为其在子机中分配I/O端口,即,分配子单元,具体可以用于执行如下操作:
[0119] (1)PCI设备的映射;
[0120] 确定该I/O设备为PCI设备时,采用动态分配方式为所述I/O设备在子机中分配相应的输入/输出端口;即其portio/mmio访问的映射关系为动态分配,其中,映射时,若为portio访问,则映射到I/O端口,并可以绑定回调函数,若为mmio访问,则映射到I/O内存(I/O region),并可以绑定回调函数。
[0121] (2)ISA设备的映射;
[0122] 确定该I/O设备为ISA设备时,采用静态分配方式为所述I/O设备在子机中分配相应的输入/输出端口;即其portio/mmio访问的映射关系为静态分配。
[0123] 其中,Linux子机中针对portio和mmio的I/O端口分配具体可参见前面的实施例,在此不再赘述。
[0124] 建立子单元,用于建立该I/O设备的地址与分配的输入/输出端口之间的映射关系;
[0125] 模拟子单元,用于基于该映射关系对该I/O设备的访问过程进行模拟。
[0126] 在建立了映射关系之后,还可以保存该映射关系,以作为本地保存数据,以供后续使用。比如,保存静态分配的I/O设备的地址与子机中I/O端口的映射关系,作为本地保存数据;或者,保存动态分配的I/O设备的地址与子机中I/O端口的映射关系,作为本地保存数据,并利用预置的设备控制接口函数(ioctl)对其(即该本地保存数据中的“动态分配的I/O设备的地址与子机中I/O端口的映射关系”)进行动态更新,即如图3b所示,该虚拟机的监控装置还可以包括保存单元304;
[0127] 保存单元304,可以用于保存静态分配的I/O设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据。
[0128] 保存单元,还可以用于保存动态分配的I/O设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据;利用ioctl对该本地保存数据中的“动态分配的I/O设备的地址与子机中输入/输出端口的映射关系”进行动态更新。
[0129] 其中,监控单元303可以包括统计子单元、获取子单元和比较子单元,如下:
[0130] 统计子单元,用于对该模拟过程进行监控,以统计退出的访问的次数。
[0131] 获取子单元,用于获取退出的访问所对应的I/O设备的地址。
[0132] 比较子单元,用于将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0133] 其中,该本地保存数据包括I/O设备的地址与子机中输入/输出端口的映射关系,例如:
[0134] (1)对于静态分配的portio/mmio的I/O端口范围,可以直接保存一份,作为本地保存数据,格式可以为
[0135] (2)对于动态分配的portio/mmio的I/O端口范围,可以新增一个ioctl,在动态更新IO设备bar时(pci_update_mappings),可以通过该ioctl来传送该动态更新的映射关系并进行保存,格式可以为
[0136] 当然,也可以采用其他的格式来保存,在此不再赘述。
[0137] 具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,比如由QEMU和KVM来实现,等等。以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
[0138] 该虚拟机的监控装置具体可以集成在母机中。
[0139] 由上可知,本实施例的虚拟机的监控装置采用截获单元301截获子机中对I/O设备的访问进程,然后由模拟单元302根据该访问进程对该I/O设备的访问过程进行模拟,然后,再由监控单元303监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0140] 实施例四、
[0141] 相应的,本发明实施例还提供一种虚拟机的监控系统,包括本发明实施例提供的任一种虚拟机的监控装置,该虚拟机的监控装置具体可参见实施例三,该虚拟机的监控装置具体可以集成在母机中。
[0142] 例如,参见图4,该虚拟机的监控系统还可以包括子机,具体可以如下:
[0143] 母机401,用于截获子机402中对I/O设备的访问进程,根据该访问进程对该I/O设备的访问过程进行模拟,监控并统计该模拟过程中退出访问的次数和分布信息。
[0144] 其中,访问进程可以是mmio访问,也可以是portio访问。
[0145] 子机402,用于调用访问进程以对I/O设备进行访问。
[0146] 例如,母机401,具体可以用于根据该访问进程确定该I/O设备的地址,根据该访问进程确定该I/O设备的地址,并建立该I/O设备的地址与分配的I/O端口之间的映射关系,然后基于该映射关系对该I/O设备的访问过程进行模拟;再然后,对该模拟过程进行监控,以统计退出的访问的次数,并获取退出的访问所对应的I/O设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0147] 其中,该本地保存数据包括I/O设备的地址与子机中I/O端口的映射关系,例如:
[0148] (1)对于静态分配的portio/mmio的I/O端口范围,可以直接保存一份,作为本地保存数据,格式可以为
[0149] (2)对于动态分配的portio/mmio的I/O端口范围,可以新增一个ioctl,在动态更新IO设备bar时(pci_update_mappings),可以通过该ioctl来传送该动态更新的映射关系并进行保存,格式可以为
[0150] 当然,也可以采用其他的格式来保存,在此不再赘述。
[0151] 其中,母机401可以包括QEMU和KVM,例如,具体可以由KVM来截获子机402中对I/O设备的访问进程,然后由QEMU或KVM根据该访问进程对该I/O设备的访问过程进行模拟,并由KVM来监控并统计该模拟过程中退出访问的次数和分布信息,具体可参见实施例二,在此不再赘述。
[0152] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0153] 由上可知,本实施例的虚拟机的监控系统采用由母机401截获子机402中对I/O设备的访问进程,然后根据该访问进程对该I/O设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现母机401对子机402的I/O操作进行精细量化的监控统计,以便对子机402的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0154] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
[0155] 以上对本发明实施例所提供的一种虚拟机的监控方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈