技術レポート

高い要求が生み出した
性能分析ツール

Erlang性能分析ツール
開発部
山科 氷魚

複雑な処理に既存の解析ツ―ルが追いつかない!

ユミルリンクは、2008年5月にリレーサーバー「Cuenote® SR-S」を公開しました。送信速度を制御し、効率の良い高速配送を実現させるためには、性能分析調査が必須でした。既存の性能分析調査ツールもありましたが、そのツールを使うこと自体が大きな負荷になってしまって、私たちの目指す高い性能を実現するための調査ができなかったのです。

目指すクオリティのために必要なら作る

「Erlang (アーラン)性能分析ツール」は、このような背景の中で生まれました。グラフ出力によってビジュアル的にボトルネックを見て取ることができます。「性能分析ツール」とは、動作中のプログラムのどの処理に時間がかかっているのかを調べるプログラムです。プログラムの動作を継続したまま、各種の状態を確認することができます。Erlang言語には標準で性能測定ツール(プロファイラ)が付属していますが、測定の負荷が高く、高負荷な状態のアプリケーションで測定が正確に行えない問題がありました。そこで、アプリケーション速度のチューニングを正しく行うために、ユミルリンクで独自にErlang言語用の高精度な性能分析ツールをつくりあげてしまおうと思い立ったのです。

コード同士の組み合わせに難航

開発にあたって難航したポイントを挙げたらキリがないですが、一番は、 ErlangVM(Erlang実行環境)の駆動系実装部分への追跡コードの埋め込みですね。
先ず、プロファイル処理がErlangコードの実行処理を阻害しないように、VMの実装系であるC言語レベルで完結させるように設計しました。そのため、ErlangのVM自体のコードにプロファイル用のコードをかみ合わせなければならず、試行錯誤しました。その他にも、VM内でのスタックや実行位置の判定やスレッドをまたがって実行されたときの追跡など、苦心した点はたくさんあります。

「確かな高性能製品を提供し続けたい。」

私たちは、このように、必要に応じて言語本体に手を加えることも行います。アプリケーションの性能を向上させ、ハードウェアへの投資を低コストに抑えたサービスを提供することが顧客満足につながると考えているからです。
いま、ユミルリンクでは、「Cuenote® SR-S」以外にも、「Cuenote® MR」の一部の処理でもErlang言語を利用しています。性能分析調査を踏まえているからこそ、私たちは、「ユミルリンクの製品は高性能である」と言えるのです。


メールマガジン

ページの先頭へ