4つのKVM Linuxゲストを持つLinuxホストがあります。すべてのゲストはほぼアイドル状態で、ゲストの内部負荷は<0.1です。
ホストで実行するとtop
、各KVMプロセスはCPUの約30%を使用します。
これは正常な行動ですか?ホストがアイドルゲストをホストするのに少ないCPUを必要とするようにしたいと思います。
普通なら、なぜですか?
正常でなければ何が問題なのでしょうか?
答え1
冷笑的に、これはWindowsゲストには「正常」ですが、Linuxゲストにはそうではないと言えます(少なくともこれをする人は見たことがありません)。
Windowsの場合、これは実行中のアプリケーション(アイドル状態に近い)によって大きく異なります。デフォルトのXPまたはW2K(まだKVMの最新バージョンの経験はありません)は、ホスト上で10〜20%の問題を引き起こします(約0%表示)、MS SQL Serverは30%以上に簡単に達します。これはタイマーアクセスおよび/またはACPIに関連しているようです。ただし、ACPI以外のVMでも、ホストのWindowsパフォーマンスは決して10%未満に低下しませんでした。
編集1(統合説明)
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
(ゲストから)出力は何ですか?それはkvm時計でなければなりません。 CONFIG_PARAVIRT_CLOCKおよびCONFIG_KVM_CLOCKのカーネル構成(/proc/config.gz)を確認してください。
答え2
KVMゲストがホスト上のすべてのリソース(CPU、RAMなど)を利用できるように構成されていることを確認します。通常、KVMゲストには1〜2個のCPU(コア)しか割り当てられませんが、システムにはより多くの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