免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

[网络子系统] 有研究过 TCP splice 功能的吗 [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
11 [报告]
发表于 2012-09-25 10:23 |只看该作者
本帖最后由 Godbach 于 2012-09-25 10:42 编辑

回复 9# hmsghnh
具体的实现还没关注,不过 splice 和  sendfile 确实是有关系的。而且从功能上讲,splice 应该包含了 sendfile 了。



   

论坛徽章:
2
申猴
日期:2013-12-26 22:11:31天秤座
日期:2014-12-23 10:23:19
12 [报告]
发表于 2012-09-25 21:45 |只看该作者
是发送本机文件吗?

论坛徽章:
0
13 [报告]
发表于 2012-09-26 11:36 |只看该作者
内核态到用户态应该还是会拷贝,用户态到内核态省一次拷贝,从这个方面说肯定性能会好一些,sendfile就是用splice实现的
Godbach 发表于 2012-09-24 11:03
Linux 内核自 2.6.27 以后,完善了 TCP Splice 的功能。该功能可以在两个文件描述符之间高效的 copy 数据, ...

论坛徽章:
0
14 [报告]
发表于 2012-09-26 14:59 |只看该作者
看了一下代码,最新的sendfile确实用了一种特殊的splice来实现的。
网上搜索一下,也看到很多人说用splice性能反而不好的帖子。  版主有条件用perf之类的工具跑个性能分析来看看。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
15 [报告]
发表于 2012-09-26 17:04 |只看该作者
回复 13# kinwin2012


内核态到用户态应该还是会拷贝

为什么会有一次 copy 呢。假设是网络代理程序,基本上就是从一个 socket 把数据倒到另外一个 sokcet,如果不做内容检查的话,完全不需要到用户空间的。
   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
16 [报告]
发表于 2012-09-26 17:04 |只看该作者
回复 13# kinwin2012


内核态到用户态应该还是会拷贝

为什么会有一次 copy 呢。假设是网络代理程序,基本上就是从一个 socket 把数据倒到另外一个 sokcet,如果不做内容检查的话,完全不需要到用户空间的。
   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
17 [报告]
发表于 2012-09-26 17:05 |只看该作者
回复 14# hmsghnh

最近正在做,还没看到理想的结果


   

论坛徽章:
0
18 [报告]
发表于 2012-09-26 18:31 |只看该作者
回复 1# Godbach

我们系统里用到了splice,效果很不错!我们应用场景是:类似一个代理服务器,需要一遍从后端接收数据,一边发往客户端。
   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
19 [报告]
发表于 2012-09-27 09:49 |只看该作者
回复 18# dingyujie
是吗,有比较的结果吗。

BTW, 能介绍一下你们的测试环境吗,比如内核版本,网卡的类型,你的测试方法啥的。


   

论坛徽章:
0
20 [报告]
发表于 2012-09-27 11:41 |只看该作者
回复 19# Godbach

我找了一台线上机器:

内核: 2.6.32.43, x86_64
Ethernet controller: Intel Corporation Unknown device 10d3

我们系统最开始就直接用的splice,没有对比数据!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP