第2章 パフォーマンス監視ツール
この章では、ゲスト仮想マシン環境のモニターリングに使用されるツールについて説明します。
2.1. perf kvm リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
kvm オプションを指定した perf コマンドを使用して、ホストからゲストオペレーティングシステムの統計情報を収集および分析できます。perf パッケージは perf コマンドを提供します。次のコマンドを実行してインストールします。
# yum install perf
In order to use perf kvm in the host, you must have access to the
/proc/modules ファイルと /proc/kallsyms ファイルにアクセスできる必要があります。ファイルをホストに転送し、ファイルに関するレポートを実行する場合は、手順2.1「ゲストからホストへの /proc ファイルのコピー」 を参照してください。
手順2.1 ゲストからホストへの /proc ファイルのコピー
重要
必要なファイルを直接コピーする場合 (たとえば、scp を使用して)、長さがゼロのファイルのみをコピーします。この手順では、最初にゲスト内のファイルを一時的な場所に保存し (cat コマンドを使用)、次にそれらをホストにコピーして perf kvm で使用する方法について説明します。
ゲストへのログインとファイルの保存
ゲストにログインし、/proc/modulesと/proc/kallsymsを一時的な場所/tmpに保存します。# cat /proc/modules > /tmp/modules # cat /proc/kallsyms > /tmp/kallsymsホストへの一時ファイルのコピー
ゲストからログオフしたら、次の scp コマンドの例を実行して、保存されたファイルをホストにコピーします。ホスト名と TCP ポートが異なる場合は、それらを置き換える必要があります。# scp root@GuestMachine:/tmp/kallsyms guest-kallsyms # scp root@GuestMachine:/tmp/modules guest-modulesこれで、ホスト上のゲストからの 2 つのファイル (guest-kallsymsとguest-modules) が作成され、perf kvm で使用できるようになりました。perf kvm を使用したイベントの記録とレポート
前の手順で取得したファイルを使用して、ゲスト、ホスト、またはその両方のイベントの記録とレポートが可能になりました。次のコマンド例を実行します。# perf kvm --host --guest --guestkallsyms=guest-kallsyms \ --guestmodules=guest-modules record -a -o perf.data注記コマンドで --host と --guest の両方が使用されている場合、出力はperf.data.kvmに保存されます。--host のみが使用されている場合、ファイルの名前はperf.data.hostになります。同様に、-guest のみが使用されている場合、ファイルの名前はperf.data.guestになります。Ctrl-C を押すと、記録が停止します。イベントのレポート
次のコマンド例は、記録プロセスによって取得されたファイルを使用し、出力を新しいファイルanalyzeにリダイレクトします。perf kvm --host --guest --guestmodules=guest-modules report -i perf.data.kvm \ --force > analyzeanalyzeファイルのコンテンツを表示して、記録されたイベントを調べます。# cat analyze # Events: 7K cycles # # Overhead Command Shared Object Symbol # ........ ............ ................. ......................... # 95.06% vi vi [.] 0x48287 0.61% init [kernel.kallsyms] [k] intel_idle 0.36% vi libc-2.12.so [.] _wordcopy_fwd_aligned 0.32% vi libc-2.12.so [.] __strlen_sse42 0.14% swapper [kernel.kallsyms] [k] intel_idle 0.13% init [kernel.kallsyms] [k] uhci_irq 0.11% perf [kernel.kallsyms] [k] generic_exec_single 0.11% init [kernel.kallsyms] [k] tg_shares_up 0.10% qemu-kvm [kernel.kallsyms] [k] tg_shares_up [output truncated...]