浅谈基于DPDK的用户态协议栈mTCP 1.背景 TCP短连接变得越来越普遍,90%以上的TCP流都是小于32KB的,50%的小于4KB。高速处理TCP短连接对于面向用户的在线服务和后台系统都是一项重要的需求,但是Linux TCP的处理速度峰值是30万/s(来源mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems),而packet I/O可以扩展到千万/s,所以当前的Linux TCP架构的处理速度是跟不上实际需求的。 2.MTCP特点 mTCP(User-Level TCP Stack for Multicore System)是一款开源的用户态TCP协议栈。在MTCP看来,原有的Linux内核态TCP/IP栈的实现主要存在以下问题:由于文件的描述符(File Descriptor, FD)在一个进程内部都是共享的,因此不同的CPU核在处理FD的时候存在相关的竞争。这些竞争包括:共享的监听FD的队列(锁保护)、FD的管理、需要在共享的空间内寻找空闲的FD。破坏了应用程序的局部最优原则,比如在基于per-core的包处理队列中,收到中断的CPU和最后实际处理网络数据读写的CPU不是同一个,这就带来大量的系统开销。低效的批处理方式,比如accept/read/write等系统调用效率不高,不断地要进行上下文的切换,并引起cache的不断更新。内核的TCP/IP栈处理报文的时候也很低效,对每个包都要进行内存的分配。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/61467.html