CN115756742A - 直通i/o虚拟化的性能优化设计方法、系统、介质及设备 - Google Patents
直通i/o虚拟化的性能优化设计方法、系统、介质及设备 Download PDFInfo
- Publication number
- CN115756742A CN115756742A CN202211455079.8A CN202211455079A CN115756742A CN 115756742 A CN115756742 A CN 115756742A CN 202211455079 A CN202211455079 A CN 202211455079A CN 115756742 A CN115756742 A CN 115756742A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- dma buffer
- dma
- equipment
- page table
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供了一种直通I/O虚拟化的性能优化设计方法、系统、介质及设备,包括:I/O页表配置步骤;DMA缓冲区检测步骤;DMA缓冲区动态迁移步骤。本发明关注到了现有技术并未关注到的性能开销,并且设计方案很好地解决了这部分开销;本发明的设计方案围绕I/O设备进行解决方案设计,相较于以往工作围绕CPU设计方案,更加符合当前硬件发展趋势;本发明的设计方案对于客户机虚拟机无感,客户虚拟机可以不需要修改源码,而可以享受到本发明涉及方案带来的性能提升。
Description
技术领域
本发明涉及虚拟化的技术领域,具体地,涉及直通I/O虚拟化的性能优化设计方法、系统、介质及设备,尤其涉及NUMA场景下虚拟化设备直通技术中IOMMU和DMA缓冲区的性能优化。
背景技术
云计算的广泛普及,使得虚拟化技术得到了广泛的关注和重视。国家算力产业的建设又进一步助推了云计算产业的发展。虚拟化技术作为云计算技术的核心和基石,发挥着重要作用。虚拟化技术根据虚拟的资源类别可以进一步细分为CPU虚拟化技术、内存虚拟化技术和I/O虚拟化技术。分别对应于处理器、内存和I/O三种资源,对上层应用提供统一的资源抽象。
半虚拟化技术是当前较为流行的I/O虚拟化技术方案,但仍面临着虚拟化管理开销大、需要修改客户机驱动代码等问题,有被设备直通技术取代的发展趋势。半虚拟化技术是在客户虚拟机和虚拟机监控器之间约定一套新的接口。通过这套接口客户虚拟机和虚拟机监控器可以避免完全模拟技术中大量的陷入操作,极大地降低的客户虚拟机和虚拟机监控器之间交互的开销,也极大地提高了I/O虚拟化的性能。但随着I/O设备逐步发展,速率逐步提升,半虚拟化技术的虚拟化管理性能开销成为了I/O虚拟化技术发展中急需解决的问题。
设备直通技术即将物理设备直接分配给一个虚拟机,虚拟机可以排他性地使用这个物理设备。同时物理设备本身的虚拟化能力也在发展,出现了多种从硬件层面出发的I/O虚拟化方案。比如SRIOV(Single Root I/O Virtualization),可以将一个物理设备抽象出多个VF(Virtual Funct ion,虚拟函数),其中每个VF都可以作为一个设备实体提供给客户虚拟机排他性地使用。
更具体地,在设备直通方案中,IOMMU(I/O Memory Management Unit,I/O内存管理单元)是其中的必需的硬件组件之一。IOMMU的作用类似于MMU的作用,同样是提供隔离功能。CPU MMU是提供进程间的地址空间的隔离。而IOMMU则提供了I/O设备之间的隔离,为每个I/O设备,甚至使用I/O设备的每个进程都配置了一个独立的地址空间。独立地址空间的映射是通过I/O页表来完成的。IOMMU的硬件拓扑位于PCI的主桥上,I/O设备的访存请求都会通过PCI主桥上的IOMMU,IOMMU进行地址翻译之后,将设备所持有的虚拟地址翻译为真实的物理地址,再进行访存操作。但IOMMU硬件的引入给I/O操作带来了更大的性能开销,例如IO页表翻译的开销,IO页表配置的开销等。其中I/O页表是类似于MMU页表的数据结构。
另一方面,随着单核的频率和性能提升到达瓶颈后,处理器的发展转向多核和NUMA架构(Non-Uniform Memory Access,非均衡内存访问),以求用横向扩展来提升整体性能。NUMA将原先单一的处理器划分为多个节点,每个节点拥有自己的处理器和内存。当处理器访问非本节点的内存时,内存的访问延迟会显著上升。当前大部分服务器处理器中都采用了NUMA架构。NUMA架构已经成为当前主流的服务器处理器设计思路。
NUMA架构带来更好扩展性的同时,也带来了性能问题。由于NUMA架构将CPU和内存分配到不同的节点上,这就产生一种特殊的内存访问类型:跨节点的内存访问。例如,节点0的CPU访问节点1的内存上的数据,则需要跨过节点间的通信桥梁才能访问。而节点0的CPU访问同节点内的内存则不需要跨过这一通信桥梁。跨节点的内存访问中增加的流程产生了一定的性能开销。其中包括单次内存访问延迟的上升,以及多次内存访问的总体带宽的限制问题。具体来看,一是单次跨节点访存的开销比节点内访存的开销更大。一个进程如果频繁大量地产生跨节点的内存访问,性能会有大幅度的下降。同时由于底层的NUMA拓扑时常对上隐藏,在真实应用场景中常会造成意外的性能开销。第二是由于内存控制器的带宽限制,如果多个处理器同时发起对于一个节点的访存操作时,节点间的通信桥梁常常会有访存阻塞的情况,此时这些跨节点访存将会产生迟滞(Memory Stall),反应到具体的进程上,也会导致访存开销上升,这也是当前NUMA场景性能问题的来源之一。
具体地,NUMA架构下的内存分布不均衡的特点启发了一系列的发明创新,都是对于CPU访问远端节点内存的性能开销进行优化。但被广为忽略的是,NUMA架构的内存分布不均衡的问题同时也导致了I/O设备访问远端内存性能的问题。为阐述方便,我们将当前任务所在的CPU称为工作CPU,工作CPU所在的NUMA节点称为CPU本地节点,除CPU本地节点之外的节点称之为CPU远端节点。同样的从I/O设备的角度来看,我们将I/O设备所在的NUMA节点称为设备本地节点,其余节点称之为设备远端节点。
因此,需要提出一种新的技术方案以改善上述技术问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种直通I/O虚拟化的性能优化设计方法、系统、介质及设备。
根据本发明提供的一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,所述方法包括如下步骤:
步骤S1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;
步骤S2:在虚拟机监控器中增加DMA缓冲区检测步骤,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;
步骤S3:在虚拟机监控器中增加DMA缓冲区动态迁移步骤,在步骤S2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作。
优选地,所述步骤S1将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
优选地,所述步骤S2通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
优选地,所述步骤S3以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
本发明还提供一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,所述系统包括如下模块:
模块M1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;
模块M2:在虚拟机监控器中增加DMA缓冲区检测模块,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;
模块M3:在虚拟机监控器中增加DMA缓冲区动态迁移模块,在模块M2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作。
优选地,所述模块M1将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
优选地,所述模块M2通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
优选地,所述模块M3以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
本发明还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现上述中的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
1、本发明关注到了现有技术并未关注到的性能开销,并且设计方案很好地解决了这部分开销;
2、本发明的设计方案围绕I/O设备进行解决方案设计,相较于以往工作围绕CPU设计方案,更加符合当前硬件发展趋势;
3、本发明的设计方案对于客户机虚拟机无感,客户虚拟机可以不需要修改源码,而可以享受到本发明涉及方案带来的性能提升。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的流程图;
图2为本发明整体架构图;
图3为本发明相关硬件架构视角图;
图4为I/O页表配置步骤流程的示意图;
图5为DMA缓冲区检测步骤流程的示意图;
图6为DMA缓冲区动态迁移步骤流程的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
根据本发明提供的一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,方法包括如下步骤:
步骤S1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
步骤S2:在虚拟机监控器中增加DMA缓冲区检测步骤,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
步骤S3:在虚拟机监控器中增加DMA缓冲区动态迁移步骤,在步骤S2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作;以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
本发明还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时实现上述中的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述中的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
本发明还提供一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,所述虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统可以通过执行所述虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的流程步骤予以实现,即本领域技术人员可以将所述虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法理解为所述虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统的优选实施方式。
实施例2:
实施例2为实施例1的优选例,以更为具体地对本发明进行说明。
本发明还提供一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,系统包括如下模块:
模块M1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
模块M2:在虚拟机监控器中增加DMA缓冲区检测模块,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
模块M3:在虚拟机监控器中增加DMA缓冲区动态迁移模块,在模块M2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作;以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
实施例3:
实施例3为实施例1的优选例,以更为具体地对本发明进行说明。
本发明将关注I/O虚拟化技术的部分。I/O虚拟化技术的发展历程经过了完全模拟,半虚拟再到设备直通的三个阶段。完全模拟技术是最原始的I/O虚拟化技术,客户虚拟机对于设备的操作都会被虚拟机监控器捕获,在虚拟机监控器中进行模拟操作,并将模拟的结果返回给客户虚拟机。
设备直通技术理论性能最好,可以完全发挥设备的物理性能,虚拟化的管理开销在3种技术中最小,是当前I/O虚拟化技术发展的趋势和未来。但设备直通方案在工程实践中仍然有一定的功能缺失和性能问题,例如热迁移等公有云场景下常用功能无法实现。具体到性能方面,设备直通方案的实际性能距离理论上限仍有距离。本发明即关注这一部分的性能开销,目的是使设备直通方案的性能更加接近于其理论上限。
本发明基于以上观察事实,发现了NUMA架构下直通I/O虚拟化的性能问题,并设计了技术方案,成功优化了发现的性能问题。本发明基于ARM硬件平台进行技术展示,但本发明所包含的设计方案并不局限于ARM硬件平台,可以运用于任意具备IOMMU功能和NUMA架构的硬件平台上。本领域的技术人员可以在权利要求范围内做出各种变化或修改,这并不影响本发明的实质内容。
针对现有技术中的缺陷,本发明的目的是优化NUMA场景下直通I/O虚拟化技术的性能开销。
本发明旨在解决NUMA场景下的直通I/O虚拟化技术的性能问题。从一个完整的I/O处理流程来看,完整的流程如下。首先,在客户虚拟机启动时,虚拟机监控器会配置IOMMU,其中包括I/O设备信息的配置和I/O页表的配置步骤。其次,在客户虚拟机运行时,应用程序发起I/O操作之前,会分配DMA缓冲区,分配完成后会发起DMA操作。主要分为启动时操作和运行时操作。
本发明在客户虚拟机启动时操作中,修改了I/O页表的配置步骤。在客户虚拟机运行时操作中,增加了DMA缓冲区检测步骤和DMA缓冲区动态迁移步骤。具体步骤内容如下。
根据本发明提供的NUMA场景下的直通I/O性能优化设计方法,包括I/O页表配置步骤、DMA缓冲区检测步骤和DMA缓冲区动态迁移步骤。
I/O页表配置步骤:在物理设备发起真实的读写操作之前,需要首先配置IOMMU,其中包括IOMMU相关控制寄存器的配置和IO页表的配置。在IOMMU初始化之前,设备是具备能够读写全局物理地址的能力的。在没有IOMMU的平台上,发起DMA操作的大致过程如下,申请DMA缓冲区完成后,直接写设备的寄存器接口,接着由设备发起读写请求,从主存中读写数据。引入IOMMU之后,在申请DMA缓冲区之后,需要首先配置IO页表,将IO虚拟地址映射到物理地址。然后将IO虚拟地址写入设备的寄存器接口,设备就可以发起DMA读写请求。IO页表的作用在于将写入设备的地址从真实的物理地址改为IO虚拟地址,从而避免设备获取真实的内存信息。IO页表配置步骤主要分为两步,首先分配物理页作为IO页表页,其次将IO虚拟地址到物理地址的映射信息按照页表格式填入已经分配的物理页中。
DMA缓冲区检测步骤:通常来说,设备场景下,客户虚拟机中的DMA缓冲区对于虚拟机监控器来说并不可见,是虚拟化中“语义鸿沟”的实例之一。虚拟机监控器无法检测DMA缓冲区位置的前提下,虚拟机监控器就无法针对DMA缓冲区放置位置进行优化等操作。本发明将创新性地提出DMA缓冲区检测的方法。
DMA缓冲区动态迁移步骤:通常情况下,DMA缓冲区并不会有迁移的步骤。本发明创新性地提出了DMA缓冲区动态迁移步骤。DMA缓冲区动态迁移步骤是指,将DMA缓冲区从次优的物理位置迁移到较优的物理位置。通常情况,操作系统将一块内存标记为DMA缓冲区之后,在设备完成IO操作之前,这块DMA缓冲区的位置并不会发生变化。但客户虚拟机一般无法感知物理机器真实的NUMA拓扑,因而DMA缓冲区的分配往往不是最优的。次优的情况例如I/O设备在0号NUMA节点上,但为其分配的DMA缓冲区却在1号NUMA节点上。本发明提出的DMA缓冲区动态迁移步骤将解决此类次优分配造成的性能开销问题。
优选地,在IO页表配置步骤中,本发明将IO页表页的分配位置与其所属的设备位置结合起来,具体来说,就是将IO页表页分配到与设备同一个NUMA节点上。此设计点的背景在于,物理页的分配由于本身内存开销小而常常被忽视,但页表页本身的位置会导致关键场景的性能问题。具体来看,当设备发起地址翻译请求时,IOMMU硬件需要读取IO页表,根据IO虚拟地址逐级地访问IO页表页,最终读取到物理地址。设备就可以根据这个物理地址进行真实的访存操作。这其中,访问IO页表页的操作将会发生多次,由于IO页表是多级的页表。因此整个IO虚拟地址翻译流程中可能会涉及到多次的IO页表页访问。如果这些页表页都散落在不同的NUMA节点上,那么多次访问远端节点的访存开销将会导致关键应用的性能大幅下降。事实上,当前主流服务器操作系统Linux中的IO页表分配策略仍没有考虑到这个问题,它采用的IO页表分配策略是First-Touch(首次接触),策略的内容是,分配IO页表时,分配到当前进程所在的NUMA节点上。在通常情况下,这么做是最优的,因为分配到当前NUMA节点上,可以让CPU访问该数据的开销最小。但这么做并没有考虑到设备端的读写性能问题,也就是DMA访存的性能问题。
优选地,在DMA缓冲区检测步骤中,本发明创新性地提出了通过在虚拟机监控器层次读取I/O外设的硬件配置空间获取当前I/O外设所使用的DMA缓冲区的位置。以PCI设备为例,一般采用SR-IOV的设备虚拟化方案,分为物理函数(PF,Physical Function)和虚拟函数(VF,Virtual Function)。虚拟机监控器一般使用PF操作设备,一个PF往往对应多个VF,而每个VF都可以排他性地提供给一个客户虚拟机使用。通常的使用场景下,虚拟机监控器一般只操作PF,客户机虚拟机只操作分配给自己的VF。但实际上虚拟机监控器由于拥有全局最高的权限,所以可以读取所有VF的信息。而VF中由于需要给I/O设备指定DMA缓冲区的位置和大小,所以存储着DMA缓冲区的位置和大小信息。因此我们在传统的I/O流程中加入DMA缓冲区检测步骤,并创新性地提出了从虚拟机监控器中检测客户机虚拟机的检测方法。
优选地,在DMA缓冲区动态迁移步骤中,本发明创新性地提出了DMA缓冲区动态迁移方法,并且将动态迁移过程从关键路径中移除,将迁移的性能开销降到最低。具体而言,我们在虚拟机监控器中启动一至多个异步线程,采用本发明提出的DMA缓冲区检测方法,持续检测特定I/O设备的DMA缓冲区位置。当发现特定I/O设备的DMA缓冲区位置并非最优时,启动迁移过程,将DMA缓冲区迁移到最优位置,并更新I/O页表映射以及客户虚拟机的二级页表映射。
优选地,在DMA缓冲区动态迁移步骤中,本发明创新性地提出了预取迁移技术,即在检测到某段物理内存为当前设备的DMA缓冲区之后,对邻近的内存区域进行检查,若仍在当前客户虚拟机的内存范围内,则将邻近区域一并做动态迁移至I/O设备所在的NUMA节点上。因而,在邻近的DMA缓冲区做真实的I/O操作时,动态迁移的开销是完全在关键路径之外的。所谓关键路径,即完成当前操作所必不可少的关键步骤的顺序组合。
优选地,在DMA缓冲区动态迁移步骤中,本发明创新性地使用了DMA缓冲区内存池技术,动态迁移步骤中,需要先在设备本地节点中分配一定大小的内存,然后将位于设备远端节点的原始DMA缓冲区中的内容复制到设备本地节点的内存中。这其中在设备本地节点的内存分配过程的性能开销也是可观的。因此为了解决这部分的性能开销,本发明创新性地提出了DMA缓冲区内存池技术,在设备本地节点中预先分配好一定数量的内存,用于DMA缓冲区的迁移。DMA缓冲区内存池技术简化了内存分配的逻辑,降低了DMA缓冲区迁移开销的同时,也避免了用于DMA缓冲区的内存分配工作影响到系统其他部分的内存分配性能。
如图1所示,本发明提供的一种NUMA场景下的直通I/O虚拟化的性能优化设计方法,包括:
一、I/O页表配置步骤:将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。具体而言,原本Linux操作系统中I/O页表的分配策略是First-Touch,而使用I/O的进程或线程往往会在不同的NUMA节点上来回迁移,这就导致生产环境中的某一个I/O设备对应的I/O页表可能会散落在不同的NUMA节点上。后果是I/O设备进行DMA操作时如果发生IOTLBMiss,就会触发多次跨节点的访存操作,导致关键场景的性能大幅下降。
二、DMA缓冲区检测步骤:客户虚拟机中的DMA缓冲区位置和大小信息往往对于虚拟机监控器不可见,这给虚拟机监控器对于设备I/O方面的优化工作带来了很大的信息障碍。本发明提出的DMA缓冲区检测步骤通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。具体而言,以SRIOV设备为例,虚拟机监控器一般使用PF(physicalfunction)来直接控制I/O设备,而将VF直接分配给某个客户虚拟机。通常情况下,客户虚拟机具备完全控制VF的能力,而虚拟机监控器并不会操作VF。但我们在虚拟机监控器中增加了一个DMA缓冲区检测模块,使得虚拟机监控器可以获取客户虚拟机中DMA缓冲区的位置的大小信息,为虚拟机监控器在设备I/O方面的优化工作提供了基础。
三、DMA缓冲区动态迁移步骤:客户虚拟机往往只具备受限的硬件拓扑信息,比如NUMA拓扑信息。而客户虚拟机需要在信息受限的情况下分配DMA缓冲区,这往往导致了次优的DMA缓冲区位置分配。本发明提出的DMA缓冲区动态迁移步骤,能够以较小的性能开销将DMA缓冲区从次优的位置迁移到较优的位置,并且做到客户虚拟机无感知。具体而言,真实NUMA拓扑可能有4个NUMA节点,彼此全连接。虚拟机监控器能够感知到真实的NUMA拓扑结构,感知到所有的NUMA节点。但是客户虚拟机往往并不能看到真实的NUMA拓扑结构,比如只能看到一个NUMA节点。但实际上客户虚拟机的内存可能会散落在不同的NUMA节点上,这由客户虚拟机运行状态以及虚拟机监控器的分配策略决定。此种情况下,客户虚拟机分配的DMA缓冲区可能会散落在不同的NUMA节点上。如果DMA缓冲区位于设备远端节点上,则对应I/O设备的DMA访存操作开销将会上升,对于关键场景的I/O应用而言,性能的影响是巨大的。本发明提出的DMA缓冲区动态迁移步骤,能够在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点(距离I/O设备最近的NUMA节点)。迁移完成之后的DMA操作将会是近端操作,能够消除远端DMA操作带来的性能开销。
在上述一种NUMA场景下直通I/O虚拟化的优化设计方法的基础上,本发明还提供一个采用上述优化设计方法的真实系统,包括:
一、I/O页表配置模块:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上。
二、DMA缓冲区检测模块:在虚拟机监控器中增加DMA缓冲区检测模块,使能虚拟机监控器检测客户虚拟机中的DMA缓冲区位置和大小信息的能力。通过直接读取I/O设备中的硬件配置信息来获取客户虚拟机DMA缓冲区信息。
三、DMA缓冲区动态迁移模块:在虚拟机监控器中增加DMA缓冲区动态迁移模块,在DMA缓冲区检测模块的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上。迁移完成后的设备DMA访存操作将会都是近端访存操作,节约了大量的访存开销。
本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,其特征在于,所述方法包括如下步骤:
步骤S1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;
步骤S2:在虚拟机监控器中增加DMA缓冲区检测步骤,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;
步骤S3:在虚拟机监控器中增加DMA缓冲区动态迁移步骤,在步骤S2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作。
2.根据权利要求1所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,其特征在于,所述步骤S1将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
3.根据权利要求1所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,其特征在于,所述步骤S2通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
4.根据权利要求1所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法,其特征在于,所述步骤S3以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
5.一种虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,其特征在于,所述系统包括如下模块:
模块M1:管理I/O页表的分配逻辑,在I/O页表分配流程中,查看对应设备的NUMA位置,将I/O页表分配到设备本地节点上;
模块M2:在虚拟机监控器中增加DMA缓冲区检测模块,通过直接读取I/O设备中的硬件配置信息获取客户虚拟机DMA缓冲区信息;
模块M3:在虚拟机监控器中增加DMA缓冲区动态迁移模块,在模块M2的基础上,将客户虚拟机中位于设备远端节点上的DMA缓冲区动态迁移到设备近端节点上;迁移完成后的设备DMA访存操作是近端访存操作。
6.根据权利要求5所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,其特征在于,所述模块M1将I/O页表分配位置固定在对应I/O设备所在的NUMA节点上。
7.根据权利要求5所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,其特征在于,所述模块M2通过读取I/O设备硬件配置空间,获取客户虚拟机中的DMA缓冲区信息。
8.根据权利要求5所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化系统,其特征在于,所述模块M3以小的性能开销对DMA缓冲区进行迁移,且客户虚拟机无感知;在不影响客户虚拟机运行的情况下,动态地将客户虚拟机的DMA缓冲区迁移到设备本地节点;迁移完成之后的DMA操作是近端操作。
9.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述的虚拟化设备直通技术IOMMU和DMA缓冲区的性能优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211455079.8A CN115756742A (zh) | 2022-11-21 | 2022-11-21 | 直通i/o虚拟化的性能优化设计方法、系统、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211455079.8A CN115756742A (zh) | 2022-11-21 | 2022-11-21 | 直通i/o虚拟化的性能优化设计方法、系统、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756742A true CN115756742A (zh) | 2023-03-07 |
Family
ID=85333502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211455079.8A Pending CN115756742A (zh) | 2022-11-21 | 2022-11-21 | 直通i/o虚拟化的性能优化设计方法、系统、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756742A (zh) |
-
2022
- 2022-11-21 CN CN202211455079.8A patent/CN115756742A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10762593B2 (en) | Unified memory systems and methods | |
US10552337B2 (en) | Memory management and device | |
US9529611B2 (en) | Cooperative memory resource management via application-level balloon | |
US9229878B2 (en) | Memory page offloading in multi-node computer systems | |
US20220091911A1 (en) | Method and apparatus for inter-process communication, and computer device | |
US20160162316A1 (en) | Offloading and parallelizing translation table operations | |
US11119942B2 (en) | Facilitating access to memory locality domain information | |
US10552309B2 (en) | Locality domain-based memory pools for virtualized computing environment | |
US10430221B2 (en) | Post-copy virtual machine migration with assigned devices | |
US20170270056A1 (en) | Main memory including hardware accelerator and method of operating the same | |
WO2018103022A1 (zh) | 帧缓存实现方法、装置、电子设备和计算机程序产品 | |
US10691590B2 (en) | Affinity domain-based garbage collection | |
US10268595B1 (en) | Emulating page modification logging for a nested hypervisor | |
US11494092B2 (en) | Address space access control | |
WO2016119618A1 (zh) | 一种远端内存分配方法、装置和系统 | |
KR20150010095A (ko) | 운영체제 구성 장치 및 방법 | |
KR20120070326A (ko) | 메모리 가상화 장치 및 방법 | |
CN115756742A (zh) | 直通i/o虚拟化的性能优化设计方法、系统、介质及设备 | |
WO2015161804A1 (zh) | 一种Cache分区的方法及装置 | |
US11409551B2 (en) | Emulating VPID correctly for a nested hypervisor | |
WO2022222977A1 (zh) | 用于运行云业务实例的物理服务器的内存管理方法和装置 | |
US20240119006A1 (en) | Dual personality memory for autonomous multi-tenant cloud environment | |
US20130262790A1 (en) | Method, computer program and device for managing memory access in a multiprocessor architecture of numa type | |
CN114860439A (zh) | 一种内存分配方法、宿主机、分布式系统及程序产品 | |
WO2017113329A1 (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 |