私は4つのKVM Linuxゲストを持つLinuxホストを持っています。すべてのゲストはほとんどアイドル状態で、ゲスト内の負荷は<0.1です。
ここでtop
、ホストでaを実行すると、各KVMプロセスがCPUの約30%を使用しています。
これは正常な動作ですか?アイドル状態のゲストをホストするためだけに、ホストが必要とするCPUがはるかに少なくて済むと思います。
正常な場合、その理由は何ですか?
それが正常でない場合、何が問題なのでしょうか?
私は4つのKVM Linuxゲストを持つLinuxホストを持っています。すべてのゲストはほとんどアイドル状態で、ゲスト内の負荷は<0.1です。
ここでtop
、ホストでaを実行すると、各KVMプロセスがCPUの約30%を使用しています。
これは正常な動作ですか?アイドル状態のゲストをホストするためだけに、ホストが必要とするCPUがはるかに少なくて済むと思います。
正常な場合、その理由は何ですか?
それが正常でない場合、何が問題なのでしょうか?
回答:
皮肉なことに、それはWindowsゲストでは「普通」であると言えるが、Linuxゲストではそうではない(少なくとも、そのように振る舞うのを見たことがなかった)。
Windowsでは、実行中の(アイドルに近い)アプリケーションに大きく依存します。プレーンなXPまたはW2K(KVMの新しいバージョンについてはまだ経験がありません)では、ホストで10%から20%が発生します(内部では約0%と表示されます)が、MS SQLサーバーはこれを30%を超えて簡単に取得します。これは、タイマーアクセスやACPIに何らかの関係があるようです。しかし、非ACPI VMでも、ホストでWindowsが10%未満になることはありませんでした。
編集1(コメントの統合)
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
(ゲスト内)の出力は何ですか?それはkvm-clockでなければなりません。カーネル構成(/proc/config.gz)でCONFIG_PARAVIRT_CLOCKとCONFIG_KVM_CLOCKを確認します。
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
何ですか?
acpi_pm
ゲスト内とtsc
ホスト上にあります。Xはありませんが、各ゲストでJavaアプリケーションサーバーとOracle DBが実行されています。
kvm-clock
代わりに(ゲストで)する必要があります。それを明示的に設定する必要はありませんでした。カーネルコンフィグ(確認/proc/config.gz
用)をCONFIG_PARAVIRT_CLOCK
してCONFIG_KVM_CLOCK
。
y
ます。current_clocksourceをに設定するとkvm-clock
、状況が改善されます。現在、各KVMプロセスは約20%です。システムは以前のvirtualboxセットアップからKVMに移行されました。一部の設定は古い設定のものであるようです...
KVMゲストがすべてのホストのリソース(CPU、RAMなど)を利用できるようにプロビジョニングされていることを確認します。通常、KVMゲストは、さらに多くを含む可能性のあるシステム上で、1〜2個のCPU(コア)のみが割り当てられます。
これは、ホストのリソースと特定のKVMゲストの内部を比較したときに、まったく同じものを比較していないことを意味します。
ホストには次のものがあります。
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Stepping: 7
CPU MHz: 1200.000
BogoMIPS: 6404.04
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0-11
KVMゲストの1人がこれを持っていますが、
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 6
Stepping: 3
CPU MHz: 3202.024
BogoMIPS: 6404.04
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
NUMA node0 CPU(s): 0