Oracle® Linux

DTraceチュートリアル

オラクル社の法律上の注意点
オラクル社のドキュメントのライセンス

E50705-12

2019年8月


目次

はじめに
1 DTraceの紹介
1.1 このチュートリアルについて
1.2 DTraceについて
1.3 DTraceのプロバイダについて
1.4 DTraceのインストールおよび構成の準備
1.4.1 自動ロードされるDTraceモジュールの使用
1.4.2 DTraceモジュールの手動ロード
1.5 簡単なDTraceプログラムの実行
1.5.1 例: BEGINプローブを使用するシンプルDプログラム(hello.d)
1.5.2 演習: ENDプローブの使用
1.5.3 演習の解決および例: ENDプローブの使用
2 オペレーティング・システムの動作のトレース
2.1 プロセスの作成のトレース
2.1.1 例: 実行されたプログラムとしてのシステムの監視(execcalls.d)
2.1.2 演習: DTraceからの詳細な出力の抑制
2.1.3 演習の解決: DTraceからの詳細な出力の抑制
2.2 システム・コールのトレース
2.2.1 例: システム上でのopen()システム・コールの記録(syscalls.d)
2.2.2 演習: printf()関数を使用した出力の書式設定
2.2.3 演習の解決: printf()関数を使用した出力の書式設定
2.3 指定した間隔でのアクションの実行
2.3.1 例: tick.dの使用
2.3.2 演習: tickプローブの使用
2.3.3 演習の解決および例: tickプローブの使用
2.3.4 例: Tick.dの変更済バージョン
2.4 述語を使用したアクションの選択
2.4.1 例: Daterun.dの使用
2.4.2 例: 使用可能なsyscallプロバイダ・プローブのリスト
2.4.3 演習: syscallプローブの使用
2.4.4 演習の解決: syscallプローブの使用
2.5 システム上のイベントの計測
2.5.1 例: read() Systemコール期間のモニタリング(readtrace.d)
2.5.2 演習: システム・コールのタイミング
2.5.3 演習の解決: システム・コールのタイミング
2.5.4 演習: Cpに対するすべてのシステム・コールのタイミング(calltrace.d)
2.5.5 演習の解決: Cpに対するすべてのシステム・コールのタイミング(calltrace.d)
2.6 親プロセスおよび子プロセスのトレース
2.6.1 例: システムでのアクティビティをレポートするprocプローブの使用(activity.d)
2.6.2 演習: 述語を使用したアクションの実行の制御
2.6.3 演習の解決: 述語を使用したアクションの実行の制御
2.6.4 例: 指定されたプログラムに対するfork()およびexec()アクティビティの記録(activity1.d)
2.7 簡単なデータの集積
2.7.1 例: プロセスが起動したwrite() Systemコールの数のカウント
2.7.2 例: read()とwrite()システム・コールの数のカウント
2.7.3 演習: 固定期間に対するシステム・コールのカウント
2.7.4 演習の解決および例: 100秒を超える書込み、読取りおよびオープン・システム・コールのカウント(Countcalls.d)
2.7.5 例: プロセスによって起動されたシステム・コールのカウント(countsyscalls.d)
2.7.6 演習: ユーザーによって実行されるプロセスのトレース
2.7.7 演習の解決および例: 指定されたユーザーによって呼び出されたプログラムのカウント(countprogs.d)
2.7.8 例: プログラムが10秒で異なるファイルから読み取られた回数のカウント(fdscount.d)
2.7.9 演習: システムのコンテキスト・スイッチのカウント
2.7.10 演習の解決および例: システムのコンテキスト・スイッチのカウント
2.8 より複雑なデータ集計の使用
2.8.1 例: コマンドによって生成される読取りサイズの分散の表示
2.8.2 例: ブロック・デバイスに対するI/Oスループットの分散の表示(diskact.d)
2.8.3 演習: 読取りおよび書込みI/Oスループットの個別表示
2.8.4 演習の解決: 読取りおよび書込みI/Oスループットの個別表示
2.8.5 例: ファイル・システム・デバイス間の累積読取りおよび書込みアクティビティの表示(fsact)
2.9 システム・コールでのエラーの表示
2.9.1 例: システム・コール・エラーの表示(errno.d)
2.9.2 演習: システム・コール・エラーの詳細情報の表示
2.9.3 演習の解決: システム・コール・エラーの詳細の表示
3 ユーザー・スペース・アプリケーションのトレース
3.1 ユーザー領域アプリケーションのトレースの準備
3.1.1 例: DTraceヘルパー・デバイスのモードの変更
3.2 サンプル・アプリケーション
3.2.1 makefileファイルの説明と形式
3.2.2 primelib.h ソース・ファイルの説明
3.2.3 primelib.c ソース・ファイルの説明
3.2.4 primain.c ソース・ファイルの説明
3.2.5 プログラムのコンパイルとprime実行可能ファイルの実行
3.3 アプリケーションへのUSDTプローブの追加
3.3.1 演習: dprime.dファイルの作成
3.3.2 演習の解決: dprime.dファイルの作成
3.3.3 例: dprime.dファイルからの.hファイルの作成
3.3.4 演習: makefileによるdprime.hファイルの再作成
3.3.5 演習の解決: makefileによるdprime.hファイルの再作成
3.3.6 例: プログラムのテスト
3.4 USDTプローブの使用
3.4.1 例: simpleTimeProbe.dを使用した2つのプローブ間の経過時間の表示
3.4.2 例: timeTweenprobes.dを使用した各プローブ間の経過時間の表示
4 さらにDTraceを使う