专栏更新至今,四大基础模块的最后一个模块——网络篇,我们就已经学完了。很开心你还没有掉队,仍然在积极学习思考和实践操作,热情地留言和互动。还有不少同学分享了在实际生产环境中,碰到各种性能问题的分析思路和优化方法,这里也谢谢你们。
今天是性能优化答疑的第五期。照例,我从网络模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复。同样的,为了便于你学习理解,它们并不是严格按照文章顺序排列的。
每个问题,我都附上了留言区提问的截屏。如果你需要回顾内容原文,可以扫描每个问题右下方的二维码查看。
问题 1:网络收发过程中缓冲区的位置
第一点,是网络收发过程中,收发队列和缓冲区位置的疑问。
在 关于 Linux 网络,你必须要知道这些中,我曾介绍过 Linux 网络的收发流程。这个流程涉及到了多个队列和缓冲区,包括:
-
网卡收发网络包时,通过 DMA 方式交互的环形缓冲区;
-
网卡中断处理程序为网络帧分配的,内核数据结构 sk_buff 缓冲区;
-
应用程序通过套接字接口,与网络协议栈交互时的套接字缓冲区。
不过相应的,就会有两个问题。
首先,这些缓