|
|
C:\Users\Victor\Documents\Fetion\temp\95af7adee4c29c5854ea5f137b38bc95.jpg3 v% A8 _) f: v% |7 Q# P; [4 f& H
: @$ z+ G; z Z: E' Q$ `& t) D一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,与其他 Linux 进程一样被调度。 比如在我的实验机上运行的虚机 kvm1 在宿主机中 ps 能看到相应的进程。4 F5 D) b3 l9 N/ N- j, Z
虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程。看下图8 H' v9 W: Z2 M. v
5 w1 D, i) N9 D
在这个例子中,宿主机有两个物理 CPU,上面起了两个虚机 VM1 和 VM2。 VM1 有两个 vCPU,VM2 有 4 个 vCPU。可以看到 VM1 和 VM2 分别有两个和 4 个线程在两个物理 CPU 上调度。- c0 x! Y3 B! J0 M& W$ V4 f4 o
这里也演示了另一个知识点,即虚机的 vCPU 总数可以超过物理 CPU 数量,这个叫 CPU overcommit(超配)。 KVM 允许 overcommit,这个特性使得虚机能够充分利用宿主机的 CPU 资源,但前提是在同一时刻,不是所有的虚机都满负荷运行。 当然,如果每个虚机都很忙,反而会影响整体性能,所以在使用 overcommit 的时候,需要对虚机的负载情况有所了解,需要测试 这边的cpu的数据使用率超过百分之百就是因为底层配置了超分,所以已经使用的cpu数目是可以大于很多物理cpu的数据的 |
|