基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法

文档序号:6443910阅读:974来源:国知局
专利名称:基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法
技术领域
本发明属于信息处理系统的虚拟机领域,具体涉及ー种片上多核处理器的虚拟机系统中多个虚拟机之间通信的方法。
背景技术
随着现在计算机硬件技术的发展,其性能已日益强大并足以满足日常和企业的ー般应用需求。在此背景下,如何提高系统硬件资源的利用率、如何降低维护和管理成本、如何提高系统可靠性和安全性、如何提高可移植性并以此来提高软件开发效率越来越凸显虚 拟化技术的重要性,也使得虚拟机技术成为学术界和产业界的焦点之一。现在虚拟机技术应用领域越来越广泛,很多通信密集型的分布式应用,如web服务、高性能网格应用、数据库应用被整合到虚拟机(VM)系统中以充分利用硬件资源,这些程序通常需要突破虚拟机系统中_离条件的限制(如虚拟机A必须通过虚拟机管理系统(Virtual Machine Managersystem, VMM)的授权才可直接访问虚拟机B所拥有的内存)才能与其他VM中的程序进行通信,从而造成性能上的损失。根据W间通信方式实现的层次不同将VM间通信分为三种(I)基于硬件寄存器的VM间通信,只需要经过ー经互联方式(2)基于共享内存的VM间通信,需要经过ー级和ニ级两个互联方式(3)基于网络协议的如socket,需要经过ー级、ニ级和三级三个互联方式。目前,绝大多数的虚拟机通信方法都不能很好解决性能问题。现在多数的虚拟机间通信解决方案都是基于Xen开源虚拟机系统,此类为第二种基于共享内存的VM间通信。基于共享内存的VM间通信,需要各个VM间可以拥有对一块内存的共同访问权限。VM间通过封装的共享内存操作接ロ,完成数据的读写并以此完成VM间数据通信。Francois Diakhate等人提出的在VM系统中为客户操作系统提供简单消息传递接ロ而引入ー个虚拟设备,从而实现闻效的基于共孚内存的VM间通イ目。XenSockets是基于共孚内存的闻吞吐率的单向的VM间通信机制。XffAY也是基于共享内存的VM间通信机制,它相对于XenSockets是提供了更快速的VM间通信通道。但是这些基于共享内存的通信机制有以下不足之处1、需要3次内存拷贝以及额外的同步开销;2、对于共享内存的访问需要向虚拟机监视器申请访问权利;3、这些解决方法都是需要先通过操作系统的网络层,在网络层判断目标通信地址是不是共驻在同一物理平台上的其他虚拟机,若是则利用共享内存进行数据传输,否则通过网络传输。即在传输之前要在网络层进行目标通信地址的判断,从而会导致性能下降。因此,在当前虚拟机系统广泛应用之际,而且虚拟机系统上的多个虚拟机之间需要相互协作完成任务。性能便成为虚拟机系统中瓶颈之一,而此瓶颈需要通过一定的方法得以缓解,本发明因此而来。

