CN102662777A - 一种基于kvm虚拟机的客户机之间高速通信的方法 - Google Patents
一种基于kvm虚拟机的客户机之间高速通信的方法 Download PDFInfo
- Publication number
- CN102662777A CN102662777A CN2012101289700A CN201210128970A CN102662777A CN 102662777 A CN102662777 A CN 102662777A CN 2012101289700 A CN2012101289700 A CN 2012101289700A CN 201210128970 A CN201210128970 A CN 201210128970A CN 102662777 A CN102662777 A CN 102662777A
- Authority
- CN
- China
- Prior art keywords
- virtual
- speed communication
- virtual machine
- kvm
- memory
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于KVM虚拟机的客户机之间高速通信的方法,步骤如下:为KVM虚拟机虚拟一个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信,该方法是针对虚拟机之间通信速度慢的缺点,在KVM虚拟机中虚拟一个用于虚拟机间高速通信的虚拟设备,通过该虚拟PCI设备,虚拟机之间可以高速通信,从而提高KVM虚拟机之间的通信效率。
Description
技术领域
发明涉及计算机操作***软件技术领域, 具体地说是一种基于KVM虚拟机的客户机之间高速通信的方法。
背景技术
虚拟机的每一个I/O操作,都要由虚拟机监控器或者特权域的介入和协助方可完成。这已经成为了制约虚拟机性能和功能的一大瓶颈,尤其是对于那些I/O吞吐量很大的应用,如Web服务器,数据库服务器,个人多媒体应用等。
另外,当前虚拟机之间通信方式主要是基于网络,而通过网络通信需要在虚拟机监控层经过一次协议解析,这也影响了虚拟机的性能。受限于前面两个因素,虚拟机之间的通信效率低下,即使是同一台主机上运行的两个虚拟机之间通信效率也不高。
针对于这个问题,产生了直接I/O访问的方法。直接I/O访问主要涉及两个方面:隔离和共享。隔离指的是当属于某个虚拟机的I/O设备在进行DMA操作时,必须限制它访问属于其他虚拟机的内存,以保证虚拟机之间的隔离性和安全性。共享指的是一个物理设备应该能够提供多个抽象的界面,以供不同的虚拟机同时使用,从而降低硬件的冗余配置。
目前,针对隔离性和共享性主要从硬件层次上解决,如Intel的VT-d技术,AMD的IOMMU技术等。但是,当前这些硬件I/O虚拟机技术,在KVM虚拟机IA64平台上尚未完全成熟,而且有一定得局限性,因此未能很好的发挥它的优势。因此,我们仍需要从软件层面从发,采用一些办法来提升虚拟机I/O的性能,尤其是运行在同一台物理机上的不同虚拟机之间的通信速度。
发明内容
本发明的目的是提供一种KVM虚拟机之间高速通信的方法。
本发明的目的是按以下方式实现的,为KVM虚拟机虚拟一个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信;具体基于KVM虚拟机的客户机之间高速通信运行步骤如下:
1)在KVM虚拟机中虚拟出一个带有内存的高速通信的设备,该虚拟PCI设备遵循PCI设备规范,在虚拟机启动时,将该虚拟PCI设备的内存和IO端口映射到客户机的物理地址空间中;
2)利用KVM虚拟机以进程的方式实现的特点,通过共享内存的方式,把两个不同客户机中的虚拟高速通信的设备的内存映射到同一片主机的物理内存中;
3)在两个客户机中,分别把虚拟高速通信设备的内存映射到各自的物理地址空间,这样,这两个客户机中的进程只需要把该虚拟高速通信设备的内存映射到各自的进程地址空间中,然后通过读写这片进程地址空间;
4)当客户机A中的进程读/写虚拟高速通信设备的设备内存映射的进程地址区域时,会被KVM虚拟机监控器截获,当KVM虚拟机监控器截获到该IO操作时,把要读/写的数据直接读/写到实现虚拟高速通信设备的设备内存的主机共享内存中;
5)客户机B中的进程通过写/读自己的虚拟高速通信设备的内存映射的进程地址区域时,也会被KVM虚拟机监控器截获,并且转化成对于同一片主机共享内存的写/读,从而实现客户机之间的高速通信。
本发明的有益效果是: 本发明针对于KVM虚拟机IO效率低下,即便是运行在同一台主机之上的两个虚拟机之间也缺乏高效的通信方法,设计了一种用于虚拟机之间高效通信的虚拟通信设备,该虚拟通信设备的设备内存是基于共享内存实现的,这样通过读写该设备的设备内存便可以实现虚拟机之间高速通信。
附图说明
附图1是KVM虚拟机监控器的***结构示意图;
附图2是带有虚拟高速通信设备的KVM虚拟机监控器的***结构示意图;
附图3是针对的虚拟高速通信设备的设备内存的在不同地址空间中的映射示意图;
附图4是针对KVM虚拟机之间高速通信时数据的流动示意图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。
本发明的一种KVM虚拟机之间高速通信的方法, 下面参照附图,对本发明的内容以一个具体实例来描述实现这一体系结构的过程;
(1)首先,在客户机A和客户机B中各自虚拟出一个用于虚拟机之间高速通信的设备;该虚拟设备遵守PCI规范,并且在虚拟设备的PCI配置空间中指定虚拟设备的设备内存和IO端口要映射的客户机物理地址空间的区域。另外,虚拟设备的设备内存通过共享内存的方式实现,它使用的是主机内存;
(2)然后,启动客户机A和客户机B,并分别在客户机A中启动进程a,在客户机B中启动进程b,进程a和进程b分别将虚拟高速通信设备的设备内存映射到各自的进程地址空间中;
(3)接着,客户机A中的进程a对该片地址空间执行写操作。由于这个写操作属于设备IO,因此KVM虚拟机监控器将截获该写操作,并将要写的数据写到设备内存中,也就是虚拟高速通信设备的设备内存使用的主机上的共享内存;
(4) 客户机B中的进程b对该片地址空间执行读操作。同样,由于该读操作属于设备IO,因此KVM虚拟机也将截获该读操作,并且从设备内存中读数据,也就是从虚拟高速通信设备的设备内存使用的主机上的共享内存上读数据,这样便读到了客户机A中的进程a写的数据,从而实现了客户机A中的进程a和客户机B中的进程b之间的高速通信。
以上所述的实例对本发明的实现方式作了详细的说明,但是本发明的具体实现形式并不局限于此,对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行各种显而易见的改变都在本发明的保护范围之内。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (1)
1.一种基于KVM虚拟机的客户机之间高速通信的方法,其特征在于:为KVM虚拟机虚拟一个带设备内存的高速通信的设备,并把该虚拟设备的设备内存映射到客户机的物理地址空间,在虚拟机监控层,通过共享内存的方式,把不同虚拟机中的该虚拟设备的内存映射到同一片主机物理内存中,在两个客户机之中进程,分别把该虚拟设备的内存映射到进程地址空间,然后,通过读写这片物理地址空间便实现高速通信;具体基于KVM虚拟机的客户机之间高速通信运行步骤如下:
(1)在KVM虚拟机中虚拟出一个带有内存的高速通信的设备,该虚拟PCI设备遵循PCI设备规范,在虚拟机启动时,将该虚拟PCI设备的内存和IO端口映射到客户机的物理地址空间中;
(2)利用KVM虚拟机以进程的方式实现的特点,通过共享内存的方式,把两个不同客户机中的虚拟高速通信的设备的内存映射到同一片主机的物理内存中;
(3)在两个客户机中,分别把虚拟高速通信设备的内存映射到各自的物理地址空间,这样,这两个客户机中的进程只需要把该虚拟高速通信设备的内存映射到各自的进程地址空间中,然后通过读写这片进程地址空间;
(4)当客户机A中的进程读/写虚拟高速通信设备的设备内存映射的进程地址区域时,会被KVM虚拟机监控器截获,当KVM虚拟机监控器截获到该IO操作时,把要读/写的数据直接读/写到实现虚拟高速通信设备的设备内存的主机共享内存中;
(5)客户机B中的进程通过写/读自己的虚拟高速通信设备的内存映射的进程地址区域时,也会被KVM虚拟机监控器截获,并且转化成对于同一片主机共享内存的写/读,从而实现客户机之间的高速通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101289700A CN102662777A (zh) | 2012-04-28 | 2012-04-28 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101289700A CN102662777A (zh) | 2012-04-28 | 2012-04-28 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102662777A true CN102662777A (zh) | 2012-09-12 |
Family
ID=46772276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101289700A Pending CN102662777A (zh) | 2012-04-28 | 2012-04-28 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662777A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605559A (zh) * | 2013-11-21 | 2014-02-26 | 中标软件有限公司 | 一种kvm虚拟化服务***及其数据通信方法 |
CN106569874A (zh) * | 2016-10-28 | 2017-04-19 | 华为技术有限公司 | 存储设备的操作方法及物理服务器 |
CN106598696A (zh) * | 2016-11-08 | 2017-04-26 | 北京华为数字技术有限公司 | 一种虚拟机之间数据交互的方法及装置 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN109213571A (zh) * | 2018-08-30 | 2019-01-15 | 北京百悟科技有限公司 | 一种内存共享方法、容器管理平台及计算机可读存储介质 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN111988230A (zh) * | 2020-08-19 | 2020-11-24 | 海光信息技术有限公司 | 虚拟机通信方法、装置、***及电子设备 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
US20110179413A1 (en) * | 2010-01-15 | 2011-07-21 | Vmware, Inc. | Guest/Hypervisor Interrupt Coalescing for Storage Adapter Virtual Function in Guest Passthrough Mode |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的***虚拟机 |
-
2012
- 2012-04-28 CN CN2012101289700A patent/CN102662777A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
US20110179413A1 (en) * | 2010-01-15 | 2011-07-21 | Vmware, Inc. | Guest/Hypervisor Interrupt Coalescing for Storage Adapter Virtual Function in Guest Passthrough Mode |
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN101968746A (zh) * | 2010-09-02 | 2011-02-09 | 北京航空航天大学 | 一种内核虚拟机组织架构模式的实现方法 |
CN102402453A (zh) * | 2012-01-04 | 2012-04-04 | 北京航空航天大学 | 一种面向mips平台的***虚拟机 |
Non-Patent Citations (3)
Title |
---|
RUSTY RUSSELL: "virtio: towards a de-facto standard for virtual I/O devices", 《ACM SIGOPS OPERATING SYSTEMS REVIEW - RESEARCH AND DEVELOPMENTS IN THE LINUX KERNEL》 * |
丁圣阁等: "半虚拟化I/O模型的KVM虚拟机域间通信优化方法", 《计算机科学与探索》 * |
姚远等: "基于KVM的物理资源动态分配与管理技术", 《计算机应用与软件》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605559A (zh) * | 2013-11-21 | 2014-02-26 | 中标软件有限公司 | 一种kvm虚拟化服务***及其数据通信方法 |
CN106569874B (zh) * | 2016-10-28 | 2019-11-29 | 华为技术有限公司 | 存储设备的操作方法及物理服务器 |
CN106569874A (zh) * | 2016-10-28 | 2017-04-19 | 华为技术有限公司 | 存储设备的操作方法及物理服务器 |
US11474853B2 (en) | 2016-10-28 | 2022-10-18 | Huawei Cloud Computing Technologies Co., Ltd. | Storage device operation method and physical server |
US10970105B2 (en) | 2016-10-28 | 2021-04-06 | Huawei Technologies Co., Ltd. | Storage device operation method and physical server |
CN106598696A (zh) * | 2016-11-08 | 2017-04-26 | 北京华为数字技术有限公司 | 一种虚拟机之间数据交互的方法及装置 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN106874128B (zh) * | 2017-01-22 | 2020-11-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN109213571B (zh) * | 2018-08-30 | 2020-12-29 | 北京百悟科技有限公司 | 一种内存共享方法、容器管理平台及计算机可读存储介质 |
CN109213571A (zh) * | 2018-08-30 | 2019-01-15 | 北京百悟科技有限公司 | 一种内存共享方法、容器管理平台及计算机可读存储介质 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN111988230A (zh) * | 2020-08-19 | 2020-11-24 | 海光信息技术有限公司 | 虚拟机通信方法、装置、***及电子设备 |
CN111988230B (zh) * | 2020-08-19 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机通信方法、装置、***及电子设备 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662777A (zh) | 一种基于kvm虚拟机的客户机之间高速通信的方法 | |
JP6871957B2 (ja) | エミュレートされたエンドポイントコンフィグレーション | |
US9294567B2 (en) | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller | |
US9733980B1 (en) | Virtual machine management using I/O device logging | |
US20150317088A1 (en) | Systems and methods for nvme controller virtualization to support multiple virtual machines running on a host | |
CN101645873B (zh) | 一种计算机以及虚拟机环境中实现网络隔离的方法 | |
US9785378B2 (en) | Tracking transformed memory pages in virtual machine chain migration | |
US9785769B2 (en) | Countering attacks on a cache | |
US9563569B2 (en) | Memory transformation in virtual machine live migration | |
EP2455860A3 (en) | Virtual computer system and migration method of virtual computer | |
US20130311746A1 (en) | Shared memory access using independent memory maps | |
US20170139721A1 (en) | Implementation of reset functions in an soc virtualized device | |
US11734430B2 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US10318733B2 (en) | Techniques for detecting malware with minimal performance degradation | |
KR20160024911A (ko) | 범용 직렬 버스 (usb) 디바이스 액세스 | |
CN103577250A (zh) | 一种应用于虚拟机的设备直通方法 | |
EP3262519A1 (en) | Configuration of a memory controller for copy-on-write | |
Rasmusson et al. | Performance overhead of KVM on Linux 3.9 on ARM Cortex-A15 | |
DE102022120128A1 (de) | Speicherzugriffs-nachverfolgung | |
CN104166583B (zh) | 一种基于移动设备虚拟化环境的数据存储方法及装置 | |
US10901917B1 (en) | Address scrambling for storage class memory | |
CN102098214A (zh) | 一种采用轮询机制的高速报文接收方法 | |
US10860520B2 (en) | Integration of a virtualized input/output device in a computer system | |
JP5698280B2 (ja) | 仮想化装置、通信方法、およびプログラム | |
Koukis et al. | GMBlock: Optimizing data movement in a block-level storage sharing system over myrinet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120912 |