免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5340 | 回复: 18
打印 上一主题 下一主题

如果不采用零拷贝的话,从网卡到应用层共经历了几次拷贝? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-16 10:22 |只看该作者 |正序浏览
如果不采用零拷贝的话,从网卡到应用层共经历了几次拷贝?

论坛徽章:
0
19 [报告]
发表于 2013-01-16 17:40 |只看该作者
TCP层整理数据需要拷贝?为什么?

分片组包一般也不会拷贝,分片可能需要拷贝

论坛徽章:
0
18 [报告]
发表于 2013-01-16 14:13 |只看该作者
理想情况下,不考虑分片不考虑多播的话,TPC来说:从网卡进来之后,一直都是指针操作,直到TCP层整理数据一次,然后拷贝到用户态一次。也就是两次。其他的协议UDP差不多是一样的,SCTP就不是清楚了。

论坛徽章:
0
17 [报告]
发表于 2013-01-16 13:19 |只看该作者
要那个人给出一个解释,不然暴扁

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2013-01-16 12:44 |只看该作者
我也是这么就理解的, 就2次拷贝.
可是为何大家都说是3次拷贝???
回复 15# mordorw


   

论坛徽章:
0
15 [报告]
发表于 2013-01-16 12:16 |只看该作者
本帖最后由 mordorw 于 2013-01-16 12:19 编辑

两个点:

            收发              处理                 传递
网卡<---------->系统内核(内存)<-------------->用户进程(内存)


内核在处理报文的时候一般不会对报文做拷贝操作
传递的时候由于内核内存和用户内存的隔离性,需要拷贝。如果做内存映射,那就是零拷贝
收发的拷贝由DMA完成

表述的应该很清楚了,对不对大家判断

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2013-01-16 10:52 |只看该作者
我不关注性能,我现在是想知道流程啊, 请标明相关代码的地方...求助~~回复 13# mordorw


   

论坛徽章:
0
13 [报告]
发表于 2013-01-16 09:41 |只看该作者
本帖最后由 mordorw 于 2013-01-16 09:43 编辑

我认为:

本地收发报文的场景,        耗CPU的拷贝  只有一次,就是用户进程和内核之间的拷贝
转发的场景,                 没有  耗CPU的拷贝

还有1到2次  不耗CPU的拷贝,  就是耗总线和内存的DMA拷贝, CPU不参与,但是总线和内存参与,也会影响CPU的计算性能

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2013-01-16 08:47 |只看该作者
"从ip层到tcp层的缓冲区"<-------代码哪里?
回复 11# luoyan_xy


   

论坛徽章:
0
11 [报告]
发表于 2013-01-15 23:07 |只看该作者
    个人偏向也是两次,非要说三次的话,难道是这样的?
    从网卡到内核,从ip层到tcp层的缓冲区,从tcp层缓冲区到用户空间
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP