組み込み Linux - FAQ -- Vzet カーネルトレース ビジュアライザ 

 

PRODUCTS&SERVICES
Products
Services
FAQ

  Vzetについて

Vzetとはどのようなソフトウェアですか?
      Vzetとは、Linuxシステム上で動作するプロセス(スレッド)の「振る舞い」を 「見える化」するツールです。
      お使いいただいているお客様からは「大変助かっており、使いつくしている」との感想をいただいております。

どのようにLinuxシステム上の「振る舞い」を知るのですか?
      Vzetは、ftraceというトレーサの出力結果(ログデータ)を使用します。

どのようなときに使うのでしょうか?
    • Vzetは、様々な開発シーンで利用できます。
        アプリケーション開発
      • エンジニアが自分で書いたコードの「振る舞い」をVzetで確認できます。これによって、Vzetはコードの最適化・効率化、作業効率アップに貢献するでしょう。
        マルチコア
      • マルチコア環境では、いかにOS上のタスクを効率よく各コアに分担させるかが鍵になります(負荷分散)。Vzetのフロントパネルにある「CPU選択」で表示を切り替えれば、CPU毎の「振る舞い」をグラフで追うことができます。また、グラフエリアの「RATIO」から特定プロセスがCPU時間をどれくらい使用しているかを知ることができるので、負荷分散へのヒントになります。
        省電力化へのヒント
      • 開発プロジェクトでの、バッテリー駆動時間の省電力化、環境への配慮が必要となる状況において、CPUのクロック数を低くして省電力化を図るケースが考えられます。VzetはCPU毎の「idle」時間を表示することができます。これを見れば、現在のCPUクロック数が与えられたシステムに対して、どの程度パワーがあるかわかるはずです。
        ミーティング
      • カーネル開発者とアプリケーション開発者が、共同の議論を必要とする場面において、Vzetが提供する見える化は、グラフという双方が理解しやすい環境を提供するでしょう。また、Vzetは開発に携わらない人に説明するときにも助けとなるはずです。
        教育
      • OSがどのように動き、CPUをどのように使用するかは本を読んでもイメージがつかめないものです。しかし、Vzetのグラフを見れば、OSがいかにタスクをスケジューリングし、いかに複数あるタスクをタイムシェアリングしているかを順を追って見ることができます。これは、初心者から熟練者まで直感的な情報になります。新入社員の教育、トレーニングをはじめ、教育の現場で活用いただけます。

使うにはどのような環境が必要でしょうか?
    Vzetのご利用には、Vzetが起動するホストマシンと「見える化」したいターゲットLinuxシステムが必要です。Vzetは Javaベースのため、Java仮想マシンがインストールされていれば、原則として32bit/64bit環境で動作可能です。
      ホストマシン:  32bit/64bitのWindows XP / 7, Fedora 14, Ubuntu 10.04 LTSで
      動作確認済み
      ターゲットシステム:  2.6.27以降Linuxカーネルが必要(ftraceを使用する場合)

購入前に試すことはできるでしょうか?
サブスクリプションとありますが、どのようなものでしょうか?
      Vzetのサブスクリプション契約いただきますと、Vzetを1年間ご利用いただけます。
      期間中に2回のアップデートを予定しています。

「シート」とありますが...
      1台のPC にVzetを1つインストールしていただくことになります。
      会社/部署単位など、複数のPCでお使いいただく場合にはPC数分のシートをご購入ください。

ライセンスキーとはどのようなものですか?
      製品をお使いいただくためのライセンス情報を格納したファイルです。 Vzetを使用するPCのMACアドレスをお知らせいただき、その情報にしたがって発行するライセンスキーをお送りいたします。
      なお、ライセンスキーの発行は、原則としてVzetご購入から1か月以内とさせていただいております。

アップデートが含まれるとありますが、どのようなアップデートが予定されているでしょうか?
      Vzetのアップデートでは、ftraceが有する様々なトレーサをサポートするよう機能拡張が行われます。
      また、よりユーザーライクなアプリケーションへと成長するため、既存機能のメンテナンスが行われます。

Vzet Ver.2.2では、どのようなアップデートがされたのですか? New!
      Vzet Ver.2.2では、次の機能追加などが行われました。

    • Vzet-sched
    • データカウント機能の搭載
    • グラフとテキストの双方向連動
    • Linuxカーネル 3.3 以降への対応

    • Vzet-image
    • 「カスタムスクリプト」によるリモートデータ収集
    • フィルタリング表示機能の搭載
    • csvエクスポート機能の搭載


  Vzetとカーネルについて

