DTraceで解析する流れ
ここ最近のFreeBSD DevSummitで感じることですが、開発者から高い注目を集めている機能のひとつがDTraceになっています。ユーザランドで動作するプログラムおよびカーネルの内部の動きを追うのにDTraceの機能が有効だからです。DTraceをどうやって使うのかといったチュートリアル的な話から、今後DTraceにどういった機能を追加していくのか、多くの開発者が高い関心を持っています。
DTraceでトレースできる対象は随時追加されていますので、カーネルの内部構造とDTraceの仕組みを知れば知るほど、システムのモニタリングを深く実施できるという状況にあります。多くの開発者がDTraceに高い関心を示しているのはこのためです。
DTraceは今後さらにパフォーマンス分析で中心的な役割を果たしていくと思います。便利なショートカット的なDスクリプトの情報も増えていくでしょう。DTraceに詳しいかどうかが開発者のスキルとして重要になっていくと考えられます。
しかしながら、*BSDはもともとシステムパフォーマンスをチェックするためにいくつものフックを用意していて、それらはさまざまなコマンドを経由してチェックできるようになっています。DTraceのようにインターフェースが統一されているわけではないので、コマンドごとに使い方が違うわけですが、覚えておいて損はないものです。
しばらく、FreeBSDでこうしたステムパフォーマンスをチェックするために利用するコマンドと、とくにどこを見ればよいのかを、リソースと知りたい対象という観点から整理して紹介しようと思います。今回はプロセッサです。
プロセッサパフォーマンスチェック
システム全体のプロセッサの使用状況を見るにはvmstat(8)コマンドを使います。cpuの項目にシステム全体のプロセッサの使用状況が表示されています。とくにusとsysの項目の合算でどの程度の負荷状態なのかがわかります。
プロセッサの合算値ではなく、コアまたは論理コア(スレッド)ごとの使用状況を見るにはvmstat(8)に-Pオプションを指定します。これでコア/論理コア(スレッド)ごとの使用状況を表示させることができます。
vmstat(8)と似た情報はtop(1)コマンドでも得られます。top(1)ではvmstat(8)で表示させたシステムまるごとのプロセッサの使用状況ではなく、プロセスごとのプロセッサの使用状況が確認できます。WCPUの部分が合算値です。
top(1)の方は-Sオプションを指定するとカーネルプロセスまで含めてどのプロセスがどの程度消費しているのかをチェックできます。
システム全体のプロセッサ使用状況についてはuptime(1)コマンドでも確認できます。load averageの項目がそれです。この部分がコア/論理コア(スレッド)の個数よりも大きな値を占めているようだと、常に実行待ちプロセスが存在するようなプロセッサ使い切り状況になっています。
ハードウェアよりになってきますが、pmcstat(8)コマンドを使うとプロセッサが提供している測定機能を使ってパフォーマンス計測を実施できます。このコマンドは上記コマンドのような簡単なサンプルは示しにくいのですが、ある程度使い方がpcmstat(8)のオンラインマニュアルに書いてあるので、より子細なパフォーマンス計測やエラー計測が必要な場合にはpmcstat(8)を使ってみてください。
勉強会
第58回 11月29日(火) 19:00- FreeBSD勉強会
2016年11月29日(火)には佐藤広生先生をお招きして第58回FreeBSD勉強会をドワンゴセミナールームで開催します。FreeBSD ZFS性能測定とチューニングのお話をしていただく予定です。第58回FreeBSD勉強会では、FreeBSD勉強会史上初、ニコ生放送を実施します。今後、2ヵ月に1回ほどのペースでFreeBSD勉強会の内容をニコ生放送する予定です。よろしくお願いします。
参加申請はこちらから。
第59回 12月21日(水) 19:00- FreeBSD勉強会
ストレージシステムの基盤として使われることの多いZFS。いったん運用を開始あるとあとはボリュームの管理や、ハードウェアの管理、またはより高速なハードウェアの利用などを行いたくなってきます。第59回のFreeBSD勉強会ではそうした部分にフォーカスしてZFSの扱い方を紹介します。このところ続けているFreeBSD ZFS解説シリーズです。
参加申請はこちらから。