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

文档序号:10470978阅读:408来源:国知局
一种虚拟机的监控方法、装置和系统的制作方法
【专利摘要】本发明实施例公开了一种虚拟机的监控方法、装置和系统;本发明实施例采用截获子机中对I/O设备的访问进程,根据该访问进程对该I/O设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/O操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
【专利说明】
一种虚拟机的监控方法、装置和系统
技术领域
[0001]本发明涉及计算机技术领域,具体涉及一种虚拟机的监控方法、装置和系统。
【背景技术】
[0002]系统虚拟化具有很好的隔离性、封装性、兼容性及硬件独立性,因此获得了广泛的使用。所谓系统虚拟化,也称为虚拟机(Virtual Machine),指的是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。其中,虚拟机所在的实体设备称为母机,而模拟出来的一个或多个系统则称为该母机的子机。
[0003]为了更好地了解虚拟机的运行状况,现有技术提出了对虚拟机的运行进行监控。现有的虚拟机监控一般都是从子机中对各个进程,比如中央处理器(CPU,CentralProcessing Unit)、内存和输入输出(1/0,input/output)设备等设备的使用情况来进行监控的,并据此来对虚拟机的性能进行评判。
[0004]在对现有技术的研究和实践过程中,本发明的发明人发现,在虚拟机中执行1操作时,会转化为执行I/o设备的port1或mm1 (内存映射I/0,Memory mapping 1/0)访问,这样会使得虚拟机退出,从而导致性能下降,但是目前的监控方法并无法对此进行监控,从而无法准确地对子机的故障进行定位。

【发明内容】