トレーサとは何ですか? デバッガとの違いは何ですか?
      トレーサとは、一般にCPUを止めずに、システム全体で実行した命令とその結果を実行順に出力するツールです。そのためプロセス(スレッド)を実行させながら、システム全体のデータを取得できます。これにより、プロセス(スレッド)の「振る舞い」を見える化し「グラフ」という形で見ることができます。主にシステム全体としてのパフォーマンス向上や、高速化・効率化したい場合、またエラーのあるプログラムの特定などに向いています。

      一方、デバッガは、CPUを止めて特定プログラムの状態(メモリ、レジスタ、変数)を調べます。そのため、ブレーク時点などでの詳細な情報を取得できる一方で、他のプロセス(スレッド)間との実行状況の関連などについて、詳細な情報を取得することには向いていません。デバッガは主に、特定プログラムのバグの発見などに向いています。

ftraceとは何ですか?
      ftraceは、Linuxカーネル2.6.27以降標準に装備されているトレーサです。
      ftraceは、静的トレーサであるので、動的トレーサに比べて高速に動作します。
      ftraceは、アーキテクチャ非依存で、プラグインによって拡張が可能です。
      今後の機能拡張が見込まれます。
      静的トレーサ:カーネルコード中に直接トレース呼び出しが記述されているトレーサ
      動的トレーサ:トレース時に実行するモジュールを動的にカーネルに組み込めるトレーサ

ftraceを有効にするにはどうすればよいですか?
    • カーネルコンフィグレーションより以下の項目を設定し、再コンパイルします。
        2.6.25-rt , 2.6.26-rt
      • Kernel hacking --->
      • [*] trace kernel events
      • [*] Trace process context switches
        2.6.27
      • Kernel hacking --->
      • [*] Trace process context switches
        2.6.28 ~ 2.6.29
      • Kernel hacking --->
      • [*] Tracers --->
      • [*] Trace process context switches
        2.6.30 , 2.6.29-rt
      • Kernel hacking --->
      • [*] Tracers --->
      • [*] Trace process context switches
      • [*] Trace various events in the kernel
        2.6.31 ~ , 2.6.31-rt ~
      • Kernel hacking --->
      • [*] Tracers --->
      • [*] Trace process context switches and events

ftraceのトレースデータを取得するには?
    ftrace のトレースデータを取得するための2つの方法を説明します。
    Vzetでは、手動で取得したトレースデータを取り込み「見える化」できます。
    トレースログは、ftraceが有効化された2.6.27以降のLinux Kernelを搭載していれば、組み込みLinux、PC Linux、Androidなど、どのようなプラットフォームからでも取得できます。
    ftraceを有効にする手順はこちらを参照下さい。
    なお、ターゲットとはトレースするLinux Kernelが動作するハードウェアを意味します。
       ターゲットのコンソール上でコマンドを実行する
    • 例として、2.6.27 ~ 2.6.38までのLinux Kernelをトレースする手順をご紹介します。
    • この手順は、どのようなプラットフォームに対しても共通です。rootユーザーで実行ください。
    1. debugfsをマウントします。
         ftraceで使用するファイル群は、/sys/kernel/debug/tracing下にマウントされます。
    2. 使用するトレーサを登録します。
         sched_switch トレーサはプロセスのタスク切り替えをトレースすることができます。
    3. トレースを開始します。
    4. トレースしたいユーザーアプリケーションを実行します。
    5. トレースを終了します。
    6. 取得したトレースログを保存します。
    7. 4.で実行したユーザーアプリケーションの名前がトレースログに含まれることを確認します。
       スクリプトを使う
    • トレースログを簡単に取得できるスクリプトをご用意しましたので、活用ください。
    1. こちらからzipファイルをダウンロードし、展開します。
         カーネルバージョンにより使用するスクリプトが異なります。
    • 2.6.27 ~ 2.6.38までのLinux Kernelをトレースする場合
    • 2627_38 ディレクトリ下のスクリプトをご使用ください。
    • 2.6.39以降のLinux Kernelをトレースする場合
    • 2639 ディレクトリ下のスクリプトをご使用ください。
    2. カーネルバージョンにあったスクリプトをターゲット上にコピーします。
         以下、rootユーザーで実行します。
    3. スクリプトに実行属性を与えます。
    4. start-trace.shを実行します。(トレース開始)
    5. トレースしたいユーザーアプリケーションを実行します。
    6. stop-trace.shを実行します。(トレース終了)

