1. 网络队列与设备层观测概述Linux网络栈从应用层到网卡涉及多个层次,其中队列规程(Queueing Discipline,简称qdisc)和设备驱动队列(NIC RX-ring/TX-ring)是影响延迟和吞吐的关键环节。qdisc层提供了流量分类、调度、整形和过滤能力,支持fq、codel、cbq等多种算法。设备驱动则拥有自己的环形缓冲区,与qdisc协作共同决定数据包的发送时机。BPF可以通过tracepoints、kprobes等事件源深入观测这些队列的行为,包括队列排队时间、包从qdisc到驱动的延迟、以及包在队列中被丢弃的原因。本章介绍的工具包括:qdisc-fq:测量公平队列(Fair Queueing)中每个流的延迟分布。netsize:统计网络设备发送与接收的数据包大小分布。nettxlat:量化传输队列延迟,即从qdisc到驱动队列的排队时间。skbdrop:跟踪被网络栈丢弃的包及其原因。skblife:追踪sk_buff的完整生命周期,从创建到释放。ieee80211scan:监测WiFi网卡的扫描事件。这些工具让你不仅能看到宏观的丢包率,还能定位到具体的队列和代码路径。2. 关键延迟观测点2.1 qdisc队列延迟(qdisc-fq)qdisc队列延迟直接影响应用的吞吐与响应时间。fq(Fair Queueing)结合CoDel(Contr