《一种基于KVM虚拟机的客户机之间高速通信的方法.pdf》由会员分享,可在线阅读,更多相关《一种基于KVM虚拟机的客户机之间高速通信的方法.pdf(9页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102662777 A(43)申请公布日 2012.09.12CN102662777A*CN102662777A*(21)申请号 201210128970.0(22)申请日 2012.04.28G06F 9/54(2006.01)G06F 9/455(2006.01)(71)申请人浪潮电子信息产业股份有限公司地址 250014 山东省济南市高新区舜雅路1036号(72)发明人何志平 吴楠 张东 周雄谢若鸿(54) 发明名称一种基于KVM虚拟机的客户机之间高速通信的方法(57) 摘要本发明提供一种基于KVM虚拟机的客户机之间高速通信的方法,步骤如下:为KVM虚拟机虚拟一。
2、个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信,该方法是针对虚拟机之间通信速度慢的缺点,在KVM虚拟机中虚拟一个用于虚拟机间高速通信的虚拟设备,通过该虚拟PCI设备,虚拟机之间可以高速通信,从而提高KVM虚拟机之间的通信效率。(51)Int.Cl.权利要求书1页 说明书3页 附图4页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 1 页 。
3、说明书 3 页 附图 4 页1/1页21.一种基于KVM虚拟机的客户机之间高速通信的方法,其特征在于:为KVM虚拟机虚拟一个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信;具体基于KVM虚拟机的客户机之间高速通信运行步骤如下:(1)在KVM虚拟机中虚拟出一个带有内存的高速通信的设备,该虚拟PCI设备遵循PCI设备规范,在虚拟机启动时,将该虚拟PCI设备的内存和。
4、IO端口映射到客户机的物理地址空间中;(2)利用KVM虚拟机以进程的方式实现的特点,通过共享内存的方式,把两个不同客户机中的虚拟高速通信的设备的内存映射到同一片主机的物理内存中;(3)在两个客户机中,分别把虚拟高速通信设备的内存映射到各自的物理地址空间,这样,这两个客户机中的进程只需要把该虚拟高速通信设备的内存映射到各自的进程地址空间中,然后通过读写这片进程地址空间;(4)当客户机A中的进程读/写虚拟高速通信设备的设备内存映射的进程地址区域时,会被KVM虚拟机监控器截获,当KVM虚拟机监控器截获到该IO操作时,把要读/写的数据直接读/写到实现虚拟高速通信设备的设备内存的主机共享内存中;(5)客。
5、户机B中的进程通过写/读自己的虚拟高速通信设备的内存映射的进程地址区域时,也会被KVM虚拟机监控器截获,并且转化成对于同一片主机共享内存的写/读,从而实现客户机之间的高速通信。权 利 要 求 书CN 102662777 A1/3页3一种基于 KVM 虚拟机的客户机之间高速通信的方法技术领域0001 发明涉及计算机操作系统软件技术领域, 具体地说是一种基于KVM虚拟机的客户机之间高速通信的方法。背景技术0002 虚拟机的每一个I/O操作,都要由虚拟机监控器或者特权域的介入和协助方可完成。这已经成为了制约虚拟机性能和功能的一大瓶颈,尤其是对于那些I/O吞吐量很大的应用,如Web服务器,数据库服务器。
6、,个人多媒体应用等。0003 另外,当前虚拟机之间通信方式主要是基于网络,而通过网络通信需要在虚拟机监控层经过一次协议解析,这也影响了虚拟机的性能。受限于前面两个因素,虚拟机之间的通信效率低下,即使是同一台主机上运行的两个虚拟机之间通信效率也不高。0004 针对于这个问题,产生了直接I/O访问的方法。直接I/O访问主要涉及两个方面:隔离和共享。隔离指的是当属于某个虚拟机的I/O设备在进行DMA操作时,必须限制它访问属于其他虚拟机的内存,以保证虚拟机之间的隔离性和安全性。共享指的是一个物理设备应该能够提供多个抽象的界面,以供不同的虚拟机同时使用,从而降低硬件的冗余配置。0005 目前,针对隔离性。
7、和共享性主要从硬件层次上解决,如Intel的VT-d技术,AMD的IOMMU技术等。但是,当前这些硬件I/O虚拟机技术,在KVM虚拟机IA64平台上尚未完全成熟,而且有一定得局限性,因此未能很好的发挥它的优势。因此,我们仍需要从软件层面从发,采用一些办法来提升虚拟机I/O的性能,尤其是运行在同一台物理机上的不同虚拟机之间的通信速度。发明内容0006 本发明的目的是提供一种KVM虚拟机之间高速通信的方法。0007 本发明的目的是按以下方式实现的,为KVM虚拟机虚拟一个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中。
8、的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信;具体基于KVM虚拟机的客户机之间高速通信运行步骤如下:1)在KVM虚拟机中虚拟出一个带有内存的高速通信的设备,该虚拟PCI设备遵循PCI设备规范,在虚拟机启动时,将该虚拟PCI设备的内存和IO端口映射到客户机的物理地址空间中;2)利用KVM虚拟机以进程的方式实现的特点,通过共享内存的方式,把两个不同客户机中的虚拟高速通信的设备的内存映射到同一片主机的物理内存中;3)在两个客户机中,分别把虚拟高速通信设备的内存映射到各自的物理地址空间,这样,。
9、这两个客户机中的进程只需要把该虚拟高速通信设备的内存映射到各自的进程地址空说 明 书CN 102662777 A2/3页4间中,然后通过读写这片进程地址空间;4)当客户机A中的进程读/写虚拟高速通信设备的设备内存映射的进程地址区域时,会被KVM虚拟机监控器截获,当KVM虚拟机监控器截获到该IO操作时,把要读/写的数据直接读/写到实现虚拟高速通信设备的设备内存的主机共享内存中;5)客户机B中的进程通过写/读自己的虚拟高速通信设备的内存映射的进程地址区域时,也会被KVM虚拟机监控器截获,并且转化成对于同一片主机共享内存的写/读,从而实现客户机之间的高速通信。0008 本发明的有益效果是: 本发明针。
10、对于KVM虚拟机IO效率低下,即便是运行在同一台主机之上的两个虚拟机之间也缺乏高效的通信方法,设计了一种用于虚拟机之间高效通信的虚拟通信设备,该虚拟通信设备的设备内存是基于共享内存实现的,这样通过读写该设备的设备内存便可以实现虚拟机之间高速通信。附图说明0009 附图1是KVM虚拟机监控器的系统结构示意图;附图2是带有虚拟高速通信设备的KVM虚拟机监控器的系统结构示意图;附图3是针对的虚拟高速通信设备的设备内存的在不同地址空间中的映射示意图;附图4是针对KVM虚拟机之间高速通信时数据的流动示意图。具体实施方式0010 参照说明书附图对本发明的方法作以下详细地说明。0011 本发明的一种KVM虚。
11、拟机之间高速通信的方法, 下面参照附图,对本发明的内容以一个具体实例来描述实现这一体系结构的过程;(1)首先,在客户机A和客户机B中各自虚拟出一个用于虚拟机之间高速通信的设备;该虚拟设备遵守PCI规范,并且在虚拟设备的PCI配置空间中指定虚拟设备的设备内存和IO端口要映射的客户机物理地址空间的区域。另外,虚拟设备的设备内存通过共享内存的方式实现,它使用的是主机内存;(2)然后,启动客户机A和客户机B,并分别在客户机A中启动进程a,在客户机B中启动进程b,进程a和进程b分别将虚拟高速通信设备的设备内存映射到各自的进程地址空间中;(3)接着,客户机A中的进程a对该片地址空间执行写操作。由于这个写操。
12、作属于设备IO,因此KVM虚拟机监控器将截获该写操作,并将要写的数据写到设备内存中,也就是虚拟高速通信设备的设备内存使用的主机上的共享内存;(4) 客户机B中的进程b对该片地址空间执行读操作。同样,由于该读操作属于设备IO,因此KVM虚拟机也将截获该读操作,并且从设备内存中读数据,也就是从虚拟高速通信设备的设备内存使用的主机上的共享内存上读数据,这样便读到了客户机A中的进程a写的数据,从而实现了客户机A中的进程a和客户机B中的进程b之间的高速通信。0012 以上所述的实例对本发明的实现方式作了详细的说明,但是本发明的具体实现形式并不局限于此,对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行各种显而易见的改变都在本发明的保护范围之内。说 明 书CN 102662777 A3/3页50013 除说明书所述的技术特征外,均为本专业技术人员的已知技术。说 明 书CN 102662777 A1/4页6图1说 明 书 附 图CN 102662777 A2/4页7图2说 明 书 附 图CN 102662777 A3/4页8图3说 明 书 附 图CN 102662777 A4/4页9图4说 明 书 附 图CN 102662777 A。