0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BitVisorAdvent Calendar 2017

Day 10

BitVisorのvmmstatusの使い方

Last updated at Posted at 2017-12-10

BitVisorのtools/vmmstatus-gtkおよびtools/vmmstatus-win32の使い方を紹介します。

vmmstatusとは

VMMの状況を出力するツールです。

VMM側設定

make configでCONFIG_STATUSをセットします。

$ make config

また、defconfigまたはbitvisor.confにて、vmm.status=1にします。

tools/vmmstatus-gtkのビルド方法

gtk+2.0を使用していますので、必要なライブラリなどは事前にインストールしておきます。カレントディレクトリを移動して、./autogen.sh && makeで完了です。src/vmmstatus-gtkというファイルができます。

tools/vmmstatus-win32のビルド方法

MinGWクロスコンパイラーを事前にインストールしておきます。カレントディレクトリを移動してmakeで完了です。vmmstatus.exeというファイルができます。

Makefileはコマンド等がUnix環境のGNU Make用になっていますので、Windowsで使用される場合は必要に応じて修正してください。

出力内容の追加方法

coreディレクトリにあるソースコードにおいて、

#include "vmmcall_status.h"

としておいて、register_status_callback()関数にchar *(*func) (void)型の関数ポインターを渡して登録することができます。登録すると、vmmstatusのVMM呼び出しが来た時に、その関数ポインターの関数が呼び出されます。登録されている関数がすべて呼び出された後、返されたchar *型のポインターが指すUS ASCIIテキストが連結されて、vmmstatusのコマンドに返される仕組みになっています。通常staticの配列を返すように実装します。最後に'\n'を入れておきます。

本機能は、オーバーヘッドを調べたり、性能改善をしたりする際に、各処理の呼び出し回数などを数えて、それを定期的に取得して変化を見るのが目的です。そのような回数カウントは、複数の論理プロセッサから同時に実行される場所においては、asm_lock_incl()関数を使用するなどして、値が壊れないよう注意深く実装するのが普通です。これは、lock命令を使用するため性能に影響し、本機能を使用しない場合には消しておきたいものです。そのために、STATUS_UPDATEというマクロが用意されており、このマクロの引数に渡された文は、CONFIG_STATUSがセットされている場合にのみ展開されるようになっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?