40.5. 便利な SystemTap スクリプトの例
SystemTap のインストール時に配布されるサンプルスクリプトは、/usr/share/systemtap/examples
ディレクトリーにあります。
stap
コマンドを使用して、さまざまな SystemTap スクリプトを実行できます。
- 関数呼び出しのトレース
para-callgraph.stp
SystemTap スクリプトを使用して、関数の呼び出しと関数の戻り値をトレースできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap para-callgraph.stp argument1 argument2
# stap para-callgraph.stp argument1 argument2
このスクリプトは、2 つのコマンドライン引数を取ります。1 つは、開始/終了をトレースする対象となる関数の名前です。もう 1 つは、トリガー関数です (任意)。この関数は、スレッドごとのトレースを有効または無効にします。トリガー関数が終了するまで、各スレッドでのトレースが継続されます。
- ポーリングアプリケーションの監視
timeout.stp SystemTap スクリプトを使用して、どのアプリケーションがポーリングしているかを特定および監視できます。これを把握することで、不要なポーリングや過剰なポーリングを追跡できます。これは、トラッキングは、CPU 使用率や省電力を改善するための領域を特定するのに役立ちます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap timeout.stp
# stap timeout.stp
このスクリプトは、各アプリケーションが
poll
、select
、epoll
、itimer
、futex
、nanosleep
、Signal
システムコールを何回使用したかを経時的に追跡します。- プロセスごとのシステムコールボリュームの追跡
syscalls_by_proc.stp
SystemTap スクリプトを使用して、システムコールを最も多く実行しているプロセスを確認できます。システムコールを最も多く実行している 20 個のプロセスが表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap syscalls_by_proc.stp
# stap syscalls_by_proc.stp
- ネットワークソケットコードで呼び出された関数の追跡
socket-trace.stp
SystemTap サンプルスクリプトを使用して、カーネルの net/socket.c ファイルから呼び出された関数を追跡できます。これにより、各プロセスがカーネルレベルでネットワークとどのように対話しているかを詳細に確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap socket-trace.stp
# stap socket-trace.stp
- 各ファイルの読み取りまたは書き込みの I/O 時間の追跡
iotime.stp
SystemTap スクリプトを使用して、各プロセスがファイルへの読み取りまたは書き込みを行うのにかかる時間を監視できます。これにより、システムへの読み込みに時間がかかっているファイルを判断する上で役立ちます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap iotime.stp
# stap iotime.stp
- タスクからサイクルを奪っている IRQ やその他のプロセスを追跡する
cycle_thief.stp
SystemTap スクリプトを使用すると、タスクが実行されている時間と実行されていない時間を追跡できます。これにより、どのプロセスがタスクからサイクルを奪っているかを特定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow stap cycle_thief.stp -x pid
# stap cycle_thief.stp -x pid
SystemTap スクリプトの詳細な例と情報は、/usr/share/systemtap
/examples/index.html ファイルにあります。Web ブラウザーで開くと、使用可能なすべてのスクリプトとその説明がリスト表示されます。
関連情報
-
/usr/share/systemtap/examples
ディレクトリー