VMware

Unofficial Tech Memo - Koji Komatsu

January 17, 2009


0

esxtopバッチモード

esxtopはESXのサービスコンソールで使用可能なパフォーマンス情報を表示するコマンド。ESXiの場合、Remote CLIやVIMAの仮想アプライアンスでresxtopとして同等のコマンドが用意されている。位置づけとしては通常時の継続的なパフォーマンス監視というよりは調査目的であるため、対話モードで使用することが一般的だが、バッチモードを使用するとパフォーマンス情報が標準出力にcsvフォーマットで出力されるため、ファイルにリダイレクトして別用途で使用することができる。
(VI Clientではパフォーマンスチャートの内容をMS Excelフォーマットで保存することができる。)

バッチモードを使用する一般的な手順

手っ取り早く使うには、下記のコマンドを使用する

esxtop -b -a -n 1 > esxtop_output.csv

-bがバッチモードを指定している。-aは全項目を出力することを示している。-nは表示する統計回数である。-nを省略した場合、適当なタイミングでCtrl-Cを押せばよい。

さて、全項目を出力するとデータ量が大きくなりがちなので、通常は項目を指定しておく。esxtopを対話モードで使用し、c/m/d/nキーなどで使用する画面を選択し、fキーで項目を選択した後、Wキーで設定を保存する。バッチモードでこの設定を指定することで、取り出したいデータだけを対象とすることができるのである。
なお、設定ファイルは複数つくることができるので、パターンを複数用意することも可能。例えば下記のようになる。

esxtop -b -c .esxtop_any_config -n 1000 > esxtop_output.csv

なお、esxtopの項目の説明については、マニュアル「リソース管理ガイド」やInterpreting esxtop Statisticsを参照されたい。

パフォーマンスモニタ(perfmon)での表示

バッチモードで書き出したcsvファイルは如何様にも使用できるが、グラフィカルなグラフにしたいなら、Windowsのパフォーマンスモニタ(perfmon)を使用することもできる。
手順は下記のとおり。

1.パフォーマンスモニタを立ち上げる(perfmonコマンド)
2.グラフを右クリックし、ドロップダウンリストから「プロパティ」を選択
3.開いた画面で「ソース」タブに切り替え
4.データソースセクションで「ログファイル」ラジオボタンを選択
5.「追加」ボタンをクリックし、esxtopのcsvファイルを選択
6.「OK」ボタンをクリックして画面を閉じる
7.再度グラフを右クリックし「カラムの追加」を選択
8.「次のコンピュータからカウンタを選ぶ」で、esxtopを取得したホストが選択されていることを確認し、表示したい項目を選択し「追加」する
9.必要な項目の追加が終わったら「閉じる」ボタンで画面に戻る


補足

VI Clientではパフォーマンスチャートの内容をMS Excelフォーマットで保存することができる。

0 Comments Permalink
0

LinuxゲストOSでの時刻同期

LinuxゲストOSでは、Kernelのバージョンによって時刻のずれを避けるための考慮が必要だったりする。最も一般的な設定としては、下記の3つ。

1.VMware Toolsの時刻同期機能を有効にする
これはESX3.5であれば、VI Clientで仮想マシンの設定項目に存在する「ホストとゲスト時間を同期」にチェックを入れるか、VMware Toolsの設定画面で有効にする。

2.grub.confでタイマーデバイス選択を制御する
かつては何を書くかで議論が絶えなかったが、今は下記の表であてはまるものをとりあえず盲目的に書いておく。
http://kb.vmware.com/kb/1006427

3.タイマー割り込みの回数を少なくする (kernel2.6系のみ)
これが一番厄介だが効果は劇的だったりする。kernel2.6系では、カーネルコンパイル時のオプションに1秒間の割り込み回数が100,250,1000の3種類が選べる。Novel SLES10SP2では250になっているが、RHEL4やRHEL5は1000になっている。特にVirtual SMP構成の場合は、CPUの分だけLOCの割り込みが倍増するため影響が大きい。
REHL4.7、5.1以降(CentOSもOK)であれば、2のKBにも記載されているようにgrubのdivider=10だけでよい。
だが、それ以外についてはkernelのヘッダファイルを修正して再コンパイルする必要がある。
具体的には、/usr/src/linux-2.6/include/asm-i386/param.hのHZの定義を下記のように修正する。(詳細はhttp://kb.vmware.com/kb/1420

#define HZ 100
もしくは、CONFIG_HZ_1000=yをCONFIG_HZ_100=yに変更して再コンパイルする。

タイマー割り込みの回数を確認する

さて、3の設定が効いているかどうかを確認する方法。dividerの設定は起動後に/proc/cmdlineでも確認できるが、割り込みの回数自体も/proc/interruptsで表示される累積の割り込み回数を何度か表示して、差分と経過時間から計算することができる。(SLES10SP2のように、ディストリビューションによっては最初から/proc/sys/kernel/HZに示されているケースもある。)

例えば、下記はdivider=10を指定したRHEL5.1で、10秒毎に/proc/interruptsの結果を表示した例。割り込みレベル0もしくはLOCの差を10で割ると、約100回の割り込みが発生したことがわかる。つまり、割り込み回数がデフォルトの1000から100になっていることがわかる。

--root@localhost ~--# /sbin/hwclock
Sat 03 Jan 2009 05:57:12 PM JST -0.686850 seconds
--root@localhost ~--# date
Sat Jan 3 17:57:12 JST 2009
--root@localhost ~--# cat /proc/interrupts
CPU0
0: 262551 IO-APIC-edge timer
1: 475 IO-APIC-edge i8042
6: 5 IO-APIC-edge floppy
7: 0 IO-APIC-edge parport0
8: 6 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 7455 IO-APIC-edge i8042
14: 24515 IO-APIC-edge ide0
169: 9294 IO-APIC-level ioc0
177: 1891 IO-APIC-level vmxnet ether
NMI: 0
LOC: 262605
ERR: 0
MIS: 0
--root@localhost ~--# sleep 10
--root@localhost ~--# cat /proc/interrupts
CPU0
0: 263557 IO-APIC-edge timer
1: 475 IO-APIC-edge i8042
6: 5 IO-APIC-edge floppy
7: 0 IO-APIC-edge parport0
8: 6 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 7455 IO-APIC-edge i8042
14: 24610 IO-APIC-edge ide0
169: 9306 IO-APIC-level ioc0
177: 1957 IO-APIC-level vmxnet ether
NMI: 0
LOC: 263609
ERR: 0
MIS: 0
--root@localhost ~--# date
Sat Jan 3 17:57:22 JST 2009
--root@localhost ~--# /sbin/hwclock
Sat 03 Jan 2009 05:57:23 PM JST -0.913159 seconds

なお、Windowsではperfmonでinterrupts/secという項目があるので、こちらで同様の計算ができるが、タイマー割り込みの回数だけを抜き出す方法は不明。

0 Comments Permalink
Click to view kkomatsu's profile Member since: Jul 29, 2007

このblogは小松康二の個人的なメモですのでサポート外の設定や勘違い等が含まれている可能性があります

View kkomatsu's profile

Communities