[发明专利]一种针对半虚拟化网卡的数据包高效发送方法有效
申请号: | 201610421258.8 | 申请日: | 2016-06-14 |
公开(公告)号: | CN106095580B | 公开(公告)日: | 2019-04-09 |
发明(设计)人: | 管海兵;胡小康;张望;马汝辉;李健 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 上海旭诚知识产权代理有限公司 31220 | 代理人: | 郑立 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种针对半虚拟化网卡的数据包高效发送方法,借鉴Linux NAPI的设计,让I/O线程在处理发送队列时,根据客户机发送数据包的频率自动切换通知模式和轮询模式:如果客户机发送数据包的频率高于某个阈值,则持续轮询发送队列中是否有数据需要处理,保持客户机的通知机制处于关闭状态,消减VM Exit数量;如果客户机发送数据包的频率低于某个阈值,则退出轮询模式,并开启客户机的通知机制,等待下一次被唤醒,减少CPU资源的浪费。用两个I/O线程分别处理发送队列和接收队列,这两个I/O线程运行在同一个物理核上,它们之间的公平性由CFS调度器保证,CFS调度器会根据线程的运行时间、睡眠时间等实现公平调度。 | ||
搜索关键词: | 一种 针对 虚拟 网卡 数据包 高效 发送 方法 | ||
【主权项】:
1.一种针对半虚拟化网卡的数据包高效发送方法,其特征在于,在初始化vhost模块时创建两个线程,线程A负责接收队列的处理,线程B负责发送队列的处理;所述线程A和所述线程B运行在同一个物理核上,CFS调度器根据线程的运行时间和睡眠时间进行公平调度;其中,所述线程A处理时包括以下步骤:步骤A1:当半虚拟化网卡接收到来自外界的数据包时,唤醒线程A;步骤A2:线程A查看接收缓冲区中是否有数据;步骤A2‑1:如果有数据,则处理接收队列:将数据写入接收队列,通知客户机有数据到达,客户机接收到通知后从接收队列中获取数据;处理完毕接收队列之后,转至步骤A2;步骤A2‑2:如果没有数据,则线程A进入睡眠状态,等待下一次被唤醒;其中,所述线程B处理时包括以下步骤:步骤B1:发送队列被配置为根据客户机发送数据包的频率自动切换通知模式和轮询模式;客户机发送数据包,执行IO特权指令造成VM Exit,KVM通知线程B有数据包需要传输,线程B被唤醒;步骤B2:线程B关闭客户机通知机制,进入轮询状态,轮询发送队列中是否有数据,并统计一次轮询或一段时间内处理的数据包数量;步骤B3:如果数据包数量高于阈值,说明客户机发送数据包的频率较高,则转至步骤B2,继续轮询,减少VM Exit数量;步骤B4:如果数据包数量低于阈值,说明客户机发送数据包的频率较低,则退出轮询模式,打开客户机的通知机制,线程B睡眠,等待下一次被唤醒,减少CPU资源的浪费。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610421258.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种可拆卸式防漏料理机
- 下一篇:一种幅度均衡器