39.3. 使用 SystemTap 监控网络数据包丢弃
Linux 中的网络堆栈可以丢弃由于各种原因的数据包。有些 Linux 内核包括一个追踪点 kernel.trace ("kfree_skb"),其跟踪数据包在哪里被丢弃。
dropwatch.stp SystemTap 脚本使用 kernel.trace ("kfree_skb") 来跟踪数据包丢弃;脚本总结了每 5 秒间隔丢弃数据包的位置。
先决条件
- 如安装 SystemTap 所述,已安装了 SystemTap。
流程
运行
dropwatch.stp脚本:stap --example dropwatch.stp
# stap --example dropwatch.stpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
dropwatch.stp脚本 15 秒的结果类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要使数据包的位置更有意义,请参阅
/boot/System.map-$ (uname -r)文件。此文件列出了每个功能的起始地址,允许您将dropwatch.stp脚本输出中的地址映射到特定功能名称。以下的/boot/System.map-$ (uname -r)文件的代码片段中,地址0xffffffff8024cd0f映射到功能unix_stream_recvmsg,地址0xffffffff8044b472映射到功能arp_rcv:Copy to Clipboard Copied! Toggle word wrap Toggle overflow