mTCP 论文阅读及具体实现

mTCP是指的是TCP on multicore system,是一种用户态TCP协议栈。传统TCP/IP
协议栈需要占用过多的CPU周期,因此,作者通过实现用户态的packet I/O Lib和TCP协议栈,将TCP协议栈的工作从内核态解放出来,从而实现性能的大幅提升。

背景和动机

运行在内核态的TCP协议栈需要占用过多的CPU周期。对于大量数据来说,传输开销不在于协议栈的处理流程,但是现如今数据量小的TCP连接越发常见,所以协议栈开销所占比重增大。

在该文之前的研究与优化方法均没有解决协议栈性能受制于CPU的情况,于是该文提出在用户态实现TCP协议栈的功能,从而提升性能。除此之外,作者还综合了之前所有已知的优化方法。

设计

总体的设计如图三所示,作者将socket功能和协议栈的功能都实现在了用户态。所有应用程序可以调用的接口最多只做少量改变。
在这里插入图片描述
图4展示了协议栈部分更为细节的内容,实现的关键在于图中:双方均可读写的buffer、应用传递操作给协议栈的job queues、协议栈传递操作给应用的event queue。对于这些部分的读写都是异步的,所以每次都可以读批量的内容。

总的来说,作者即是将部分协议栈的内容实现在了用户态,应用程序原本需要去内核态做的事情改成了去用户态做。由此将大部分开销由系统调用和上下文切换转换为函数调用。又通过设计一些队列使得可以多线程处理问题,进而函数调用的开销也平摊了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值