Linux(服务器编程):百万并发服务器系统参数调优( 七 )
九、总结附加用户态协议栈设计
- 在服务器承载百万客户端的时候 , 这时候会有大量的数据在进行交互 。 对于默认的应用程序来说 , 其数据的传输都要经过协议栈缓冲区 , 如下图所示:
- 客户端发送数据到服务端时 , 数据先达到网卡 , 然后将数据拷贝到协议栈中 , 最后再把数据从协议栈中拷贝到服务端程序中
- 服务端回送数据时是相反的顺序 , 先把数据从服务端程序拷贝到协议栈 , 然后再把数据拷贝到网卡发送给客户端
文章插图- 从上图可以了解 , 当服务端与百万客户端数据交互的时候会带来下面的弊端:
- 数据要进行大量的拷贝 , 从而造成程序的性能降低
- 数据交互速度受限与缓慢
- 用户态协议栈设计:通过上面我们知道 , 数据要经过一层协议栈 , 会对性能带来影响 , 因此可以自己设计“用户态协议栈” , 大致原理如下:
- 数据交互时不再经过协议栈 , 将网卡与服务端的数据mmap映射到内存中 , 直接从内存中进行交互 , 从而减少了中间的拷贝
- 这就是常说的“零拷贝”
文章插图- CPU|Intel要推CPU氪金:花钱解锁额外功能、Linux内核率先支持
- 编程|拔掉SIM卡,关机,使用非智能手机,行程码就不知道你的行踪了?
- 小米科技|宋九九:我的腾讯云服务器被封禁,被限制访问
- 编程|扫街我可能还是喜欢带徕卡,因为它体积小,不会引人注目
- Linux|华为鸿蒙系统的优势,真的太明显了,是面向未来的IOT系统
- Linux|钱包可能不保!骁龙888+ 6.1英寸屏,想选索尼全靠信仰加持
- Linux|体验近两个月!实话实说,体验最好的国产折叠屏手机还得是这一款
- Linux|7K能买到的全能本!华硕天选air开启预约,这三点提升诚意十足
- Linux|启中教育:直通车很烧钱?如何打破?
- Linux|追赶Win11系统 新版Linux将支持12代酷睿独家秘技
