CN116775513A - 支持设备直通虚拟机的物理内存动态分配系统及方法 - Google Patents
支持设备直通虚拟机的物理内存动态分配系统及方法 Download PDFInfo
- Publication number
- CN116775513A CN116775513A CN202310700212.XA CN202310700212A CN116775513A CN 116775513 A CN116775513 A CN 116775513A CN 202310700212 A CN202310700212 A CN 202310700212A CN 116775513 A CN116775513 A CN 116775513A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- physical
- page
- memory
- kernel module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 110
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013507 mapping Methods 0.000 claims abstract description 54
- 230000008569 process Effects 0.000 claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 description 7
- 238000005259 measurement Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种支持设备直通虚拟机的物理内存动态分配系统及方法,包括:IO队列:用于虚拟机的共享与重映射,第一时间检查到虚拟机新发送的IO命令;哈希表:用于维护虚拟机物理地址与主机物理地址映射状态,检查每一个虚拟机物理地址是否映射到真实物理地址上;内存池:用于给处理IO缺页的内核模块进行内存分配;共享内存:用于同步页表映射,保证缺页处理过程中页表的一致性。本发明能够为设备直通虚拟机支持动态分配内存的能力,从而同时取得设备虚拟化的高性能与内存管理中的超售。
Description
技术领域
本发明涉及虚拟化技术领域,具体地,涉及一种支持设备直通虚拟机的物理内存动态分配系统及方法。
背景技术
云服务在当下得到了广泛的普及,这一商业模式的成功很大程度上得益于虚拟化技术:云厂商能够在一台物理设备上创建多个虚拟机租售给用户,如此云厂商的有限的计算资源将得到更高收益的整合,用户也能够以相对更加低廉的价格购买云服务。
设备虚拟化是虚拟化研究领域学术界和工业界都非常重视的问题,其决定了云虚拟机存储,网络的性能。长期以来设备虚拟化主要有三种实现方式,分别是设备模拟,半虚拟化,设备直通。
第一类设备模拟是指虚拟机监控器通过纯软件的方式提供给虚拟机一个设备的抽象,虚拟机每次读写设备的寄存器操作设备其实都会导致一次到虚拟机监控器中的下陷,虚拟机监控器模拟设备行为通过中断以及读写虚拟机内存的方式让虚拟机认为它正在使用真实的设备。设备模拟的好处在于它对虚拟机透明,并且能够模拟任意的设备,然而其由于在每次读写设备寄存器时都会产生虚拟机下陷,性能远差于其他两种方式。
半虚拟化的方式打破了虚拟机不知道自己是虚拟机的假设,提出了一套新的驱动设备交互协议,虚拟机中的驱动不再是原来设备的驱动而是使用专为虚拟化设计的半虚拟化驱动,它在每次IO过程中准备好这次IO所需要的内存,并通知虚拟机监控器中的半虚拟化设备处理,半虚拟化方式相比设备模拟有较少的虚拟机下陷,性能介于设备模拟和设备直通之间。
设备直通则是通过硬件的能力,将设备所在的IOMMU(Input-Output MemoryManagement Unit)组直接透传给虚拟机,虚拟机独享这个设备,如此虚拟机能够直接操作设备,避免了虚拟机IO过程中的下陷和虚拟机监控器的模拟,从而提供给虚拟机接近于物理操作系统的IO性能。因为拥有最好的设备虚拟化性能,设备直通与设备上的SRIOV(Single Root I/O Virtualization)机制通常结合在一起得到工业界的广泛使用。
然而设备直通的虚拟化方式并非没有缺点,它相比其他方式牺牲了内存分配的灵活性:虚拟机监控器必须将承诺提供给虚拟机的所有内存在启动时全部分配并完成映射。这是因为现有的大多数设备并不能够支持处理DMA缺页,它们要求在设备DMA过程中,对应的IO内存页必须在IOMMU中映射到一个物理页,于是在物理操作系统做DMA时,会在准备好内存页之后,将内存页固定住,避免内存页使用惰性分配或者在运行过程中发生内存迁移与回收。这个问题在物理操作系统中并不严重,因为每次DMA的内存并不多,而且在DMA完成之后,这部分内存还能够解除固定。然后在虚拟化中,这一个问题被放大得非常严重:虚拟机可能将任意虚拟机物理页用于DMA,所以虚拟机监控器必须保证任意虚拟机物理页在任一时刻都映射到物理页面上,目前主流虚拟机监控器使用在虚拟机启动时提前分配虚拟机能够使用的所有内存并完成映射来解决这一个问题。然而,在这种情况下,虚拟机监控器丧失了对内存管理的灵活性,特别是内存资源超售的能力,导致不可忽略的内存浪费。
专利文献CN106909509A(申请号:CN201710116432.2)公开了一种虚拟机进程代码的无代理分页式度量系统和方法,系统包括捕获模块、度量模块、对比模块、基值库和日志;捕获模块设置度量点,捕获虚拟机中发生的系统事件,采用VMI技术重构虚拟机当前执行进程的进程信息;度量模块根据进程信息,将虚拟机进程代码按照虚拟机物理页大小进行划分,为每个页生成页信息,并根据页信息度量被加载进入虚拟机物理内存的代码页,生成度量信息;对比模块根据代码页的度量信息,结合基值库中的基值进行对比,分析其完整性,并将对比信息写入日志;基值库中存储代码页的基值信息;日志记录代码页度量过程的对比信息。然而该专利无法解决目前存在的技术问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种支持设备直通虚拟机的物理内存动态分配系统及方法。
根据本发明提供的支持设备直通虚拟机的物理内存动态分配系统,包括:
IO队列:用于虚拟机的共享与重映射,第一时间检查到虚拟机新发送的IO命令;
哈希表:用于维护虚拟机物理地址与主机物理地址映射状态,检查每一个虚拟机物理地址是否映射到真实物理地址上;
内存池:用于给处理IO缺页的内核模块进行内存分配;
共享内存:用于同步页表映射,保证缺页处理过程中页表的一致性。
优选的,通过虚拟机监控器在虚拟机的共享内存上扫描出虚拟机用于IO的虚拟机物理页,并且通过控制写设备的寄存器来控制一个IO命令是否提交,通过读与虚拟机的共享内存获悉虚拟机对于DMA结果的执行情况,通过写设备的完成队列寄存器来通知设备虚拟机此次IO已经完成。
优选的,将IO队列所在的内存共享给虚拟机监控器中的内核模块,并将虚拟机看到的门铃寄存器重映射到该共享内存中,此时每次虚拟机更新门铃寄存器时都被位于虚拟机监控器的内核模块捕捉到,内核模块通过读共享内存的方式拿到这次的IO命令,在检查并处理这次IO命令中导致的IO缺页的问题后,写直通给虚拟机的物理设备的真实门铃寄存器,让物理设备处理这次IO命令。
优选的,使用一个内存中的哈希表来记录虚拟机物理页与真实物理页的映射情况,该哈希表用于处理IO缺页的内核模块在转发虚拟机一次IO命令的过程中检查里面的虚拟机物理地址是否会导致IO缺页;
位于虚拟机监控器的内核模块在设备处理IO请求之前拿到这次虚拟机IO的命令,该命令中包括这次IO所使用的物理页集合,通过哈希表记录所有虚拟机物理页的页表映射状态,对于每一个物理页,通过查询哈希表来获知虚拟机物理页是否映射到一个主机物理页,在给虚拟机物理页增加一个新的映射之后,该新的映射也添加入该哈希表中,通过共享内存同步页表的方式实时更新该哈希表。
优选的,在虚拟机监控器处理一个缺页之后,将虚拟机物理地址与主机物理地址的映射添加到一个共享内存中,内核模块通过轮询获取该映射,然后同步到虚拟机监控器自身进程页表和虚拟机监控器为虚拟机维护的第二级页表中。
根据本发明提供的支持设备直通虚拟机的物理内存动态分配方法,执行如下步骤:
步骤1:用更改的虚拟机监控器内核启动虚拟机监控器;
步骤2:通过写虚拟机监控器的配置文件开启设备的SR-IOV功能,将一个设备透传给多个虚拟机;
步骤3:安装处理虚拟机IO缺页的内核模块;
步骤4:运行虚拟机,给每个虚拟机配置一个直通设备;
步骤5:虚拟机在运行过程中使用直通设备的IO命令全部通过运行在虚拟机监控器中的内核模块检查并转发;
步骤6:内核模块通过共享内存与虚拟机监控器同步各自新增加的映射;
步骤7:虚拟机运行结束,关闭虚拟机;
步骤8:将处理虚拟机IO缺页的内核模块从虚拟机监控器内核中删除。
优选的,通过虚拟机监控器在虚拟机的共享内存上扫描出虚拟机用于IO的虚拟机物理页,并且通过控制写设备的寄存器来控制一个IO命令是否提交,通过读与虚拟机的共享内存获悉虚拟机对于DMA结果的执行情况,通过写设备的完成队列寄存器来通知设备虚拟机此次IO已经完成。
优选的,将IO队列所在的内存共享给虚拟机监控器中的内核模块,并将虚拟机看到的门铃寄存器重映射到该共享内存中,此时每次虚拟机更新门铃寄存器时都被位于虚拟机监控器的内核模块捕捉到,内核模块通过读共享内存的方式拿到这次的IO命令,在检查并处理这次IO命令中导致的IO缺页的问题后,写直通给虚拟机的物理设备的真实门铃寄存器,让物理设备处理这次IO命令。
优选的,使用一个内存中的哈希表来记录虚拟机物理页与真实物理页的映射情况,该哈希表用于处理IO缺页的内核模块在转发虚拟机一次IO命令的过程中检查里面的虚拟机物理地址是否会导致IO缺页;
位于虚拟机监控器的内核模块在设备处理IO请求之前拿到这次虚拟机IO的命令,该命令中包括这次IO所使用的物理页集合,通过哈希表记录所有虚拟机物理页的页表映射状态,对于每一个物理页,通过查询哈希表来获知虚拟机物理页是否映射到一个主机物理页,在给虚拟机物理页增加一个新的映射之后,该新的映射也添加入该哈希表中,通过共享内存同步页表的方式实时更新该哈希表。
优选的,在虚拟机监控器处理一个缺页之后,将虚拟机物理地址与主机物理地址的映射添加到一个共享内存中,内核模块通过轮询获取该映射,然后同步到虚拟机监控器自身进程页表和虚拟机监控器为虚拟机维护的第二级页表中。
与现有技术相比,本发明具有如下的有益效果:
(1)本发明支持设备直通虚拟机不用提前分配所有内存,将内存管理的灵活性特别是内存资源超售的能力释放给虚拟机监控器,虚拟机监控器能够打破物理内存资源的限制,同时运行更多数量的设备直通虚拟机;
(2)本发明对虚拟机透明,不需要更改虚拟机的代码;
(3)本发明无需依赖设备处理IO缺页的能力,也不需要针对一个特定型号的设备进行适配,只要符合某一类协议的设备都能够直接使用;
(4)本发明对设备直通虚拟机的性能影响足够小,在虚拟机的IO过程中虚拟机始终不用下陷到虚拟机监控器。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明在虚拟机系统中所处的位置图;
图2为现有系统中直通设备的虚拟机运行架构图;
图3为本发明中拥有直通设备的虚拟机运行架构图;
图4为本发明的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
如图1,本发明提供了一种通用的软件框架,它运行在虚拟机监控器一个物理CPU上的内核模块,它提前处理好虚拟机IO中潜在的缺页,包括四个独立的设计,分别是虚拟机IO队列的共享与重映射,第一时间检查到虚拟机新发送的IO命令;维护虚拟机物理地址与主机物理地址映射状态的哈希表,用来检查每一个虚拟机物理地址是否映射到真实物理地址上;专门用于虚拟机DMA所需内存的内存池,保障虚拟机的IO缺页处理在内存紧缺时能够快速进行;同步页表映射的共享内存,保证了缺页处理过程中页表的一致性。
本发明的第一个设计:本发明通过将常规虚拟机在做一次IO之前会通过写IO队列的方式告诉设备将哪些的页面写出或者以DMA的方式写入到哪些页面。虚拟机在写了一个新的IO命令之后,会写设备的门铃(Doorbell)寄存器来通知设备进行处理。本框架将IO队列所在的内存共享给虚拟机监控器中的内核模块,并将虚拟机看到的门铃寄存器重映射到该共享内存中的某个位置。此时每次虚拟机更新门铃寄存器都能够被位于虚拟机监控器的内核模块捕捉到,并且此内核模块还能够通过读共享内存的方式拿到这次的IO命令,在检查并处理这次IO命令中可能导致的IO缺页之后,此内核模块会写直通给虚拟机的物理设备的真实门铃寄存器,来让物理设备处理这个命令。所述虚拟机IO队列的共享与重映射的方案如附图3所示。
本发明的第二个设计:一个内存中的哈希表记录虚拟机物理页与真实物理页的映射情况:位于虚拟机监控器的内核模块能够在设备处理IO请求之前拿到这次虚拟机IO的命令,这个命令中包括这次IO所使用的物理页集合。通常一次IO会包括多个物理页,此时该命令中会包括一个物理页面的地址,而这个物理页面会包括需要被使用的物理页面甚至是第二级指向包含所有物理地址的物理页。此内核模块会遵从设备通用的协议,找到所有用于此次IO的虚拟机物理页。该框架会维护一个哈希表来记录所有虚拟机物理页的页表映射状态,对于每一个物理页,会通过查询此哈希表来获知这个虚拟机物理页是否映射到了一个主机物理页,在给虚拟机物理页增加了一个新的映射之后,该映射也会添加入该哈希表中,此外共享内存同步页表的方式也会实时更新该哈希表。
本发明的第三个设计:一个设备IO映射专用内存池,这部分内存将与虚拟机监控器其他内存隔离出来仅作为处理设备IO缺页的内核模块给虚拟机IO请求分配物理页使用,这部分物理页面的分配和回收都由此内核模块负责,目的是为了保证在内存紧缺时设备处理IO所访问的物理内存能够得到保障。
本发明的第四个设计:高效的页表映射同步机制。在虚拟机运行时,存在多个进程同时更改虚拟机的页表,包括虚拟机监控器在模拟设备需要读写更新虚拟机的内存,虚拟机监控器给虚拟机处理的第二级页表的缺页,本方法提出的内核模块处理的设备IO缺页。这些页表需要一种快速的同步机制保证虚拟机,虚拟机监控器,内核模块看到的页表映射是一致的,于是本方法设计了一个高效的页表映射同步机制,在虚拟机监控器处理一个缺页之后,会将虚拟机物理地址与主机物理地址的映射添加到一个共享内存中,这个映射将很快被内核模块轮询到。在内核模块这一侧添加的映射同理会被同步到虚拟机监控器自身进程页表和虚拟机监控器为虚拟机维护的第二级页表中。为了降低轮询共享内存的内核模块与虚拟机监控器的工作量,本方法使用一个页表映射压缩机制将多个连续的页表映射表示在一项映射之中。
仅用一个虚拟机监控器中隔离出的CPU核运行本框架,能够节约虚拟机监控器的物理资源。这个内核模块将以循环的方式轮询虚拟机的IO队列以及同步页表映射的共享内存
针对虚拟机IO队列的共享与重映射,此过程中虚拟机监控器能够在与虚拟机的共享内存上扫描出虚拟机用于IO的虚拟机物理页,并且能够通过控制写设备的寄存器来控制一个IO命令是否提交,能够通过读与虚拟机的共享内存获悉虚拟机对于DMA结果的执行情况,能够通过写设备的寄存器来通知设备虚拟机此次IO已经完成。
使用一个内存中的哈希表来记录虚拟机物理页与真实物理页的映射情况,该哈希表可以用于处理IO缺页的内核模块在转发虚拟机一次IO命令的过程中检查里面的虚拟机物理地址是否会导致IO缺页。
使用一个设备IO缺页专用内存池给处理IO缺页的内核模块进行分配。该过程目的是为了保证在内存紧缺时设备处理IO所访问的物理内存能够得到保障。
使用高效的页表映射同步机制,虚拟机监控器进程自身缺页添加的页表映射,虚拟机监控器给虚拟机处理的第二级页表的缺页添加的页表映射,本方法提出的内核模块处理的设备IO缺页添加的页表映射都能够在这个页表同步机制中高效的更新到各个页表中。
与现有系统设计(图2)相比,本发明(图3)可以支持不提前分配映射虚拟机所有物理内存,实现虚拟机监控器内存分配的灵活性与超售。
如图4所示,为本发明一种支持设备直通虚拟机动态内存分配的软件框架。结合图4对以下步骤进行详细描述:
在步骤401中,虚拟机写入一个新的IO命令,IO命令中包括这次IO使用的虚拟机物理内存地址,并更新门铃寄存器。然后执行步骤402。
在步骤402中,虚拟机监控器中的内核模块轮询到门铃寄存器的更改,拿到这次的IO命令,然后执行步骤403。
在步骤403中,内核模块检查IO命令中用到的每个虚拟机物理页是否映射到真实物理页,如果所有虚拟出物理页面都映射到了主机物理地址页上则执行步骤405,否则执行步骤404。
在步骤404中,内核模块分配物理页面给为映射真实物理页的虚拟机物理页,并完成映射,然后执行步骤405。
在步骤405中,内核模块将新的映射写入同步页表映射的共享内存,然后执行步骤406。
在步骤406中,内核模块写设备的门铃寄存器通知设备处理,然后执行步骤407。
在步骤407中,设备处理完成后直接中断通知虚拟机,流程完成。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种支持设备直通虚拟机的物理内存动态分配系统,其特征在于,包括:
IO队列:用于虚拟机的共享与重映射,第一时间检查到虚拟机新发送的IO命令;
哈希表:用于维护虚拟机物理地址与主机物理地址映射状态,检查每一个虚拟机物理地址是否映射到真实物理地址上;
内存池:用于给处理IO缺页的内核模块进行内存分配;
共享内存:用于同步页表映射,保证缺页处理过程中页表的一致性。
2.根据权利要求1所述的支持设备直通虚拟机的物理内存动态分配系统,其特征在于,通过虚拟机监控器在虚拟机的共享内存上扫描出虚拟机用于IO的虚拟机物理页,并且通过控制写设备的寄存器来控制一个IO命令是否提交,通过读与虚拟机的共享内存获悉虚拟机对于DMA结果的执行情况,通过写设备的完成队列寄存器来通知设备虚拟机此次IO已经完成。
3.根据权利要求1所述的支持设备直通虚拟机的物理内存动态分配系统,其特征在于,将IO队列所在的内存共享给虚拟机监控器中的内核模块,并将虚拟机看到的门铃寄存器重映射到该共享内存中,此时每次虚拟机更新门铃寄存器时都被位于虚拟机监控器的内核模块捕捉到,内核模块通过读共享内存的方式拿到这次的IO命令,在检查并处理这次IO命令中导致的IO缺页的问题后,写直通给虚拟机的物理设备的真实门铃寄存器,让物理设备处理这次IO命令。
4.根据权利要求1所述的支持设备直通虚拟机的物理内存动态分配系统,其特征在于,使用一个内存中的哈希表来记录虚拟机物理页与真实物理页的映射情况,该哈希表用于处理IO缺页的内核模块在转发虚拟机一次IO命令的过程中检查里面的虚拟机物理地址是否会导致IO缺页;
位于虚拟机监控器的内核模块在设备处理IO请求之前拿到这次虚拟机IO的命令,该命令中包括这次IO所使用的物理页集合,通过哈希表记录所有虚拟机物理页的页表映射状态,对于每一个物理页,通过查询哈希表来获知虚拟机物理页是否映射到一个主机物理页,在给虚拟机物理页增加一个新的映射之后,该新的映射也添加入该哈希表中,通过共享内存同步页表的方式实时更新该哈希表。
5.根据权利要求1所述的支持设备直通虚拟机的物理内存动态分配系统,其特征在于,在虚拟机监控器处理一个缺页之后,将虚拟机物理地址与主机物理地址的映射添加到一个共享内存中,内核模块通过轮询获取该映射,然后同步到虚拟机监控器自身进程页表和虚拟机监控器为虚拟机维护的第二级页表中。
6.一种支持设备直通虚拟机的物理内存动态分配方法,其特征在于,采用权利要求1所述的支持设备直通虚拟机的物理内存动态分配系统,执行如下步骤:
步骤1:用更改的虚拟机监控器内核启动虚拟机监控器;
步骤2:通过写虚拟机监控器的配置文件开启设备的SR-IOV功能,将一个设备透传给多个虚拟机;
步骤3:安装处理虚拟机IO缺页的内核模块;
步骤4:运行虚拟机,给每个虚拟机配置一个直通设备;
步骤5:虚拟机在运行过程中使用直通设备的IO命令全部通过运行在虚拟机监控器中的内核模块检查并转发;
步骤6:内核模块通过共享内存与虚拟机监控器同步各自新增加的映射;
步骤7:虚拟机运行结束,关闭虚拟机;
步骤8:将处理虚拟机IO缺页的内核模块从虚拟机监控器内核中删除。
7.根据权利要求6所述的支持设备直通虚拟机的物理内存动态分配方法,其特征在于,通过虚拟机监控器在虚拟机的共享内存上扫描出虚拟机用于IO的虚拟机物理页,并且通过控制写设备的寄存器来控制一个IO命令是否提交,通过读与虚拟机的共享内存获悉虚拟机对于DMA结果的执行情况,通过写设备的完成队列寄存器来通知设备虚拟机此次IO已经完成。
8.根据权利要求6所述的支持设备直通虚拟机的物理内存动态分配方法,其特征在于,将IO队列所在的内存共享给虚拟机监控器中的内核模块,并将虚拟机看到的门铃寄存器重映射到该共享内存中,此时每次虚拟机更新门铃寄存器时都被位于虚拟机监控器的内核模块捕捉到,内核模块通过读共享内存的方式拿到这次的IO命令,在检查并处理这次IO命令中导致的IO缺页的问题后,写直通给虚拟机的物理设备的真实门铃寄存器,让物理设备处理这次IO命令。
9.根据权利要求6所述的支持设备直通虚拟机的物理内存动态分配方法,其特征在于,使用一个内存中的哈希表来记录虚拟机物理页与真实物理页的映射情况,该哈希表用于处理IO缺页的内核模块在转发虚拟机一次IO命令的过程中检查里面的虚拟机物理地址是否会导致IO缺页;
位于虚拟机监控器的内核模块在设备处理IO请求之前拿到这次虚拟机IO的命令,该命令中包括这次IO所使用的物理页集合,通过哈希表记录所有虚拟机物理页的页表映射状态,对于每一个物理页,通过查询哈希表来获知虚拟机物理页是否映射到一个主机物理页,在给虚拟机物理页增加一个新的映射之后,该新的映射也添加入该哈希表中,通过共享内存同步页表的方式实时更新该哈希表。
10.根据权利要求6所述的支持设备直通虚拟机的物理内存动态分配方法,其特征在于,在虚拟机监控器处理一个缺页之后,将虚拟机物理地址与主机物理地址的映射添加到一个共享内存中,内核模块通过轮询获取该映射,然后同步到虚拟机监控器自身进程页表和虚拟机监控器为虚拟机维护的第二级页表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310700212.XA CN116775513A (zh) | 2023-06-13 | 2023-06-13 | 支持设备直通虚拟机的物理内存动态分配系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310700212.XA CN116775513A (zh) | 2023-06-13 | 2023-06-13 | 支持设备直通虚拟机的物理内存动态分配系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775513A true CN116775513A (zh) | 2023-09-19 |
Family
ID=88009260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310700212.XA Pending CN116775513A (zh) | 2023-06-13 | 2023-06-13 | 支持设备直通虚拟机的物理内存动态分配系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775513A (zh) |
-
2023
- 2023-06-13 CN CN202310700212.XA patent/CN116775513A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11042297B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
JP5347061B2 (ja) | フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置 | |
JP5376496B2 (ja) | 仮想マシンデバイスの動的割り当て | |
JP5039029B2 (ja) | 動的論理パーティショニングによるコンピューティング環境におけるコンピュータ・メモリの管理 | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
CN104583979A (zh) | 动态物理存储器分区技术 | |
CN105808167B (zh) | 一种基于sr-iov的链接克隆的方法、存储设备及系统 | |
CN102141931B (zh) | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 | |
CN103282881A (zh) | 通过虚拟化直接共享智能设备 | |
US10268592B2 (en) | System, method and computer-readable medium for dynamically mapping a non-volatile memory store | |
CN102609305A (zh) | 一种服务器集群中内存共享方法 | |
CN104104705B (zh) | 分布式存储系统的接入方法和设备 | |
CN104503825A (zh) | 一种基于kvm混合式设备虚拟化方法 | |
CN114662088A (zh) | 用于提供对内核和用户空间存储器区域的访问的技术 | |
CN102725746B (zh) | 对分布式计算机系统中内存的管理方法和装置 | |
US20240143377A1 (en) | Overlay container storage driver for microservice workloads | |
US20210232383A1 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
CN112202855A (zh) | 裸金属服务器与弹性块存储的通信装置、智能网卡和系统 | |
CN116775513A (zh) | 支持设备直通虚拟机的物理内存动态分配系统及方法 | |
US11900142B2 (en) | Improving memory access handling for nested virtual machines | |
CN102419693A (zh) | 一种管理存储单元的磁盘空间的方法和电子设备 | |
CN111177027A (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
CN117692322B (zh) | 网卡配置方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |