第7章 コンパイラーとツール
SystemTap
SystemTap とは、 追跡調査を行うことができるツールで、 ユーザーはオペレーティングシステム (特にカーネル) のアクティビティを詳細に渡って調査、監視することができます。 netstat、 ps、 top、 iostat などのツールからの出力と似たような情報を提供します。 ただし、 収集した情報に対してより詳細なフィルタリングや分析が行えるよう設計されています。
Red Hat Enterprise Linux 5.9 の SystemTap はバージョン 1.8 に更新され、以下の拡張機能を提供するようになりました。
- SystemTap ランタイム (staprun) では、
-T
タイムアウトオプションを使用するようになりました。これにより、ウェイクアップが減少するため、スクリプトから低スループット出力をポーリングできるようになりました。 kbuild
$PATH
環境は、 SystemTap により呼び出された場合、健全性を保持する目的で削除されるようになりました。printf
の形式に%#c
制御パラメーターを使用して、編集記号をエスケープできるようになりました。- プリティプリントのビットフィールドに整数を使用できるようになりました。また、文字はエスケープされた形式で表示するようになりました。
- SystemTap のコンパイルサーバーおよびクライアントは、IPv6 ネットワークをサポートするようになりました。
- SystemTap モジュールはさらに小型化され、コンパイルが速くなりました。デフォルト設定では、モジュールの debuginfo は表示されなくなりました。
@var
構文は、uprobe
およびkprobe
ハンドラー (プロセス、カーネル、モジュール) の DWARF 変数にアクセスするための代替の言語構文となりました。- SystemTap スクリプトトランスレーター/ドライバー (
stap
) は、以下のリソース上限のオプションを提供するようになりました。--rlimit-as=NUM --rlimit-cpu=NUM --rlimit-nproc=NUM --rlimit-stack=NUM --rlimit-fsize=NUM
- SystemTap compile-server は複数の同時接続をサポートするようになりました。
- 以下の tapset 機能は、1.8 リリースでは廃止予定になっています。また、 1.9 リリースで削除が予定されています。
daddr_to_string()
- SystemTap はローカルの変数を難号化して、tapset が含んでいる C ヘッダーとの競合を防ぐようになりました。