サーバーに怒鳴りつけることでインターネット上で有名になった人物が、システム パフォーマンスを特徴付ける新しいタイプのデータ視覚化を作成するという、多少関連性のある別の偉業で現在有名になりつつあります。
クラウドプロバイダーJoyentの主任パフォーマンスエンジニアであるブレンダン・グレッグ氏は、CPUやメモリなどのシステムリソースの使用状況を効果的にグラフ化する「フレームグラフ」と呼ばれる可視化手法を開発しました。この手法はその後、多くのエンジニアに採用され、DTraceやWindows XPerfといった一般的な診断ツールの強化に活用されています。
グレッグ氏は木曜日、ワシントン DC で開催された USENIX LISA (Large Installation System Administration) カンファレンスで、フレーム グラフの仕組みについて説明した。フレーム グラフにより、システム管理者、パフォーマンス エンジニア、サポート スタッフ、およびシステムが予想よりも遅く動作している理由を解明しようとしているその他の担当者の診断時間が何時間も節約される可能性がある。
「スタック トレースは以前からありましたが、Brendan の取り組みによって、これまでは簡単に確認できなかった側面を非常に迅速に確認できるようになりました」とプレゼンテーションの出席者の 1 人が述べ、パフォーマンスの問題をめぐってソフトウェア ベンダーと最近争ったときに、仕事でフレーム グラフが役に立ったはずだと指摘しました。
ベンダーは、フレームグラフを使用して、最終的に 3 週間かかった問題を数時間で解決できたかもしれない、と彼は述べた。
専門知識
グレッグ氏の専門分野はシステムパフォーマンスの測定です。このテーマに関する彼の著書は、今年プレンティス・ホールから出版されました。
2008年、当時サン・マイクロシステムズに勤務していたグレッグは、突然の大きな音によってディスクI/Oが遅くなることを示し、注目を集めました。彼はサーバーに向かってかなり大きな声で叫ぶことで、その事実を実証しました。その結果生じた振動によってディスクが遅くなっていたのです。

グレッグは、システムのレイテンシをグラフ化するために作成した新しいタイプの視覚化ツールであるレイテンシヒートマップを紹介するYouTube動画を作成しました。この動画はITコミュニティで話題となりました。
フレームグラフは「苦境に立たされて」生まれたとグレッグ氏は語る。ある顧客が、アプリケーションの動作速度が予想より約40%遅いことに懸念を表明したのだ。問題を調査するため、グレッグ氏は50万行もの診断データを精査しなければならなかった。しかし、すぐにそのデータ量はあまりにも膨大で、簡単に理解できるものではないと悟った。
視覚化の第一人者エドワード・タフテに触発され、グレッグはデータセット全体を一つの画面に視覚化する方法を考え出しました。彼が思いついたのは、「共通要素を統合し、集約する」という手法でありながら、各要素が消費するリソース量の関係性を維持するというものでした。
フレームグラフとは何ですか?
記事の冒頭で紹介したようなフレームグラフは、複数の縦棒グラフで構成されており、各行は時間の流れを表し、下側の行が最も古く、上側の行が最も新しいものを表しています。各行には複数のバーが含まれる場合があり、各バーは異なる機能を表し、各バーの長さは、その時点でその機能が使用しているリソースの割合を表します。
CPU 使用率を表すフレーム グラフの場合、上部のバーには、データがキャプチャされた時点で実行されていたソフトウェア機能が表示されます。
CPUフレームグラフはスタックトレースに基づいて構築され、CPUが特定の時点で実行しているすべての関数をリストします。フレームグラフのデータの階層的な表現は、プロセッサ上のアクションの流れをカプセル化します。
グラフを調べることで、管理者はどの関数が他の関数から呼び出されているかを視覚的に追跡できます。複数の行をスキャンすることで、個々のプログラムのどの関数が、あるいはより高レベルでは、マシン上で同時に実行されている複数のプログラムのうちどのプログラムが、CPUリソースを過度に消費しているかを明らかにすることができます。
その他のフレーム グラフを作成して、リソースがメモリ内またはディスク I/O 内でどのように分割されているかを表示することもできます。
Gregg がフレーム グラフをレンダリングするために作成したプログラムは、ソース データを解釈するための約 300 行の Perl コードと、グラフをレンダリングするためのいくつかの SVG (Scalable Vector Graphics) 関数、および Web インターフェイスにマウスオーバー機能を追加するためのいくつかの JavaScript で構成されています。
他にも、DTrace、Windows XPerf、OS X Instruments、Perl パフォーマンス ツール、Google Chrome 開発者ツールなどの一般的なパフォーマンス ツールによって作成されたデータをフレーム グラフを使用して視覚化するプログラムを構築した人もいます。
Gregg 氏は、Dave Pacheco 氏による DTrace の node.js 実装が、Gregg 氏自身のプログラムよりも先進的であることから、標準的なフレーム グラフ アプリケーションになる可能性もあると述べました。
グレッグ氏は、フレーム グラフ以外にも、頻度トレイルと呼ばれる別の視覚化技術に取り組んでいます。これは、一連のデータ内の外れ値の特徴を示す R ベースのデータ レンダリングであり、クラウド コンピューティングの運用における重大なパフォーマンスの問題を特定するのに役立つ可能性があると彼は述べています。
グレッグはプレゼンテーション後のインタビューで、「彼は生まれつき視覚的な人間ではない。Unixのコマンドラインを使うのが一番得意だ。しかし、今日の大規模分散システムの性質上、視覚的な補助手段は不可欠だ」と語った。
「クラウドでは、1,000台のサーバーを、しかも今すぐに理解する必要があります。昨今の私たちの仕事には、可視化が不可欠です」と彼は語った。