プラグインとは何ですか?ftraceのプラグインにはどのようなものがありますか?
      プラグインとは、ftraceに追加機能を提供するプログラムです。Linuxカーネル 2.6.28では、次のようなプラグインが提供されています。
        function: 全てのカーネル関数をトレースする(関数の入口のみ)。
        function_graph: 全てのカーネル関数をトレースする(関数の入口と出口)。
        sched_switch: タスク間のコンテキストスウィッチとウェイクアップをトレースする。
        irqsoff:     割り込み禁止区間をトレースし、最大待ち時間を記録する。
        preemptoff: プリエンプト禁止時間をトレース・記録する。
        preemptirqsoff: 割り込み、またはプリエンプト最大禁止時間をトレース・記録する。
        wakeup: 最大待ち時間をトレース・記録する。
        hw-branch-tracer: 全ての実行されたブランチをトレースする(x86のみ)。

ftraceの処理時間(オーバヘッド)について教えて下さい。
      処理時間は、CPUの性能、traceポイントのリングバッファに保存するパラメータの数により変わります。例として、Atomボードの計測結果を示します。計測は、kernelのschedulerでコンテキスト・スイッチの
      ログを収集しているtraceポイントで行いました。traceポイント前後の時間から処理時間を計測しています。
        Intel® Atom™ CPU 330 @ 1.60GHz
        traceポイント実行時間:平均 約2.7μsec(2744nsec)
        先頭3200件 hook実行時間(nsec)

イベントとは何ですか?
      イベントとは、カーネルソース中に記述されたトレースポイントが実行されたことを表します。
      例えば、割り込みハンドラの開始を表す irq_handler_entry イベントは、kernel/irq/handle.c内の
      handle_IRQ_event()というカーネル関数が実行されたことを意味します。

トレースポイントとは何ですか?
      トレースポイントとは、カーネルの特定箇所でデータを記録するための関数です。
      トレースポイントは、メンテナーによってカーネルソース中に記述されています。

独自にトレースポイントを追加するにはどうすればよいですか?
      手動でカーネルソース中にトレースポイントを記述し、カーネルを再コンパイルする必要があります。
      イベントトレースとして追加することにより、VzetのContext Switchのグラフに重ねて表示することが可能です。 詳細については、下記のカーネルドキュメント、サンプルコードをごらんください。
        カーネルドキュメント
      • linux-2.6.31/Documentation/trace/events.txt
        サンプルコード
      • linux-2.6.31/samples/trace_events/trace-events-sample.c
      • linux-2.6.31/samples/trace_events/trace-events-sample.h

イベントトレースするにはどのような環境が必要ですか?
      ターゲットシステムのカーネルバージョンが、2.6.30以降である必要があります。
WakeUpとは何ですか?
      WakeUpとは、TASK_INTERRUPTIBLE, TASK_UNINTERRUPTIBLEなどの待ち状態にあるプロセスを実行状態(TASK_RUNNING)に切り替えることです。

  VzetとAndroidについて

Androidの開発に使えるでしょうか?
      お使いいただけます。
      バージョン1.2.0では、Androidシステムの「見える化」の強化が行われました。Vzetは、この機能強化によってAndroid開発に参画されるエンジニアの皆さまによりご活用いただけるツールへと進化しました。

adb経由でリモートトレースするにはどのような環境が必要でしょうか?
      Vzetを使用するホストマシンにAndroid SDKをインストールする必要があります。


 
LinuxLink

Linuxを開発し製品に組み込むために必要となるソフトウェア、各種ツールそしてドキュメントが用意されており、組み込みLinux開発を始めたばかりの開発者からエキスパートまで、幅広く利用いただけます。


Warp!!Warp!!

瞬時に起動 驚きの速さ その感覚はまさに“ワープ(Warp)”斬新な高速起動ソリューション Warp!!の速さを体感ください。サポートアーキテクチャも拡充。


LL-rescueLL-rescue

(Lineo Linux-rescue:エルエルレスキュー)Linux搭載の製品開発において発生する様々な課題/問題を解消するためのソリューションです。



Timesys    Mimer   MITSUBISHI   Belcarra

ARM        Freescale        Renesas       jla         Linux Fundation


Copyright © 2009 Lineo Solutions, Inc. All rights reserved.