[Linux] trying out DTrace

[訳注]
原文では、DTraceをdtrace/Dtraceと記載していますが、後日エントリの筆者が訂正していますので、ここではDTraceとして表記します。

Oracle OpenWorldで発表したDTrace for Linuxについてもうちょっと情報をお伝えしたいと思います。
今回DTraceのプレビュー版をリリースしましたが、まだ全ての機能が出揃っていませんので、新しい機能を追加するごとにアップデートを提供する予定です。

DTraceは、Oracle Linuxのサポート加入者であればご利用頂けますが、以下の作業が必要です。
  • 貴社のシステムをUnbreakable Linux Network (ULN) に登録
  • Oracle Linux 6 + Unbreakable Enterprise Kernelを実行
  • DTraceチャンネル(ol6_x86_64_Dtrace_BETA)を使用してサーバーを登録
  • UEK 2.6.32のアップデートバージョンとDTraceカーネルモジュール、ユーザースペースのプログラムのインストール
  • 実行
詳細の手順は以下の通りです。
  1. サーバー上でuln_registerrootユーザーとして実行し、ULNにサーバーを登録する。その際、シングルサインオンID、パスワードおよびOracleのLinuxサポートID(CSI)の入力が必要。
  2. システム登録後、ULNのWebサイトにログインし、Systemsをクリック、登録したばかりのサーバ(複数可)を確認
  3. サーバをクリックし、Manage Subscriptionsを参照
  4. 利用中のサーバにDTrace for Oracle Linux 6チャンネルを追加し、[Save]をクリック
  5. サーバのバックエンドで、yum repolistを入力して全て正常に動作していれば、ol6_x86_64_Dtrace_BETA が表示されるはずなので、確認しておく
  6. 必要なパッケージをインストール
    1. yum install dtrace-modules
    2. yum install dtrace-utils
    3. yum install kernel-uek-2.6.32-201.0.4.el6uek
  7. DTrace ULNチャネルから指定のカーネルをインストール
  8. 再起動して新しいカーネルに移行
  9. カーネルモジュールをロードする。
    modprobe dtrace
    modprobe systrace
これでDTraceを使う準備ができました。数多くの有用なDTraceスクリプトを提供する予定にしていますが、簡単な例を一つ用意しました。サーバ上でOracle Databaseが動作している場合に、Oracle Databaseの実行ファイルがサーバのどのファイルを開いているか、調べてみたいと思います。この場合の簡単なコマンドは以下のようになります。
dtrace -n 'syscall::open*:entry/execname == "oracle"/{ printf("%s %s", execname, copyinstr(arg0)); }'
この例は、どんなファイルをoracleが開いているかを表示します。

もっと多くの機能がでてきますが、とりあえずみたいという既存のお客様のために、チェックしてみましょう。 カーネル 2.6.32-201.0.4 のソースはULNで利用可能で、DTraceカーネルモジュールのソースは、CDDLライセンスに基づいており、これもULNで利用可能です。userspaceツールはもあります。UEK2ベータ版のカーネル用DTraceはまだありませんが、UEK2ベータカーネルのアップデートで出てくる予定です。現在、実行時にプローブ/プロバイダを「切り張り」する、Kspliceテクノロジーが利用できるか検証中です。うまく行けば、余分なコードなしでカーネルを実行できるようになるでしょう。DTraceを有効にしたければ、まずはKSplice DTraceのアップデートをして、DTraceを実行し、事後にアンロードしましょう。しかし、ここで鍵になるのは、単語のEVALUATEです:)。

[簡単な例]
# dtrace -n 'syscall::open*:entry/execname == "oracle"/{ printf("%s %s", execname, copyinstr(arg0)); }'
dtrace: description 'syscall::open*:entry' matched 2 probes
CPU     ID                    FUNCTION:NAME
  2      8                       open:entry oracle /proc/2672/stat
  2      8                       open:entry oracle /proc/2674/stat
  2      8                       open:entry oracle /proc/2678/stat
  2      8                       open:entry oracle /proc/2682/stat
  2      8                       open:entry oracle /proc/2686/stat
  2      8                       open:entry oracle /proc/2688/stat
  2      8                       open:entry oracle /proc/2690/stat
  2      8                       open:entry oracle /proc/2692/stat
  2      8                       open:entry oracle /proc/2694/stat
  3      8                       open:entry oracle /proc/loadavg
  1      8                       open:entry oracle /u01/app/oracle/oradata/XE/system.dbf

原文はこちら。
http://blogs.oracle.com/wim/entry/trying_out_dtrace

0 件のコメント:

コメントを投稿