CN107153566B - 虚拟机i/o性能优化方法及装置 - Google Patents

虚拟机i/o性能优化方法及装置 Download PDF

Info

Publication number
CN107153566B
CN107153566B CN201610124603.1A CN201610124603A CN107153566B CN 107153566 B CN107153566 B CN 107153566B CN 201610124603 A CN201610124603 A CN 201610124603A CN 107153566 B CN107153566 B CN 107153566B
Authority
CN
China
Prior art keywords
page
linked list
bits
cache
representing
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.)
Active
Application number
CN201610124603.1A
Other languages
English (en)
Other versions
CN107153566A (zh
Inventor
王俊清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201610124603.1A priority Critical patent/CN107153566B/zh
Publication of CN107153566A publication Critical patent/CN107153566A/zh
Application granted granted Critical
Publication of CN107153566B publication Critical patent/CN107153566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供一种虚拟机I/O性能优化方法,该方法包括:调用分配接口时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;调用释放接口时,将待释放页表所使用的页面放入所述链表的头部进行缓存。本发明实施例同时还提供一种虚拟机I/O性能优化装置。

Description

虚拟机I/O性能优化方法及装置
技术领域
本发明涉及虚拟机技术,尤其涉及一种虚拟机输入输出(Input/Output,I/O)性能优化方法及装置。
背景技术
传统上,将I/O虚拟化技术分为设备模拟技术和泛虚拟化技术,它们各有优缺点,且优缺点恰好相反。在性能方面,设备模拟技术需要采用陷入再模拟的方式,不仅增加了程序的执行路径,而且频繁的切换必然会导致效率的下降,不如泛虚拟化高效;而在通用性方面,设备模拟技术无需修改原生驱动,具有很好的通用性,泛虚拟化则需要增加前端与后端驱动,后期I/O设备及操作系统的更改会带来大量的工作量,通用性大打折扣。
Intel VT-d技术应运而生,其结合了这两者的优点,在硬件级别做了相应的解决办法,很好的解决了实际问题。其核心技术主要是直接内存访问(Directional MemoryAccess,DMA)重映射:DMA重映射技术的关键就是在北桥芯片中加入DMA重映射硬件,用来解决I/O设备DMA重映射与设备直接分配的问题。其工作的机理是,在所有支持Intel VT-d的平台之上,DMA重映射部分通过为I/O设备提供额外的硬件支持,允许I/O设备通过独立的I/O页表来对虚拟机内存进行访问,I/O设备所发出的DMA请求都会被DMA重映射硬件进行截获和转发,使用I/O页表来判断每次访问是否合法。I/O页表和传统的内存管理单元(MemoryManagement Unit,MMU)所使用的页表是一样的,也是通过IO传输后备缓冲器(TranslationLookaside Buffer,TLB)的来做常用页表路径的缓存。
现有技术中,虚拟机监控器(Virtual Machine Monitor,VMM)和客户机操作系统(Guest Operation System,Guest OS)同处一个物理内存环境,出于安全考虑,VMM必须负责Guest OS页表的管理,以限制Guest OS对内存的访问;外设方面,VMM利用Intel VT-d技术限制设备对内存的访问,同样,外设的DMA操作不能访问虚拟机域内的页表,否则会引发DMA攻击,因此,VMM在管理虚拟机和外设的时候,必须考虑这一问题。具体来说,虚拟机域内的将页划分成几种类型:可写页,页表页,页目录页和描述符表页,当一个页的页类型发生变化时,比如说从可写页类型变成页表页类型,这意味着外设不能再访问该页,此时VMM将该页变成页表页类型后,必须将该页从I/O页表的映射上清除,并刷新IOTLB,这样才能防止外设恶意访问该页表类型的页,保证VMM和虚拟机的安全。
但是,现有的Intel VT-d技术的主要缺点是,会有频繁的页类型变更,导致IOTLB的刷新过高,从而降低了I/O方面的效率。
发明内容
有鉴于此,本发明实施例期望提供一种虚拟机I/O性能优化方法及装置,以提升虚拟机的I/O性能。
本发明实施例的技术方案是这样实现的:
一种虚拟机I/O性能优化方法,所述方法包括:
调用分配接口时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
调用释放接口时,将待释放页表所使用的页面放入所述链表的头部进行缓存。
如上所述的方法,其中,所述页面的页类型数据结构中包含用于表示所述页面为缓存页的数据位。
如上所述的方法,其中,当所述页面为缓存页时,所述页面缓存在对应的链表中。
如上所述的方法,其中,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
一种虚拟机I/O性能优化装置,所述装置包括:
分配接口模块,用于在调用时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
释放接口模块,用于在调用时,将待释放页表所使用的页面放入所述链表的头部进行缓存。
如上所述的装置,其中,所述页面的页类型数据结构中包含用于表示所述页面为缓存页的数据位。
如上所述的装置,其中,当所述页面为缓存页时,所述页面缓存在对应的链表中。
如上所述的装置,其中,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
本发明实施例提供的虚拟机I/O性能优化方法及装置,在调用分配接口时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;在调用释放接口时,将待释放页表所使用的页面放入所述链表的头部进行缓存。如此,通过改变页面的页类型数据结构,使其支持缓存类型的页面,并将这类页面缓存至链表,在调用分配接口时,直接从链表缓存中获取页面,在调用释放接口时,将待释放页表所使用的页面放入链表的头部进行缓存,避免了现有技术中由于页类型的改变,频繁的刷新IOTLB,从而提高了虚拟机的I/O性能。
附图说明
图1为本发明实施例提供的虚拟机I/O性能优化方法的流程图;
图2为本发明实施例提供的虚拟机I/O性能优化装置的结构示意图。
具体实施方式
在本发明的各实施例中,将应用背景设定为泛虚拟化平台Xen,通过对Guest OS内核和Xen的修改,采用一种更为有效的内存管理机制,来减少页类型的改变,从而减少IOTLB的刷新次数,最终达到了对I/O设备效率优化的目的。
图1为本发明实施例提供的虚拟机I/O性能优化方法的流程图。如图1所示,本实施例提供的虚拟机I/O性能优化方法可以包括:
步骤101、调用分配接口时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
步骤102、调用释放接口时,将待释放页表所使用的页面放入所述链表的头部进行缓存。
需要说明的是,上述步骤101和步骤102之间没有先后顺序的限制。
具体的,本实施例通过两部分实现,一是基于Xen(VMM)的module部分,二是基于Linux(Guest OS)的缓存部分。
其中,基于Xen的module部分的主要任务是扩展现有的页类型数据结构以支持缓存页类型的页面。现有的页类型数据结构共有32位(bits),其中,bit28-31是页类型,bit23-27是其他,比如bit26表示页是否被验证,bit0-22代表了引用次数;在本实施例中,从表征引用次数的位中借用一位来表征页面支持缓存,即,页面的页类型数据结构中包含用于表示所述页面为缓存页的数据位;实际应用中,当所述页面为缓存页时,所述页面缓存在对应的链表中。
由于原来用于表征引用次数的位一共有23位,但实际上系统对某一个页面的引用达不到2的23次方那么多次,因此,本实施例中,借用引用次数的最高位,即,第22位来表征页面为缓存页;这样,在本实施例中,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
基于Linux的缓存部分,我们知道一共有三级页表,本实施例的缓存部分分别对这三级的页表做了相应的单链表缓存。缓存部分主要有两个接口,分别是分配接口和释放接口。
其中,分配接口发生在页表的分配,当这个接口被调用时,链表头部所指向的第一个页面从链表中取出并返回给调用者;相应的,释放接口发生在页表释放时,当页表释放时,页表所使用的页面被放入链表的头部。
本实施例中,借用页类型数据结构中的一位表征页面为缓存页,将这类页面缓存在对应的链表中,当调用分配接口时,则将链表头部所指向的第一个页面从链表缓存中取出,当调用释放接口时,则将待释放页表所使用的页面放入所述链表的头部中进行缓存;而不需要像现有技术那样,页类型发生变化时,VMM将该页类型变更后,必须将该页从I/O页表的映射上清除,并刷新IOTLB,仅需从链表的缓存中取出页面或者将页面缓存至链表中即可,可以看出,本实施例中分配和释放接口都是非常快的,都是在常数时间内完成。
另外,本实施例中,缓存部分也有相应的接口暴露给内存管理的守护进程以回收缓存的页面,并且由于分配和释放页表可能发生在任何时间任意核上,因此每个链表都有相应的锁机制。
本实施例的虚拟机I/O性能优化方法,在调用分配接口时,直接从链表中获取页面,在调用释放接口时,将待释放页表所使用的页面放入链表的头部,避免了现有技术中由于页类型的改变,频繁的刷新IOTLB,从而提高了虚拟机的I/O性能。
图2为本发明实施例提供的虚拟机I/O性能优化装置的结构示意图。如图2所示,本实施例提供的装置可以包括:分配接口模块11和释放接口模块12。
分配接口模块11,用于在调用时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
释放接口模块12,用于在调用时,将待释放页表所使用的页面放入所述链表的头部进行缓存。
其中,所述页面的页类型数据结构中包含用于表示所述页面为缓存页的数据位;当所述页面为缓存页时,所述页面缓存在对应的链表中。
具体的,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
本实施例提供的虚拟机I/O性能优化装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在实际应用中,该分配接口模块11和释放接口模块12可由位于虚拟机I/O性能优化装置上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (4)

1.一种虚拟机输入输出I/O性能优化方法,其特征在于,所述方法包括:
调用分配接口时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
调用释放接口时,将待释放页表所使用的页面放入所述链表的头部进行缓存;其中,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
2.根据权利要求1所述的方法,其特征在于,当所述页面为缓存页时,所述页面缓存在对应的链表中。
3.一种虚拟机输入输出I/O性能优化装置,其特征在于,所述装置包括:
分配接口模块,用于在调用时,将链表头部所指向的第一个页面从链表缓存中取出,并返回给调用者;
释放接口模块,用于在调用时,将待释放页表所使用的页面放入所述链表的头部进行缓存;其中,所述页面的页类型数据结构共有32位,其中,第0-21位用于表征所述页面的引用次数,第22位用于表征所述页面为缓存页,第23-27位表征其他,第28-31位用于表征所述页面的页类型。
4.根据权利要求3所述的装置,其特征在于,当所述页面为缓存页时,所述页面缓存在对应的链表中。
CN201610124603.1A 2016-03-04 2016-03-04 虚拟机i/o性能优化方法及装置 Active CN107153566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610124603.1A CN107153566B (zh) 2016-03-04 2016-03-04 虚拟机i/o性能优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610124603.1A CN107153566B (zh) 2016-03-04 2016-03-04 虚拟机i/o性能优化方法及装置

Publications (2)

Publication Number Publication Date
CN107153566A CN107153566A (zh) 2017-09-12
CN107153566B true CN107153566B (zh) 2020-12-08

Family

ID=59791999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610124603.1A Active CN107153566B (zh) 2016-03-04 2016-03-04 虚拟机i/o性能优化方法及装置

Country Status (1)

Country Link
CN (1) CN107153566B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901264A (zh) * 2010-07-27 2010-12-01 浙江大学 一种在固态硬盘上进行海量数据并行扫描的调度方法
CN102541660A (zh) * 2012-01-06 2012-07-04 电子科技大学 一种红外实时成像系统的帧缓存调度装置及调度方法
CN103092678A (zh) * 2013-01-22 2013-05-08 华中科技大学 一种多增量虚拟机内存管理系统和方法
CN103823636A (zh) * 2012-11-19 2014-05-28 苏州捷泰科信息技术有限公司 Io调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901264A (zh) * 2010-07-27 2010-12-01 浙江大学 一种在固态硬盘上进行海量数据并行扫描的调度方法
CN102541660A (zh) * 2012-01-06 2012-07-04 电子科技大学 一种红外实时成像系统的帧缓存调度装置及调度方法
CN103823636A (zh) * 2012-11-19 2014-05-28 苏州捷泰科信息技术有限公司 Io调度方法及装置
CN103092678A (zh) * 2013-01-22 2013-05-08 华中科技大学 一种多增量虚拟机内存管理系统和方法

Also Published As

Publication number Publication date
CN107153566A (zh) 2017-09-12

Similar Documents

Publication Publication Date Title
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
US8719543B2 (en) Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US11907542B2 (en) Virtualized-in-hardware input output memory management
US8868880B2 (en) Virtualization with multiple shadow page tables
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US10671542B2 (en) Application execution enclave memory method and apparatus
US20110161620A1 (en) Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US20130145051A1 (en) Direct Device Assignment
KR20080089002A (ko) 메모리 접근 제어 방법
WO2009001153A1 (en) Memory protection unit in a virtual processing environment
KR20160033689A (ko) 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입
US11474956B2 (en) Memory protection unit using memory protection table stored in memory system
WO2021032943A1 (en) Capability write address tracking
US11907301B2 (en) Binary search procedure for control table stored in memory system
US9600190B2 (en) Virtual machine functions for multiple privileged pages
CN107153566B (zh) 虚拟机i/o性能优化方法及装置
KR20120070326A (ko) 메모리 가상화 장치 및 방법
US11009841B2 (en) Initialising control data for a device
Zhang et al. PiBooster: A Light-Weight Approach to Performance Improvements in Page Table Management for Paravirtual Virtual-Machines

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
GR01 Patent grant
GR01 Patent grant