[发明专利]数据发送方法和计算机无效
| 申请号: | 201110455789.6 | 申请日: | 2011-12-31 |
| 公开(公告)号: | CN102541803A | 公开(公告)日: | 2012-07-04 |
| 发明(设计)人: | 万伟;刘兴彬;王泼;刘铁;陈科;朱春屹;王清;李云华;李博文;董建珊;杨锦涛;孙一鸣;范玉峰;曹振南;邵宗有 | 申请(专利权)人: | 曙光信息产业股份有限公司 |
| 主分类号: | G06F15/16 | 分类号: | G06F15/16 |
| 代理公司: | 北京德恒律师事务所 11306 | 代理人: | 陆鑫;房岭梅 |
| 地址: | 300384 天津市西青区华*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 数据 发送 方法 计算机 | ||
技术领域
本发明涉及计算领域,并且特别地,涉及一种数据发送方法和计算机。
背景技术
目前,千兆网卡的零拷贝技术主要基于传统intel千兆网卡来实现。
通常,在网络数据包的传输过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,这种拷贝处理必然会降低性能和速率,无法在大流量场景中使用。并且,目前的千兆零拷贝都是基于单队列的技术来实现的,但是,在万兆接入的情况下,单位时间内的数据包速率将提高大约10倍,而千兆网卡下单一的传输队列以及缓冲区交互将存在很高的性能损失,所以,传统的技术将无法应对如此高的数据速率,进而成为万兆零拷贝技术发展的瓶颈。
针对相关技术中无法在大流量要求下高效地实现数据发送的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中无法在大流量要求下高效地实现数据发送的问题,本发明提出一种数据发送方法和计算机,能够有效提高数据包发送的速率,改善发包效率,能够应对万兆网卡等高速发包的场景。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据发送方法,用于在多CPU环境下实现数据发送。
该方法包括:对于每个CPU,该CPU将需要发送的数据存储在该CPU对应的存储区中;多个CPU将相应存储区中存储的数据发送给网卡,由网卡进行数据发送。
该方法可进一步包括:将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
此外,每个CPU将其对应的存储区映射为队列,该CPU通过对相应的队列进行轮询来确定是否有需要发送的数据,并在确定有数据需要发送的情况下,将该数据发送至网卡。
并且,每个CPU对应的队列采用循环结构的数据结构。
此外,多个CPU将相应存储区中存储的数据发送给网卡包括:多个CPU将相应存储区中存储的数据发送至网卡的硬件队列。
此外,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
根据本发明的另一方面,提供了一种计算机,用于在多CPU环境下实现数据发送。
根据本发明的计算机包括:多个CPU,其中,对于每个CPU,用于将需要发送的数据存储在该CPU对应的存储区中;多个CPU将相应存储区中存储的数据发送给网卡;网卡,用于发送来自多个CPU的数据。
该计算机可进一步包括:映射模块,用于将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
此外,多个CPU用于将相应存储区中存储的数据发送至网卡的硬件队列。
此外,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
本发明通过使每个CPU核访问各自的存储区并写入数据,从而充分利用了多核CPU的处理能力,实现了数据包的并行发送,能够有效提高数据包发送的速率,改善发包效率,能够应对万兆网卡等高速发包的场景。
附图说明
图1是根据本发明实施例的数据发送方法的流程图;
图2是根据本发明实施例的数据发送方法的原理示意图。
具体实施方式
根据本发明的实施例,提供了一种数据发送方法,用于在多CPU环境下实现数据发送。
如图1所示,根据本发明实施例的数据发送方法包括:
步骤S101,对于每个CPU,该CPU将需要发送的数据存储在该CPU对应的存储区中;
步骤S103,多个CPU将相应存储区中存储的数据发送给网卡,由网卡进行数据发送。
该方法可以进一步包括:将每个CPU对应的存储区中的数据映射到该数据所对应的应用中,从而当存储区中的数据发生变化(例如,被修改)的情况下,能够直接在应用层得到体现,使操作员能够清楚、直观地看到这些数据变化。
此外,每个CPU将其对应的存储区映射为队列,该CPU通过对相应的队列进行轮询来确定是否有需要发送的数据,并在确定有数据需要发送的情况下,将该数据发送至网卡。
其中,每个CPU对应的队列采用循环结构的数据结构,而算法为无锁(lock-free)算法,从而避免了加锁对性能的影响。
此外,多个CPU可以将相应存储区中存储的数据发送至网卡的硬件队列,从而将数据发送给网卡。
此外,可选地,对于每个CPU对应的存储区可以是内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业股份有限公司,未经曙光信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110455789.6/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