发明内容
本发明的目的在于提供了ー种基于共享内存和核间中断的多核平台上的虚拟机之间的通信方法,有效解决了现代流行的虚拟机系统中通信效率和资源共享的问题,并使得虚拟机性能得以提升。为了解决现有技术中的这些问题,本发明提供的技术方案是一种基于共享内存和核间中断的多核平台上虚拟机之间的进程通信方法,其特征在于所述方法由虚拟机系统实现,所述虚拟机系统包括共享内存模块和核间中断处理模块,所述方法包括以下步骤(I)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构修改已分配共享内存链表和闲置共享内存链表;(2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中; (3)若没有其他进程访问时,则要进ー步测试读写标志位;若符合读写要求,那么读进程可以从中读取数据,写进程可以向其中写入数据;(4)当进程完成对向共享内存中读写数据后遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断处理模块唤醒此进程继续访问共享内存;否则结束对共享内存的访问。本发明的另一目的在于提供一种便于多核平台上虚拟机之间的进程通信的虚拟机系统,其特征在于所述系统包括共享内存模块和核间中断处理模块,所述共享内存模块包括记录已分配的共享内存块链表、尚未分配的闲置的共享内存块链表和对共享内存块链表互斥访问的自旋锁;所述核间中断处理程序用于分配共享内存的等待队列和读写标志;所述系统按照如下步骤进行进程通信(I)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构修改已分配共享内存链表和闲置共享内存链表;(2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中;(3)若没有其他进程访问时,则要进ー步测试读写标志位;若符合读写要求,那么读进程可以从中读取数据,写进程可以向其中写入数据;(4)当进程完成对向共享内存中读写数据后遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断处理模块唤醒此进程继续访问共享内存;否则结束对共享内存的访问。本发明基于共享内存和多核平台上核间中断机制。进程间通信方式包括管道、信号量、消息队列和共享内存。其中共享内存具有最高的通信性能,因为共享内存的开销仅在于通过内存拷贝实现进程间的通信。多核平台上核间中断是几乎所有的多核处理器本身就有的硬件支持,而且操作系统对硬件中断有快速响应处理能力,其性能很高。本方案采取两种高性能的共享内存和核间中断相结合的实现方式g在解决多核平台上多个虚拟机之间通信性能问题。其主要设计和实现模块是共享内存模块。此模块包括共享内存的相关数据结构,主要是两个链表记录已分配的共享内存块和尚未分配的闲置的共享内存块,其次还有保证对此表互斥访问的数据结构,是ー个自旋锁。此外还有核间中断处理程序,已分配共享内存的等待队列和读写标志。其主要工作步骤如下
(I)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构便修改已分配共享内存链表和闲置共享内存链表。(2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中。(3)若没有其他进程访问时,则要进一步测试读写标志位(因为当没有其他进程向其中写入数据而读取数据是会引起错误的),若符合读写要求那么读进程可以从中读取数据,写进程可以向其中写入数据。(4)当进程完成对向共享内存中读写数据时需要遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断机制唤醒此进程继续访问共享内存。否则什么也不做。最后结束对共享内存的访问。读写数据进程通过(I) (4)步骤完成多个进程间的数据传输和信息共享。 本发明基于共享内存和核间中断的多核平台上的虚拟机之间的通信方法是利用共享内存作为载体传输数据,并通过共享内存减少内存拷贝次数来实现多个虚拟机之间的高效通信,再利用核间中断作为访问同一共享内存的多个进程间的同步方式。所述方法是基于共享内存和核间中断机制相结合的多个虚拟机之间通信方式,在效率和带宽方面具有很大的优势。多个进程先通过系统调用获取用于通信的共享内存,并记录本线程的唯一标号(可以是虚拟机标志和进程号共同组成的唯一标号),并对此共享内存模块的读写标志进行设置。对于每一块已经申请的共享内存都有ー个等待队列,记录等待访问此共享内存的进程。每次ー个进程结束对此共享内存的访问时会调用同步接ロ去通知此共享内存的等待队列中的其他进程去访问此块共享内存。所述的同步接ロ是基于核间中断的,基于核间中断是利用系统对硬件中断的快速响应能力,实现了虚拟机通信方法的高效。相对于现有技术中的方案,本发明的优点是本发明避免了现有技术中常用基于共享内存方式的通信方法对内存的3次拷贝,基于共享内存和核间中断的多核平台上的虚拟机之间的通信方法只需要内存的一次拷贝,从而降低了开销,提高了整体的多个虚拟机之间的通信性能。


下面结合附图及实施例对本发明作进ー步描述图I为三种VM间通信方式;图2为基于核间中断和共享内存VM间通信性能对比;其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小单位字节);图3为三种VM间通信方式的性能对比;其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小单位字节)。
具体实施例方式以下结合具体实施例对上述方案做进ー步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进ー步调整,未注明的实施条件通常为常规实验中的条件。
实施例本实施例采用的实验平台是采用Cavium Network网络处理器0CTE0N-CN5600-EVB-MB-10G-Y多核处理器。该处理器是MIPS64体系结构,12个主频为800MHZ的CPU核,主频为800MHZ的DDR2内存4G,四个网络接ロ(其中一个千兆网络接ロ和三个百兆网络接ロ )。该实验平台支持启动多个Linux操作系统,各个Linux操作系统之间是相对独立的,即彼此拥有各自的CPU核、内存和外设(如网卡等)。所述通信方式的主要工作步骤如下(I)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构便修改已分配共享内存链表和闲置共享内存链表。(2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中。 (3)若没有其他进程访问时,则要进一步测试读写标志位(因为当没有其他进程向其中写入数据而读取数据是会引起错误的),若符合读写要求那么读进程可以从中读取数据,写进程可以向其中写入数据。(4)当进程完成对向共享内存中读写数据时需要遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断机制唤醒此进程继续访问共享内存。否则什么也不做。最后结束对共享内存的访问。读写数据进程通过(I) (4)步骤完成多个进程间的数据传输和信息共享。结果如图I 图3所示,图I为三种VM间通信方式;在此区别三种VM间通信方式的标准是通信方式的通信路径所经过硬件上的级联层次。普通多核计算机体系结构中,核与核之间的级联方式是通过片上互联;而基于共享内存的VM间通信方式是经过内存控制器,而内存控制器是连接于总线上的,因而是通过链接互联方式的;基于网络的VM间通信方式是通过网卡的,而网卡控制器连接于总线下面的低速I/O控制器上,因而经过的是片上互联、总线互联和低速I/O设备互连的三级互联方式。图2为基于核间中断和共享内存VM间通信性能对比;其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小単位字节);其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小単位字节);此图显示的是随着传输数据的増加,基于核间中断和共享内存两种通信方式传输数据所花费的CPU周期数,是为了更显著查看图3中未能明显显示的基于核间中断方式和基于共享内存方式两种VM间通信方式的性能差异的。图3为三种VM间通信方式的性能对比;其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小単位字节);其中纵坐标为CPU周期数,横坐标为消息大小取2为底的对数(数据块大小単位字节)。此图显示的是随着传输数据的增加,三种通信方式传输数据所花费的CPU周期数。实施例方案的测试的主要指标是性能,在此性能度量标准定义为VM间完成一次消息传递的时间(即Ping-pang測量方法)。在实施例中分别传输数据大小为8字节、16
字节、32字节......1024字节、2048字节,以显示三种通信方式在数据大小不同的情况下
的传输数据的能力。所取数据均来自Cavium公司的EBH5600处理器,传递时间以CPU周期数。图2和图3中数据即为三种通信方式的性能测试結果,从图中可知基于网络的VM间通信方式耗时是其他两种通信方式10倍左右,基于核间中断传输数据由于硬件限制,每次传递数据大小最多为Mailbox寄存器大小,从而导致时间随传输数据总量成正比关系,传输少量数据性能优于基于共享内存的VM间通信方式,但是从图3中可知当数据量増大到一定程度时其耗时要比基于共享内存的VM间通信高。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
权利要求
1.一种基于共享内存和核间中断的多核平台上虚拟机之间的进程通信方法,其特征在于所述方法由虚拟机系统实现,所述虚拟机系统包括共享内存模块和核间中断处理模块,所述方法包括以下步骤 (1)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构修改已分配共享内存链表和闲置共享内存链表; (2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中; (3)若没有其他进程访问时,则要进ー步测试读写标志位;若符合读写要求,那么读进程可以从中读取数据,写进程可以向其中写入数据; (4)当进程完成对向共享内存中读写数据后遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断处理模块唤醒此进程继续访问共享内存;否则结束对共享内存的访问。
2.一种便于多核平台上虚拟机之间的进程通信的虚拟机系统,其特征在于所述系统包括共享内存模块和核间中断处理模块,所述共享内存模块包括记录已分配的共享内存块链表、尚未分配的闲置的共享内存块链表和对共享内存块链表互斥访问的自旋锁;所述核间中断处理程序用于分配共享内存的等待队列和读写标志;所述系统按照如下步骤进行进程通信 (1)进程通过系统调用先向共享内存模块申请ー块共享内存,共享内存的数据结构修改已分配共享内存链表和闲置共享内存链表; (2)进程对共享内存读写数据之前先测试互斥标志位,若有其他进程正在读写此共享内存块,则进程需要进行等待,插入到此共享内存块的等待队列中; (3)若没有其他进程访问时,则要进ー步测试读写标志位;若符合读写要求,那么读进程可以从中读取数据,写进程可以向其中写入数据; (4)当进程完成对向共享内存中读写数据后遍历此共享内存的等待队列,若队列中存在进程等待访问,则通过核间中断处理模块唤醒此进程继续访问共享内存;否则结束对共享内存的访问。
全文摘要
本发明公开了一种基于共享内存和核间中断的多核平台上虚拟机之间的进程通信方法,其特征在于所述方法由虚拟机系统实现,所述虚拟机系统包括共享内存模块和核间中断处理模块,该方法利用共享内存作为载体传输数据,并通过共享内存减少内存拷贝次数来实现多个虚拟机之间的高效通信,再利用核间中断作为访问同一共享内存的多个进程间的同步方式。该方法只需要内存的一次拷贝,从而降低了开销,提高了整体的多个虚拟机之间的通信性能。
文档编号G06F9/54GK102693162SQ201110449088
公开日2012年9月26日 申请日期2011年12月29日 优先权日2011年12月29日
发明者吴俊敏, 朱小东, 朱峪, 赵小雨, 黄景 申请人:中国科学技术大学苏州研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1