4 KVM= linuxゲストを持つLinuxホストがあります。すべてのゲストはかなりアイドル状態で、ゲスト内の負荷は<0.1です。
ここで、ホストでtop
を実行すると、各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を確認します。
これは 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