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
dropwatch.stp
スクリプトを 15 秒間実行すると、以下のような出力になります。Monitoring for dropped packets 51 packets dropped at location 0xffffffff8024cd0f 2 packets dropped at location 0xffffffff8044b472 51 packets dropped at location 0xffffffff8024cd0f 1 packets dropped at location 0xffffffff8044b472 97 packets dropped at location 0xffffffff8024cd0f 1 packets dropped at location 0xffffffff8044b472 Stopping dropped packet monitor
注記パケットドロップの場所をより意味のあるものにするには、
/boot/System.map-$(uname -r)
を参照してください。このファイルは、各関数の開始アドレスのリストを表示し、dropwatch.stp
スクリプトの出力内のアドレスを特定の関数名にマップできるようにします。/boot/System.map-$(uname -r)
ファイルの以下のようなスニペットの場合、アドレス0xffffffff8024cd0f
は関数unix_stream_recvmsg
に、アドレス0xffffffff8044b472
は関数arp_rcv
にマッピングされます。[...] ffffffff8024c5cd T unlock_new_inode ffffffff8024c5da t unix_stream_sendmsg ffffffff8024c920 t unix_stream_recvmsg ffffffff8024cea1 t udp_v4_lookup_longway [...] ffffffff8044addc t arp_process ffffffff8044b360 t arp_rcv ffffffff8044b487 t parp_redo ffffffff8044b48c t arp_solicit [...]