OS選択の新常識:カーネル挙動を追尾する「DTrace」の実力 (1/8)

Solaris 10の強化機能としてクローズアップされることが多い「DTrace」。さまざまなサービスが並列稼働する基幹サーバでは、カーネル挙動によってボトルネックを判断することも多い。DTraceは、解決するための打開策となるのか? 実例サンプルで検証していく。


 Solaris 10の目玉となる機能のひとつに、実行中のサーバ情報をいつでも取得できる「DTrace」がある。DTraceは、稼働サーバ上で思うようなパフォーマンスが得られなかったり、トラブルが生じた際に原因究明するのに役立つ機能だ。この「OS選択の新常識」Solaris特集では、DTraceを使うと具体的にどのような情報を取得でき? どのようなシーンで役立つのか? その実例を解説していくことにしよう。

DTraceの仕組み

 まずは簡単に、DTraceの仕組みから説明する。

 Solaris 10の内部には、「プローブ」と呼ばれる約3万個所のデータ観測ポイントが用意されている。そして、このプローブを提供するプログラムのことを「DTraceプロバイダ」と呼ぶ。DTraceプロバイダは、表1に示すいくつかのカテゴリに分類されているのだ。

プロバイダ 提供される主な情報
dtrace DTraceの開始時や終了時、エラー発生時などにイベントが発生するプローブ。後述のDスクリプトでプログラムするときに、初期化処理や終了処理、エラー処理などを記述する時に用いる
lookstat ロック状態が変化した時にイベント発生するプローブ
profile 一定時間ごとにタイマイベントを発生するプローブ。定期的に値を集計したい時などに用いる
fbt Function Boundary Tracing。カーネル内部の関数への突入/退出ごとにイベントを発生するプローブ
syscall システムコールへの突入/退出ごとにイベント発生するプローブ
sbt Statically Defined Tracing。アプリケーション定義のプローブ。アプリケーション開発者があらかじめsys/sdt.hにある関数群を呼び出し、DTraceのイベントを発生させるように構成する時、該当ルーチンを通過するとイベント発生する
sysinfo カーネルのステータス情報(kstat -n sysで取得できる情報)を提供するプローブ
vminfo カーネルの仮想メモリ情報(kstat -n vmで取得できる情報)を提供するプローブ
proc プロセスの生成、終了、シグナル受信などが発生した時にイベント発生するプローブ
sched CPUスケジューリングに関する情報を提供するプローブ
io ディスク入出力情報に関するプローブ。iostatコマンドで取得できる情報を提供する
mib Management Information Bases(MIB)情報を提供するプローブ。kstat -nやnetstatコマンドで取得できる情報を提供する
fpuinfo SPARCプロセッサのFPUシミュレート機能状態を提供するプローブ
pid 任意のプロセスIDをもつプロセス内の指定した位置の関数への突入/退出ごとにイベントを発生するプローブ
plockstat プロセスのロック状態を知らせるプローブ
fasttrap ユーザープロセスがDTraceを呼び出すときに、そのユーザープロセスに対してデータを流し込むためのハンドラ。現状では利用されない
表1■DTraceプロバイダ種別

 プローブから何か情報を得るためには、dtraceコマンドを用いる。dtraceコマンドを始めとするプローブから情報所得するプログラムを「DTraceコンシューマ」という。

 DTraceコンシューマを使ってプローブを活性化すると、プローブ部分を通過した時にDTraceコンシューマがコールバックされる仕組みだ。この時、引数としてプローブからの情報が渡される。

 つまりDTraceとは、あらかじめプローブに対して「該当部分を通過したら通知してほしい」などと登録することにより、カーネルや実行中のアプリケーションをリアルタイムにトレースする機能なのだ(図1)。

fig01.gif 図1■DTraceの仕組み

 各種DTraceプロバイダは、標準で組み込まれており、DTraceを使う時にカーネルやアプリケーションを再コンパイルする必要はない。

 なお標準では、DTraceを利用できるユーザーは、rootユーザーのみに制限されている。これは、プローブからメモリへの読み書きや送受信されているデータ(キー入力も含む)を覗き見ることができるため、セキュリティ上好ましくないためだ(実際に後の例で、ファイルへの書き込みを覗き見る方法を例として説明する)。

       1|2|3|4|5|6|7|8 次のページへ

Copyright© 2010 ITmedia, Inc. All Rights Reserved.




キャリアアップ



エンタープライズ・ピックアップ

news004.jpg 世界で勝つ 強い日本企業のつくり方:利用契約の検討――グローバルクラウドで失敗しないために(前編)
2010年以降、クラウドサービスの利用がさらに加速する。サービスを利用する企業はプロバイダーのデータセンターに預けた自社情報を保護するために、法的な要素を理解しておかなければならない。企業が注意を払うべき法的な検討事項を整理する。

news001.jpg IT投資の新方程式:「Twitter使ってます」――現役MS社員が“社員力”を語る(前編)
マイクロソフトが掲げるプロモーションメッセージ「社員にチカラを。ITで企業力を。(以下、BIEB)」からは、ITで社員の生産性を向上することが業績の拡大につながる、といったニュアンスを感じる。そこで気になるのが「じゃあ、マイクロソフトの社員自身はどうなのよ?」ということ。3人の現役MS社員により実態が明らかになる……?

news010.jpg 産業構造を変えるか:「住宅クラウド」の衝撃
住宅都市工学研究所が進める「住宅クラウド」は、クラウドが企業のIT領域にとどまらず、ビジネスのやり方自体を変える可能性を示している。

news010.jpg オルタナティブな生き方 栗原進さん:ネットでリアルを楽しくしたい
SE出身の企業広報マンでありながら、趣味は落語で憧れの人はインディ・ジョーンズとアナログ全開の栗原さんに、ブログを書く理由やネットからはじまるコミュニケーションについて伺った。

news001.jpg 最強最速アルゴリズマー養成講座:トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター
プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。