Sourcery System Analyzer

パフォーマンス・ボトルネックを迅速に解決

Sourcery System Analyzerは、強力で包括的なシステム/アプリケーション・パフォーマンス解析ツールです。シングルコア、マルチコア、マルチOSのいずれのシステムにも対応したSystem Analyzerを利用すれば、組込みシステムのプロファイリングや、パフォーマンス・ボトルネックの迅速な発見や解決が可能です。

 

 
 

Mentor Embedded Sourcery System Analyzerを利用することにより、組込みシステムのパフォーマンスの全体像を把握できます。

System Analyzerはオープン規格に基づいてEclipseのプラグインとして開発されており、既存のソフトウェア開発ツールとの統合が容易です。
System Analyzerは現在の複雑な組込みシステム向けに設計されており、マルチコアCPUへの対応、複数のオペレーティング・システム(OS)からのデータの統合、通信プロトコルのパフォーマンス解析を実現しています。
また、強力なトレース相関機能は、最新のシステム・アーキテクチャで生成される莫大なデータから新たな側面を発見できます。 System Analyzerはパフォーマンスの全体像を示すだけでなく、特定の動作について詳細に調べたり、プログラムの実行フローを追跡することも可能です。

特長

  • Sourcery CodeBenchと完全に統合
  • オープン規格とEclipse がベース
  • 複数のソースからトレース・データを収集
  • 内蔵の波形カリキュレータによって高度なデータ演算を実行
  • 数ギガバイト規模のデータセットを効率的に処理
  • ベアメタル、Linux、Nucleusをサポート
 
 

screenshot

プロセス/スレッド・ビューでは、各プロセスの生成時点や終了時点のほか、プロセスが置かれていた状態についての情報が表示されます。

screenshot

複数行にわたるFunction Gantt Chartビューには、同時実行プロセスに関する情報が表示されます。

システムの挙動を把握

System Analyzerは、様々なシステムからトレースやプロファイル・データを収集して、システム動作をタイムライン上に示します。Linux開発の場合は、次の3種類のデータソースが組み合わされます。第一に、広く普及している効率的なLTTng(Linux Trace Tool Next Generation)トレーシング・システムを利用してシステム・レベルの動作を収集します。第二に、アプリケーション・レベルのトレーシングについては、Sourcery CodeBenchコンパイラが関数の開始点と終了点を自動的に収集します。第三に、その他のOS、Light Weight Executive、ベアメタルのいずれの場合でも関連トレース・ポイントをアプリケーション内に手作業で挿入できるシンプルな機能がユーザに提供されます。

System Analyzerはこうしたデータを表示できるだけでなく、豊富な演算機能も備えています。ベースとなったトレース解析エンジンはメンター・グラフィックスが提供するワールドクラスの集積回路設計ツールを活用しており、比類なきパフォーマンスと機能を現在の組込みシステム設計者に提供します。System Analyzerでは、数ギガバイト規模のデータセットを容易に処理できます。

解析、そして最適化

高性能と低消費電力のいずれを目標にする場合でも、システムを改善するにはまず、どこで処理時間を費やしているかを判断しなければなりません。System Analyzerを利用すれば、システムやアプリケーションが最も時間を費やしているところを正確に把握できます。System Analyzerにはシステム内のコア、プロセスやタスク、リソースの状態が表示されます。

printfやログファイルよりもはるかに効率的

広く使用されている最初のデバッグ手法の1つがprintfであり、アドホックなメッセージをコンソールまたはログファイルに出力します。これはプログラムを設定して、現在の処理内容の詳細を把握するためのシンプルで容易な方法です。System Analyzerではこの快適なデバッグ手法も利用できますが、さらに改善が加えられています。シンプルな「trace_ mark」文を使用すると、アプリケーションにコメントを付けられます。これはタイム・スタンプとプロセスまたはタスクIDが付けられた状態で、System Analyzerのトレース・ウィンドウに表形式のリストとして表示されます。 コード中の「printf」と同様に表示されますが、システムに対するオーバーヘッド、依存関係、悪影響はありません。 System Analyzerでは、このデータの検索、ソート、フィルタリングを容易に行えます。 また、マウスを数回クリックするだけで、累計、カウント、平均、標準偏差の計算など数値データの処理を実行できます。

 

screenshot

コアの動作情報を視覚化して、プログラム名や関連プロセスIDとともに表示できます。

マルチコア・バグの追跡

マルチコア・プログラムの登場は、新たな種類のソフトウェア欠陥をもたらしました。競合状態、デッドロック、非決定的な動作は、特に発見が困難な問題です。SMPプログラムでは、スレッドの相互作用が原因で実行ごとに異なる結果が生じる場合があります。こうした場合、従来の「ストップ・アンド・ステア」(停止して確認)方式でのデバッグはもはや通用しません。

マルチコア・システムでのコアの過少利用もバグと考えられます。システムのコア数が多くなるほど、すべてのコアが十分に利用されていることを確かめなければなりません。System Analyzerを利用すれば、各コアでの処理内容、各コアで実行されているプロセス、コアの利用率が最適値より低下している箇所を確認できます。システム・レベルの複雑な相互作用を把握すると、パフォーマンス問題の根本原因が判明します。

 

screenshot

内蔵のトレース用Measurement Toolでは、複数のセットアップのいずれかを利用してシステムの解析と測定が可能です。ユーザが挿入したカーソルによって、対応するデータ範囲が測定されます。

データを情報に変換

システムの動作やイベントを時系列でグラフ化できるシステムは数多く存在しますが、こうしたトレースに対して複雑な演算を実行できるのはSystem Analyzerだけです。「トレース・カリキュレータ」を利用すれば、トレース・データの数学演算、統計演算、論理演算が可能です。 また、フィルタ機能を使って一連のトレース記録から単一のデータ要素を抽出できます。このデータ要素は、トレースとして時系列でグラフに割り当てられます。カリキュレータでは、2つのトレースの加算、トレース同士の減算、スカラ型の数学演算が可能です。トレースは生のデータを表しており、視覚化するとシステムの詳細を把握できます。ただし、トレース・データを有益な情報に変換するには、System Analyzerだけが備えている複雑な演算機能が欠かせません。