[0005]本发明实施例提供一种虚拟机的监控方法、装置和系统,可以对子机的1/0操作进行精细量化的监控统计,从而对子机的故障进行准确定位。
[0006]本发明实施例提供一种虚拟机的监控方法,包括:
[0007]截获子机中对1/0设备的访问进程;
[0008]根据所述访问进程对所述1/0设备的访问过程进行模拟;
[0009]监控并统计所述模拟过程中退出访问的次数和分布信息。
[0010]相应的,本发明实施例还提供一种虚拟机的监控装置,包括:
[0011]截获单元,用于截获子机中对1/0设备的访问进程;
[0012]模拟单元,用于根据所述访问进程对所述1/0设备的访问过程进行模拟;
[0013]监控单元,用于监控并统计所述模拟过程中退出访问的次数和分布信息。
[0014]此外,本发明实施例还提供一种虚拟机的监控系统,包括子机和本发明实施例提供的任一种虚拟机的监控装置,其中:
[0015]所述子机,用于调用访问进程以对1/0设备进行访问。
[0016]本发明实施例采用截获子机中对1/0设备的访问进程,根据该访问进程对该1/0设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的1/0操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
【附图说明】
[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设备的访问过程进行模拟,监控并统计该模拟过程中退出访问的次数和分布
?目息O
[0028]如图1所示,该虚拟机的监控方法的流程具体可以如下:
[0029]101、截获子机中对I/O设备的访问进程。例如,具体可以由KVM截获子机中对I/O设备的访问进程。
[0030]在X86-CPU中,对I/O设备的访问可以通过两种方式:1/0端口(port1)方式和内存映射I/O (mm1,memory mapping I/O)方式,其中,port1方式主要是将1/0设备的寄存器映射到10地址空间,port1方式可以通过IN/0UT指令访问1/0端口 ;而mm1方式主要是将1/0设备的寄存器映射到内存地址空间,mm1方式可以通过CPU访问内存指令,如move等访问内存方式来访问1/0端口。本发明实施例所说的访问进程可以是mm1方式的访问(简称mm1访问),也可以是port1方式的访问(简称port1访问)。
[0031]102、根据截获的访问进程对该1/0设备的访问过程进行模拟。
[0032]例如,具体可以由KVM或QEMU来对该1/0设备的访问过程进行模拟,比如,具体可以如下:
[0033](I)根据该访问进程确定该1/0设备的地址。
[0034]例如,具体可以根据该mm1访问或port1访问确定该1/0设备的地址。
[0035](2)为该I/O设备在子机中分配相应的I/O端口。
[0036]其中,根据不同的I/O设备,可以采用不同的方式为其在子机中分配I/O端口,例如,具体可以如下:
[0037]确定该I/O设备为外设部件互连标准(PCI,Peripheral ComponentInterconnect)设备时,采用动态分配方式为该I/O设备在子机中分配相应的I/O端口。
[0038]确定该I/O设备为指令集架构(ISA,Instruct1n Set Architecture)设备时,采用静态分配方式为该I/o设备在子机中分配相应的1/0端口。
[0039]此外,若是由QEMU来分配该1/0端口,则在分配了相应的1/0端口后,还可以绑定相应的回调函数,以便后续其他模块可以通过调用该回调函数将相关操作返回QEMU中进行处理,其中,回调函数就是一个通过函数指针调用的函数。
[0040](3)建立该1/0设备的地址与分配的1/0端口之间的映射关系。
[0041]在建立了映射关系之后,还可以保存该映射关系,以作为本地保存数据,以供后续使用。比如,保存静态分配的1/0设备的地址与子机中1/0端口的映射关系,作为本地保存数据;或者,保存动态分配的I/o设备的地址与子机中1/0端口的映射关系,作为本地保存数据,并利用预置的设备控制接口函数(1ctl)对其(即该本地保存数据中的“动态分配的1/0设备的地址与子机中1/0端口的映射关系”)进行动态更新。
[0042]其中,1ctl指的是设备驱动程序中对设备的1/0通道进行管理的函数。
[0043](4)基于该映射关系对该1/0设备的访问过程进行模拟。
[0044]需说明的是,KVM截获该访问进程后,如果该1/0设备在KVM中进行了模拟,就调用相关回调函数进行处理并返回QEMU,如果KVM未模拟此1/0设备,则将其返回QEMU中进行处理。
[0045]103、监控并统计该模拟过程中退出访问的次数和分布信息。
[0046]例如,可以由KVM来监控并统计该模拟过程中退出访问的次数和分布信息,具体可以如下:
[0047]对该模拟过程进行监控,以统计退出的访问的次数,获取退出的访问所对应的1/0设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0048]其中,该本地保存数据包括1/0设备的地址与子机中1/0端口的映射关系,具体可参见步骤102。
[0049]由上可知,本实施例采用截获子机中对1/0设备的访问进程,根据该访问进程对该I/o设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的I/o操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0050]实施例二、
[0051]根据实施例一所描述的方法,以下将举例作进一步详细说明。
[0052]在本实施例中,将以虚拟机的监控装置具体包括QEMU和KVM (即KVM内核模块)为例进行说明。
[0053]—种虚拟机的监控方法,如图2所示,具体流程可以如下:
[0054]201、KVM截获子机中对1/0设备的访问进程,比如mm1访问或port1访问。
[0055]202、KVM对访问进程进行模拟,调用相关回调函数进行处理并将处理结果返回给QEMU ;或者,若KVM未模拟此I/O设备,则将该访问进程传送给QEMU,由QEMU对访问进程进行模拟。
[0056]具体模拟时,可以先根据该访问进程确定该I/O设备的地址,并为该I/O设备在子机中分配相应的I/O端口,然后再建立该I/O设备的地址与分配的I/O端口之间的映射关系,并基于该映射关系对该I/O设备的访问过程进行模拟。
[0057]在QEMU中进行1设备模拟时,可以使用两种方式进行I/O设备的port1/mm1映射:
[0058](I)PCI设备的映射;
[0059]采用动态分配方式为该I/O设备在子机中分配相应的I/O端口,即其port1/mm1访问的映射关系为动态分配,其中,映射时,若为port1访问,则映射到1/0端口,并绑定回调函数,若为mm1访问,则映射到1/0内存(1/0 reg1n),并绑定回调函数。
[0060](2) ISA设备的映射;
[0061]采用静态分配方式为该1/0设备在子机中分配相应的1/0端口,即其port1/mm1访问的映射关系为静态分配。
[0062]其中,Linux子机中针对port1和mm1的1/0端口分配可以如下:
[0063](I) port1 的 1/0 端口分配;
[0064]端口范围:设备
[0065]OOOO-OOlf:dmaI
[0066]0020-0021:picl
[0067]0040-0043:timerO
[0068]0050-0053: timerI
[0069]0060-0060: keyboard
[0070]0064-0064: keyboard
[0071 ]0070-0077: rtc/* 针对 rtc 设备,端口范围为 8*/
[0072]0080-008f:dma page reg
[0073]OOaO-OOal:pic2
[0074]OOcO-OOdf:dma2
[0075]OOfO-OOff:fpu
[0076]03c0-03df: vga+
[0077]03f8_03ff: serial/* 针对串口设备,端口范围为 8*/
[0078]0cf8-0cff:PCI confI
[0079]afeO-afe3:ACPI GPE0_BLK
[0080]b000-b003:ACPI PMla_EVT_BLK
[0081]b004-b005:ACPI PMla_CNT_BLK
[0082]b008-b00b:ACPI PM_TMR
[0083]b010-b015:ACPI CPU throttle
[0084]c000_c03f: virt1-pci/* 针对 virt1-blk-pci 设备,端口范围为 64*/
[0085]c060_c07f: virt1-pci/* 针对 virt1-net-pci 设备,端口范围为 32*/
[0086]c080_c09f: virt1-pci/* 针对 virt1-balloon-pci 设备,端口范围为 32*/
[0087](2) mm1的I/O端口分配分配;
[0088]地址范围:设备
[0089]00000000-0009fbff: System RAM/* 端口范围为 O ?638k*/
[0090]00100000-dfffdfff: System RAM/* 端口范围为 Im ?3583m*/
[0091]01000000-014fl408:Kernel code/* 端口范围为 16m ?20m*/
[0092]014fl409-01738d5f:Kernel data/* 端口范围为 20m ?23m*/
[0093]017b2000-01850d03:Kernel bss/* 端口范围为 23m ?24m*/
[0094]02000000-09ffffff: Crash kernel/* 端口范围为 32m ?159m*/
[0095]febflOOO-febflfff: virt1-pci/* 针对 virt1-net-pci 设备之 MSI_X(中断),端口范围为4k*/
[0096]febf2000-febf2fff: virt1-pci/* 针对 virt1-blk-pci 设备之 MSI_X(中断),端口范围为4k*/
[0097]fecOOOOO-fecOOfff:1OAPIC 0/* 针对 kvm-1oapic 设备,端口范围为 4k*/
[0098]fed00000-fed003ff:HPET 0/* 针对 hpet 设备,端口范围为 Ik*/
[0099]fee00000-fee00fff: Local APIC/* 针对 kvm-lapic 设备,端口范围为 4k*/
[0100]100000000-21fffffff:System RAM
[0101]203、KVM对该模拟过程进行监控,以统计退出的访问的次数。
[0102]204、KVM获取退出的访问所对应的1/0设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0103]其中,该本地保存数据包括1/0设备的地址与子机中1/0端口的映射关系,例如:
[0104](I)对于QEMU中静态分配的port1/mm1的1/0端口范围,在KVM中可以直接保存一份,作为本地保存数据,格式可以为〈port1/mm1范围,对应子机10设备>。
[0105](2)对于QEMU中动态分配的port1/mm1的1/0端口范围,在KVM中可以新增一个1ctl,在QEMU动态更新10设备bar时(pci_update_mappings),可以通过该1ctl将动态更新的映射关系传给KVM进行保存,格式可以为〈port1/mm1范围,对应子机10设备>。
[0106]当然,也可以采用其他的格式来保存,在此不再赘述。
[0107]由上可知,本实施例采用由KVM截获子机中对1/0设备的访问进程,然后由KVM或QEMU根据该访问进程对该1/0设备的访问过程进行模拟,然后,再由KVM监控并统计该模拟过程中退出访问的次数和分布信息,从而实现母机对子机的1/0操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0108]实施例三、
[0109]相应的,本发明实施例还提供一种虚拟机的监控装置,如图3a所示,该虚拟机的监控装置包括截获单元301、模拟单元302和监控单元303,如下:
[0110]截获单元301,用于截获子机中对输入/输出设备的访问进程。
[0111]其中,该访问进程可以是mm1访问,也可以是port1访问。
[0112]模拟单元302,用于根据该访问进程对该1/0设备的访问过程进行模拟。
[0113]监控单元303,用于监控并统计该模拟过程中退出访问的次数和分布信息。
[0114]例如,其中,模拟单元302可以包括确定子单元、分配子单元、建立子单元和模拟子单元,如下:
[0115]确定子单元,用于根据该访问进程确定所述I/O设备的地址。
[0116]例如,具体可以根据该mm1访问或port1访问确定该I/O设备的地址。
[0117]分配子单元,用于为该I/O设备在子机中分配相应的输入/输出端口。
[0118]其中,根据不同的I/O设备,可以采用不同的方式为其在子机中分配I/O端口,即,分配子单元,具体可以用于执行如下操作:
[0119](I)PCI设备的映射;
[0120]确定该I/O设备为PCI设备时,采用动态分配方式为所述I/O设备在子机中分配相应的输入/输出端口 ;即其port1/mm1访问的映射关系为动态分配,其中,映射时,若为port1访问,则映射到1/0端口,并可以绑定回调函数,若为mm1访问,则映射到1/0内存(1/0 reg1n),并可以绑定回调函数。
[0121](2) ISA设备的映射;
[0122]确定该1/0设备为ISA设备时,采用静态分配方式为所述1/0设备在子机中分配相应的输入/输出端口 ;即其port1/mm1访问的映射关系为静态分配。
[0123]其中,Linux子机中针对port1和mm1的1/0端口分配具体可参见前面的实施例,在此不再赘述。
[0124]建立子单元,用于建立该1/0设备的地址与分配的输入/输出端口之间的映射关系;
[0125]模拟子单元,用于基于该映射关系对该1/0设备的访问过程进行模拟。
[0126]在建立了映射关系之后,还可以保存该映射关系,以作为本地保存数据,以供后续使用。比如,保存静态分配的1/0设备的地址与子机中1/0端口的映射关系,作为本地保存数据;或者,保存动态分配的1/0设备的地址与子机中1/0端口的映射关系,作为本地保存数据,并利用预置的设备控制接口函数(1ctl)对其(即该本地保存数据中的“动态分配的1/0设备的地址与子机中1/0端口的映射关系”)进行动态更新,即如图3b所示,该虚拟机的监控装置还可以包括保存单元304 ;
[0127]保存单元304,可以用于保存静态分配的1/0设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据。
[0128]保存单元,还可以用于保存动态分配的1/0设备的地址与子机中输入/输出端口的映射关系,作为本地保存数据;利用1ctl对该本地保存数据中的“动态分配的1/0设备的地址与子机中输入/输出端口的映射关系”进行动态更新。
[0129]其中,监控单元303可以包括统计子单元、获取子单元和比较子单元,如下:
[0130]统计子单元,用于对该模拟过程进行监控,以统计退出的访问的次数。
[0131]获取子单元,用于获取退出的访问所对应的1/0设备的地址。
[0132]比较子单元,用于将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0133]其中,该本地保存数据包括1/0设备的地址与子机中输入/输出端口的映射关系,例如:
[0134](I)对于静态分配的port1/mm1的1/0端口范围,可以直接保存一份,作为本地保存数据,格式可以为〈port1/mm1范围,对应子机1设备>。
[0135](2)对于动态分配的port1/mm1的I/O端口范围,可以新增一个1ctl,在动态更新1设备bar时(pci_update_mappings),可以通过该1ctl来传送该动态更新的映射关系并进行保存,格式可以为〈port1/mm1范围,对应子机1设备>。
[0136]当然,也可以采用其他的格式来保存,在此不再赘述。
[0137]具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,比如由QEMU和KVM来实现,等等。以上各个单元的具体实施可参见前面的实施例,在此不再赘述。
[0138]该虚拟机的监控装置具体可以集成在母机中。
[0139]由上可知,本实施例的虚拟机的监控装置采用截获单元301截获子机中对1/0设备的访问进程,然后由模拟单元302根据该访问进程对该1/0设备的访问过程进行模拟,然后,再由监控单元303监控并统计该模拟过程中退出访问的次数和分布信息,从而实现对子机的1/0操作进行精细量化的监控统计,以便对子机的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0140]实施例四、
[0141]相应的,本发明实施例还提供一种虚拟机的监控系统,包括本发明实施例提供的任一种虚拟机的监控装置,该虚拟机的监控装置具体可参见实施例三,该虚拟机的监控装置具体可以集成在母机中。
[0142]例如,参见图4,该虚拟机的监控系统还可以包括子机,具体可以如下:
[0143]母机401,用于截获子机402中对1/0设备的访问进程,根据该访问进程对该1/0设备的访问过程进行模拟,监控并统计该模拟过程中退出访问的次数和分布信息。
[0144]其中,访问进程可以是mm1访问,也可以是port1访问。
[0145]子机402,用于调用访问进程以对1/0设备进行访问。
[0146]例如,母机401,具体可以用于根据该访问进程确定该1/0设备的地址,根据该访问进程确定该I/o设备的地址,并建立该1/0设备的地址与分配的1/0端口之间的映射关系,然后基于该映射关系对该I/o设备的访问过程进行模拟;再然后,对该模拟过程进行监控,以统计退出的访问的次数,并获取退出的访问所对应的I/o设备的地址,将该地址与本地保存数据进行比较,以确定退出访问的分布信息。
[0147]其中,该本地保存数据包括1/0设备的地址与子机中1/0端口的映射关系,例如:
[0148](I)对于静态分配的port1/mm1的1/0端口范围,可以直接保存一份,作为本地保存数据,格式可以为〈port1/mm1范围,对应子机10设备>。
[0149](2)对于动态分配的port1/mm1的1/0端口范围,可以新增一个1ctl,在动态更新10设备bar时(pci_update_mappings),可以通过该1ctl来传送该动态更新的映射关系并进行保存,格式可以为〈port1/mm1范围,对应子机10设备>。
[0150]当然,也可以采用其他的格式来保存,在此不再赘述。
[0151]其中,母机401可以包括QEMU和KVM,例如,具体可以由KVM来截获子机402中对I/o设备的访问进程,然后由QEMU或KVM根据该访问进程对该1/0设备的访问过程进行模拟,并由KVM来监控并统计该模拟过程中退出访问的次数和分布信息,具体可参见实施例二,在此不再赘述。
[0152]以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0153]由上可知,本实施例的虚拟机的监控系统采用由母机401截获子机402中对I/O设备的访问进程,然后根据该访问进程对该I/o设备的访问过程进行模拟,然后,监控并统计该模拟过程中退出访问的次数和分布信息,从而实现母机401对子机402的I/O操作进行精细量化的监控统计,以便对子机402的故障进行准确定位,使得后续可以根据该故障原因对虚拟机的性能进行改善。
[0154]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
[0155]以上对本发明实施例所提供的一种虚拟机的监控方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
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任一项所述的虚拟机的监控装置,其中: 所述子机,用于调用访问进程以对输入/输出设备进行访问。
【文档编号】G06F11/30GK105824682SQ201510006010
【公开日】2016年8月3日
【申请日】2015年1月5日
【发明人】贺永红
【申请人】深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1