前提背景: 生产环境上,服务器网络突然断链,ssh连接失败. 问题初步定位: 查找内核日志,得到网卡异常信息 Jan 24 11:52:43 localhost kernel: ixgbe 0000:84:00.0: eth0: RXDCTL.ENABLE on Rx queue 14 not cleared within the polling period Jan 24 11:52:43 localhost kernel: ixgbe 0000:84:00.0: eth0: RXDCTL.E
本文的目的不完全在于提供调优信息,而是在于告诉读者了解Linux kernel如何处理数据包,从而能够在 自己的实践中发挥Linux 内核协议栈最大的性能 The NIC ring buffer 接收环缓冲区在设备驱动程序和NIC之间共享. 网卡分配发送(TX)和接收(RX)环形缓冲区. 环形缓冲区是一个循环缓冲区,其中溢出只是覆盖现有数据. 应该注意,有两种方式将数据从NIC移动到内核,硬件中断和软件中断(也称为SoftIRQ). RX环形缓冲区用于存储传入的数据包,直到它们被设备驱动程序处理
笔记是边读边写的旁注,比较乱,没有整理就丢上来了. 可以说不仅要说fast packet process servey,也同时是一篇packet process的综述了.packet processing,放在传统协议栈的视角中看,也就是L2.L3的一个小部分,但是细看,里面也是有特别多的内容的,在这一小点上深究,也有特别大的意义. Introduction Intent的流量水平上去了,而且一直都是增长的势头:网卡硬件的速度上去了(在如今的数据中心,网口都有40Gbps的速率):pkt pro