The invention discloses a method of symbiosis virtual machine communication lock ring buffer based on multi-core, implementation steps include: pre application sharing in fixed size buffers in memory, the buffer is divided into metadata area, specify the identity of variables in a metadata storage area of the buffer area and buffer description information the metadata area other logically organized into multiple nuclear ring lock free ring buffer; when symbiosis virtual machine communication is required, as the sender to write, to multi core lock free ring buffer in written communication data, and at the same time only allows a write write operation is carried out communication; receiver as a reader, the reader reads the communication data of multi-core lock free ring buffer, and multiple readers can read concurrent operation. The invention has the advantages that the receiver can efficiently read concurrently, the read and write of the buffer is good, the communication efficiency of the symbiotic virtual machine is high, and the multi-core processing performance of the processing can be fully utilized.
【技术实现步骤摘要】
一种基于多核无锁环形缓冲区的共生虚拟机通信方法
本专利技术涉及网络虚拟化技术的共生虚拟机的通信加速技术,具体涉及一种基于多核无锁环形缓冲区的共生虚拟机通信方法。
技术介绍
当前,云计算已经成为了学术界和工业界的研究热点。作为云平台的重要支撑技术之一,虚拟化技术提供了资源隔离、容错、提高资源利用率等诸多重要功能。Xen是目前主流的开源虚拟化平台之一。在Xen平台上,每个虚拟机称为一个域;通常称处于同一台物理机上的虚拟机为共生虚拟机。当前的云计算环境中,硬件水平的提升使得每台物理机上所能容纳的虚拟机数量越来越多,共生虚拟机间通信的频率也越来越高。Xen平台上,任意的两台虚拟机,无论是否存在共生关系,都是使用传统的TCP/IP协议栈进行通信。这种通信方式存在着通信路径长、数据拷贝次数多、虚拟机域切换频繁等问题,因此通信性能存在很大的优化空间。目前一种广泛采用的通信加速思路是:为共生虚拟机之间建立共享内存数据通道,当通信双方是共生虚拟机时,通信数据通过共享内存通道进行交换。由于数据旁路减少了通信路径和数据拷贝次数,同时也避免虚拟机管理器频繁地在多个域之间切换,这种优化思路通常能够大幅度提高通信吞吐率。大部分共生虚拟机通信优化机制的共享内存数据通道采用环形缓冲区实现。数据通信过程中,发送方是缓冲区的生产者,也是缓冲区的写者;接收方是缓冲区的消费者,也是缓冲区的读者。环形缓冲区的读写过程是一个生产者-消费者模型。图1表示了一个共生虚拟机间采用共享内存环形缓冲区通信加速的示意,虚拟机A和虚拟机B之间进行通信,则需要使用两个共享内存环形缓冲区以及两个事件通道。Lampor ...
【技术保护点】
一种基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在于实施步骤包括:1)预先在共享内存中申请固定大小的缓冲区,将所述缓冲区等分划分为元数据区域,指定一个元数据区域存储缓冲区的描述信息以及缓冲区的标识变量,将其余的元数据区域在逻辑上组织成环形得到多核无锁环形缓冲区;当共生虚拟机需要通信时,跳转执行步骤2);2)通信发送方作为写者,往多核无锁环形缓冲区中写通信数据,且同一时刻只允许一个写者执行写操作;3)通信接收方作为读者,读者读取多核无锁环形缓冲区中的通信数据,且多个读者可并发执行读取操作。
【技术特征摘要】
1.一种基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在于实施步骤包括:1)预先在共享内存中申请固定大小的缓冲区,将所述缓冲区等分划分为元数据区域,指定一个元数据区域存储缓冲区的描述信息以及缓冲区的标识变量,将其余的元数据区域在逻辑上组织成环形得到多核无锁环形缓冲区;当共生虚拟机需要通信时,跳转执行步骤2);2)通信发送方作为写者,往多核无锁环形缓冲区中写通信数据,且同一时刻只允许一个写者执行写操作;3)通信接收方作为读者,读者读取多核无锁环形缓冲区中的通信数据,且多个读者可并发执行读取操作。2.根据权利要求1所述的基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在于,步骤1)中将所述缓冲区等分划分为元数据区域具体是指通过对缓冲区的内存地址的取余操作将所述缓冲区等分划分为元数据区域。3.根据权利要求1所述的基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在于,步骤1)中的所述缓冲区的标识变量包括全局尾指针back、全局读指针front_r、全局写指针front_w和局部变量local_read[0...N-1],其中N为CPU核心个数,每一个局部变量对应一个CPU并用于记录该CPU对应的读或者写的首地址,且所述多核无锁环形缓冲区的每次读写任务都由一个CPU完成。4.根据权利要求3所述的基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在于,步骤2)中写者往多核无锁环形缓冲区中写通信数据的详细步骤包括:2.1)检查缓冲区剩余空间remain_size是否大于通信数据的数据长度data_len,如果小于通信数据的数据长度data_len,则直接结束退出;否则,跳转执行下一步;2.2)比较所有读者对应的局部变量local_read[i]与back,若存在某个读者i的局部变量local_read[i]使得式(1)成立且该局部变量local_read[i]不等于0,则循环等待跳转执行步骤2.2);否则,跳转执行步骤2.3);back+data_len>=local_read[i]+RING_SIZE(1)式(1)中,back表示全局尾指针back的地址,data_len表示通信数据的数据长度,local_read[i]表示读者i的局部变量,RING_SIZE表示缓冲区的空间大小;2.3)将通信数据拷贝至缓冲区起始位置为back,长度为data_len的区域,其中back表示全局尾指针back的地址,data_len表示通信数据的数据长度。5.根据权利要求4所述的基于多核无锁环形缓冲区的共生虚拟机通信方法,其特征在...
【专利技术属性】
技术研发人员:任怡,游资奇,吴庆波,戴华东,谭郁松,刘仁仕,阳国贵,
申请(专利权)人:中国人民解放军国防科学技术大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。