• 検索結果がありません。

仮想計算機を利用した性能プロファイリングシステム

ドキュメント内 目次 (ページ 74-78)

4.2.1 構成

VMを利用した性能プロファイリングシステム [71] について,図4.1 にプログラム構成と データの流れを示す.これは,一台の物理計算機(ホスト)と一台のVM(ゲスト)で構成

された仮想化環境の例である.プログラムは,以下の四つからなる.

㼂㻹㻹㻛㻻㻿

㼁㼟㼑㼞✵㛫 㻷㼑㼞㼚㼑㼘✵㛫

䝕䞊䝍཰㞟 䝗䝷䜲䝞

཰㞟䝕䞊䝍䝞䝑䝣䜯 䝴䞊䝄䝁䝬䞁䝗

䞉 䝗䝷䜲䝞䛾⤌㎸䜏䞉๐㝖 䞉 䝕䞊䝍཰㞟䛾ᐇ⾜䞉೵Ṇ 䞉 䝕䞊䝍᱁⣡ฎ⌮䠄ᶖ䠅 䞉ゎᯒฎ⌮

䝥䝻䝉䝇᝟ሗ ௚ 㼂㻹

sDືస≧

ែ䛾㏥㑊ᇦ sD^

᱁⣡䝕䞊䝍 㻻㻿

䜶䞊䝆䜵䞁䝖 䝗䝷䜲䝞 䜶䞊䝆䜵䞁䝖䝁䝬䞁䝗 䞉䝕䞊䝍᱁⣡ฎ⌮䠄ᶗ㻕

⿕ ᐃィ⟬ᶵ䠄䝥䝻䝣䜯䜲䝸䞁䜾ᑐ㇟䠅

䝥䝻䝉䝇᝟ሗ

図 4.1 プログラム構成とデータの流れ

ユーザコマンドは,データ収集ドライバのVMMへの動的な組込み(ロード)やVMMか らの動的な削除(アンロード),およびデータ収集の実行開始の指示を行う.データ収集の開 始指示時に,収集周期や収集時間の指定も行う.また,データ収集終了時に,VM上のエー ジェントコマンドに対して,プロセス情報やオブジェクトファイルなどの各データのディス クへの格納指示を発行し,かつVMM上でも収集データやVMM上のプロセス情報やオブ ジェクトファイルなどの各データのディスクへの格納処理および解析処理を行う.これらの 処理のうち,VMM上のデータ格納処理を行うプログラムをデータ格納処理プログラムx と する.

データ収集ドライバは,VMM内にあり,指定されたデータ収集周期で,測定対象となる アプリケーションプログラムの動作情報のデータ収集を行う.VM上で動作しているアプリ ケーションプログラムの動作情報はVM動作状態の退避域から入手する.この退避域は,動 作中のVMと物理CPU(pCPU)の割り当てを待っているVMとの間またはVMとVMMと の間で実行制御が切り替わる際に,CPUのレジスタ値などハードウェア情報を退避復元する ためのメモリ領域で,Intel CPUではVirtual Machine Control Data Structure (VMCS) [72]

と呼ばれている.周期的なデータ収集は,データ収集開始から,指定されたデータ収集時間 が経過するまで行われる.また,データ収集開始直前には,初期設定として,指定バッファ サイズに基づいた収集データバッファの確保や,収集周期トリガを生成するためのCPUの

性能監視カウンタ(PMC)へのカウントベースイベントと初期カウンタ値の設定や,収集 時間に基づいたタイマの設定を行う.

エージェントコマンドは,データ収集終了時に,ホスト上のユーザコマンドからの指示に より,ゲスト内のプロセス情報やオブジェクトファイルなどの各データをホスト上のディス クへの格納処理を行う.このゲスト上のデータ格納処理を行うプログラムをデータ格納処理 プログラムyとする.また,エージェントドライバに対し,CR3-PIDのマッピング情報格 納を依頼する.CR3はIntel CPUのコントロールレジスタ3で,ページテーブルアドレスを 保持している.

エージェントドライバは,Linuxカーネルの各プロセスのタスク構造体からCR3とPID の値を対にして格納する.

4.2.2 データ

データ(A)はVMM上のみから,データ(B)〜(E)はVMM上とVM上から格納する.

(A)プログラム動作情報

(B)プロセス情報

(C)オブジェクトファイル

(D)カーネルのシンボルマップ

(E)実行条件や環境情報など付帯情報

プログラム動作情報(A)は,データ収集ドライバが周期的に収集する情報で,命令アド レス(IP)やPIDなどを含む.プログラム動作情報の具体的な内容を表 4.1 に示す.以降,

プログラム動作情報(A)のことを収集データとも呼ぶ.

プロセス情報(B)は,データ収集終了時に存在する各プロセスの情報で,PIDやプロセ ス名,ロードされているプログラムのメモリマップ情報やオブジェクトファイルのファイル システム上のパス情報である.

オブジェクトファイル(C)は,プロセス情報(B)に含まれる各プロセスのオブジェク トファイルである.即ち,データ収集中に動作していたプログラムの実行バイナリファイル で,プロセス情報(B)から得たパス情報を使ってファイルシステム上からコピーしたもの である.

カーネルのシンボルマップ(D)は,動作中のカーネルのシンボルマップファイルで,カー ネルの関数シンボル名とメモリマップ情報である.

付帯情報(E)は,収集周期や収集時間などの実行条件や動作環境の情報など参考情報で ある.

表 4.1 プログラム動作情報(収集データ)

名前 size 説明

(bytes)

Host IP 8 ホスト上の命令アドレス

Host Thread ID 4 カレント・スレッドID

Host PID 4 カレント・プロセスID

Host Return IP1 8 戻りアドレス1

Host Return IP2 8 戻りアドレス2

TSC 8 タイムスタンプカウンタ

vPROCESSOR ID 8 CPU管理の仮想CPUID

Guest IP 8 VM上の命令アドレス

Guest CR3 8 VM上のページテーブル

アドレス

VMEXIT REASON 8 VM EXIT要因番号

VMEXIT INTRINFO 8 VM EXIT割込み情報

(reserved) 16 予備

4.2.3 処理流れ

既性能プロファイリングシステム[71] の処理流れを以下に示す.

(1)ユーザから指定された収集周期と収集時間でメモリバッファ上にデータ収集を行う.

(2)収集後にデータ(A)〜(E)をディスクに格納する.

上記の処理後,サービスを停止させ,格納したデータを基に解析処理を行う.

ドキュメント内 目次 (ページ 74-78)