了解TCP Friends机制

王福强


在今年的ADC试讲会上听日子哥在其PPT中提到tcp friends,之前没有了解过,遂打算简单了解一下, 而且感觉这东西可能对早先几年我的那个”实现一个基于网络层面抽象的actor库”“的念想的实现有些好处,只可惜当时只是想简单的通过loopback走,却不知道有这东东…

tcp stack层面的短路, 比loopback更近一步的减少了不必要的开销

loopback是避免了网路上的开销,而tcp friends则是进一步的减少了内核tcp stack层面的开销;

使用网络层面的抽象来实现actor, 一个好处就是可以使得本地actor跟远程actor之间的差异透明化; 另外一个就是调度可以直接走NIO的API, 并利用网络层的一些基础设施和功能,比如buffer, 流控等;最最根本的是, 相对于akka actor的实现,偶一直很怀念最早scala类库里的那个actor实现, 不管是内存语意上跟jvm的规定相吻合也好,还是actor定义和行为控制也罢;

如果把net.ipv4.tcp_{rmem/wmem}的配置写成超过4GB的配置,Linux的TCP实现就可能因为溢出而拒绝发出任何数据——这个bug在RHEL6和upstream里都有!如果backport了TCP friends,那么1GB的配置就会出现问题了!

—http://tweets.seraph.me/search/%E6%B7%98%E5%AE%9D%E5%86%85%E6%A0%B8%E7%BB%84

参考

  1. TCP friends
  2. net-tcp: TCP/IP stack bypass for loopback connections
  3. http://kernel.taobao.org/index.php/%E5%86%85%E6%A0%B8%E6%9C%88%E6%8A%A52012-08

>>>>>> 更多阅读 <<<<<<

「为AI疯狂」星球上,扶墙老师正在和朋友们讨论有趣的AI话题,你要不要⼀起来呀?^-^
这里

  1. 不但有及时新鲜的AI资讯和深度探讨
  2. 还分享AI工具、产品方法和商业机会
  3. 更有体系化精品付费内容等着你,加入星球(https://t.zsxq.com/0dI3ZA0sL) 即可免费领取。(加入之后一定记得看置顶消息呀!)

知识星球二维码

存量的时代,省钱就是赚钱。
在增量的时代,省钱其实是亏钱。
避坑儿是省钱的一种形式,更是真正聪明人的选择!
弯路虽然也是路,但还是能少走就少走,背后都是高昂的试错成本。
订阅「福报」,少踩坑,少走弯路,多走一步,就是不一样的胜率!

订阅「福报Premium订阅」