[发明专利]一种数据传输方法及系统有效
申请号: | 201710923276.0 | 申请日: | 2017-09-30 |
公开(公告)号: | CN107678835B | 公开(公告)日: | 2020-05-08 |
发明(设计)人: | 李拓;刘芳宁 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据传输 方法 系统 | ||
本申请实施例公开了一种数据传输方法及系统,该方法应用于第一处理模块,包括:访问第一数据通道;第一数据通道位于共享内存区域,用于存储第二处理模块写入的第一数据包;当第一数据通道中存储有第一数据包时,获取第一数据通道中的第一数据包;根据获取到的第一数据包所携带的接收方信息,发送该第一数据包。第一处理模块和第二处理模块可以分别运行于虚拟机和宿主机,使得虚拟机和宿主机之间的数据传输过程无需执行超级调用和终端,避免了超级调用和终端引起的虚拟机与宿主机之间和虚拟机上的上下文切换,提高了CPU的利用率和数据传输的效率,进而显著提高虚拟机的网络通信效率及性能。
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据传输方法及系统。
背景技术
Virtio半虚拟化网卡是目前基于内核的虚拟机(Kernel-based VirtualMachine,KVM)平台虚拟网卡的主流类型。在由Vritio半虚拟化网卡连接构成的虚拟网络系统中,虚拟网络系统中维护了一个vring队列的数据结构,以进行数据的收发。在数据收发过程中,虚拟机的Virtio-net前端驱动将携带待传输的数据的读写请求写入vring队列后,执行一个kick操作,通过Virtio-pci硬件寄存器通知宿主机。宿主机截获到该通知后,从vring队列获取该读写请求并将处理结果添加到vring队列后,通过Virtio-pci硬件寄存器发送中断给该虚拟机。
在上述数据收发过程中,虚拟机需要执行一次超级调用(hypercall)操作从虚拟机切换到虚拟机监控程序,引起虚拟机和宿主机之间的上下文切换;再从虚拟机监控程序切换回虚拟机并触发中断,虚拟机从用户态切换至内存态,引起虚拟机的上下文切换。当需传输的数据包数量较多时,反复执行超级调用和中断,引起的虚拟机和宿主机之间以及虚拟机从用户态切换至内存态的上下文切换,会严重影响数据包的转发性能。
发明内容
有鉴于此,本申请实施例提供了一种数据传输方法及系统,能够解决现有技术中待传输的数据包较多时转发性能下降的问题。
本申请实施例提供的一种数据传输方法,应用于第一处理模块,所述方法,包括:
访问第一数据通道;所述第一数据通道位于共享内存区域,用于存储第二处理模块写入的第一数据包;
当所述第一数据通道中存储有第一数据包时,获取所述第一数据通道中的第一数据包;
根据获取到的第一数据包所携带的接收方信息,发送该第一数据包。
可选的,所述方法,还包括:
将第二数据包写入第二数据通道,以便所述第二处理模块从所述第二数据通道获取该第二数据包;所述第二数据通道位于共享内存区域。
可选的,当所述第一处理模块运行于宿主机时,所述访问第一数据通道,之前还包括:
创建所述共享内存区域;
利用内存映射机制,配置所述共享内存区域,以便所述第一处理模块访问所述共享内存区域;
其中,所述共享内存区域包括所述第一数据通道、所述第二数据通道和元数据存储区域,所述元数据存储区域用于存储所述第一数据通道和所述第二数据通道的队列信息。
可选的,当所述第一处理模块运行于虚拟机时,所述访问第一数据通道,之前还包括:
激活虚拟PCI设备;
将所述虚拟PCI设备的内存地址映射至所述共享内存区域;所述共享内存区域由宿主机创建,包括所述第一数据通道、所述第二数据通道和元数据存储区域,所述元数据存储区域用于存储所述第一数据通道和所述第二数据通道的队列信息;
创建并注册虚拟网卡设备;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710923276.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种减振设备
- 下一篇:一种不锈钢水龙头的制造方法