KVM 1 cpu core est à 100% tandis que d'autres à 10% -20% de charge

Je ne sais pas quoi ou qui utilise cette quantité de CPU, la machine est un bi-quadcore avec un RAM de 16 Go. Exécuter Ubuntu 10.04

Chaque kernel semble utiliser 10 à 20%, sauf pour un kernel qui semble utiliser 100% en permanence.

En ce moment, j'ai environ 14 machines virtuelles en cours d'exécution, certaines ont 4 cœurs disponibles, mais la plupart d'entre elles ne sont que 1.

En haut, je remarque:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7873 root 20 0 530m 14m 3220 S 103 0.1 5597:41 kvm 

J'ai essayé d'utiliser kvm_stat:

 kvm statistics efer_reload 2400 0 exits 2199561167 6100 fpu_reload 1244255128 136 halt_exits 4368568581 1189 halt_wakeup 1714293806 103 host_state_reload 7549984578 1572 hypercalls 0 0 insn_emulation 1398403526 3069 insn_emulation_fail 3 0 invlpg 767635659 37 io_exits 2822598937 395 irq_exits 1449081931 283 irq_injections 4773146061 1220 irq_window 125330658 8 largepages 0 0 mmio_exits 326399432 0 mmu_cache_miss 192709243 7 mmu_flooded 69103717 4 mmu_pde_zapped 259908526 15 mmu_pte_updated 156 0 mmu_pte_write 329155981 19 mmu_recycled 856835 0 mmu_shadow_zapped 192679259 5 mmu_unsync 19380 -6 nmi_injections 0 0 nmi_window 0 0 pf_fixed 6517240715 389 pf_guest 4434843050 217 remote_tlb_flush 582797544 34 request_irq 0 0 signal_exits 5 0 tlb_flush 1708903974 201 

Mais je serai honnête, je ne comprends pas comment lire ceci et comment savoir s'il y a un goulet d'étranglement quelque part. Comment un process peut-il passer à 103% de charge? Ce lien est-il lié? Devrais-je être inquiet ou ce comportement normal?

Si vous appuyez sur la touche 'c' en haut, vous pouvez voir la command complète et comprendre quelle machine virtuelle est (mais un ps aux | grep 7873 le fera aussi).

Après avoir découvert quelle machine virtuelle génère la charge de la CPU, vous devriez la vérifier, comme si elle avait un process bloqué ou si elle était accrochée (en général, 100% du process kvm sont des blocs VM au stade du démarreur).

Une explication possible: il existe une CPU désignée responsable de l'entretien de l'interruption pour l'interface réseau. Cette CPU désignée est responsable de TOUS les packages entrants pour TOUTES les machines virtuelles. Cette CPU désignée interrompt alors la CPU assignée à la machine virtuelle pour la destination du package.

La réponse d'Intel à cette question est SR-IOV . Si vous avez des interfaces réseau très rapides et que vous recevez un grand nombre de packages, cela peut expliquer pourquoi votre effet est connu.

De plus, vous pouvez searchr le réglage de votre interruption réseau dans Linux.

Bonne chance. J'aimerais savoir si cela est utile 🙂