TCP的这些内存开销原来是这样

描述

实际中 TCP 连接上肯定是要进行数据的收发的,而且还会有 TIME_WAIT 等其它状态。在这些复杂情况下,一条连接占用多大内存呢?飞哥用做了七天的实验结果告诉你!

实验1:ESTABLISH空连接

实验2:客户端 => 服务器发送数据测试

协议

实验3: 服务器 => 客户端发送数据测试

协议

实验4:非 ESTABLISH 状态

协议

协议

总结

我们把实验中的数据来总结一下

协议

可见,内核在 socket 内存开销优化上采取了不少方法:

1. 内核会尽量及时回收发送缓存区、接收缓存区,但高版本做的更好

2. 发送接收缓存区最小并一定不是 rmem 内核参数里的最小值,实际可能会更小

3. 其它状态下,例如对于TIME_WAIT还会回收非必要的 socket_alloc 等对象

责任编辑:xj

原文标题:漫画:花了 7 天时间测试,我彻底搞明白了 TCP 的这些内存开销!

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分