[发明专利]一种使用多队列技术的虚拟机网络性能优化的实现方法有效
申请号: | 201210002171.9 | 申请日: | 2012-01-05 |
公开(公告)号: | CN102591715B | 公开(公告)日: | 2012-07-18 |
发明(设计)人: | 肖利民;许航;雷松松 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/455 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种使用多队列技术的虚拟机网络性能优化的实现方法,它有三大步骤:步骤一:对QEMU的网络初始化部分进行修改,通过修改QEMU,增加对于多队列的支持;步骤二:对vhost多队列的修改,是为了支持QEMU对多队列的使用和vhost-net多队列网卡的支持,包括针对于一个队列使用一个线程进行数据传输的修改和系统调用的修改;步骤三:对vhost模块中和网络相关的部分——vhost-net多队列网卡的修改,使得虚拟网卡支持多队列的传输。本发明通过设计和实现虚拟机到宿主机的多个虚拟队列,来实现增加虚拟机网络数据流量和吞吐量的目的。该方法构思巧妙、科学合理,在计算机技术领域内具有良好的使用价值和广阔的应用前景。 | ||
搜索关键词: | 一种 使用 队列 技术 虚拟机 网络 性能 优化 实现 方法 | ||
【主权项】:
一种使用多队列技术的虚拟机网络性能优化的实现方法,其特征在于:该方法具体步骤如下:步骤一:对QEMU的网络初始化部分进行修改,通过修改QEMU,增加对于多队列的支持;这部分的修改涉及以下两个部分:1.qemu模块中和数据传输有关的部分——QEMU TAP初始化修改数据结构使得能够支持多队列,修改了对应队列的文件描述符,增加了用于指示描述符个数的项;针对于数据结构的改变,修改相应的函数以适应新的数据结构;增加检测是否启用多队列的功能,当不启用多队列的时候,支持原本的单队列传输;2.vhost模块中和网络相关的部分——vhost_net初始化修改数据结构以支持多队列;调用修改后的vhost多队列的ioctl系统调用,用于创建和控制队列;步骤二:对vhost多队列的修改,是为了支持QEMU对多队列的使用和vhost_net多队列网卡的支持,包括针对于一个队列使用一个线程进行数据传输的修改和系统调用的修改;1.有关队列使用线程的修改在非多队列情况下,一个虚拟机网络中的虚拟设备vhost_dev对应一个内核线程,但是现在要实现多队列,就需要多个内核线程,因此需要一个队列对应一个线程;对以下几个数据结构进行重新设计和修改:vhost_dev的修改针对于内核线程和队列进行映射之后,存在一些不再需要的项;vhost_virtqueue中需要指定队列号,并且对于每一个队列标识它所在的工作队列;因为前两个数据结构的修改,与其相关的数据结构vhost_poll和vhost_net也要针对于前面的改动而做一些修改;与这些数据结构相关的函数也需要根据数据结构的修改进行相应的调整;2.系统调用的修改具体修改包括:将open中原先初始化队列的工作移到ioctl中,因为需要QEMU传递队列数量到内核态,open系统调用无法满足此要求,而ioctl可以;将release释放函数由原来释放发送/接收队列扩展成释放指定个数的发送/接收队列;ioctl中增加初始化队列的工作,对清理队列的操作进行修改,将清理单队列变成清理多个队列;步骤三:对vhost模块中和网络相关的部分——vhost_net多队列网卡的修改,使得虚拟网卡支持多队列的传输;具体的修改包括:增加feature的支持;向virtio_net_config数据结构中增加用于说明多队列数目的项;将virtnet_info数据结构中的接收虚拟队列rvq和发送虚拟队列svq单独作为新的数据结构。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210002171.9/,转载请声明来源钻瓜专利网。