[root@centos7 opt]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@centos7 opt]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Model name: Intel(R) Xeon(R) CPU E31220 @ 3.10GHz
Stepping: 7
CPU MHz: 1627.984
BogoMIPS: 6185.67
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-3
[root@centos7 opt]# rpm -qa |grep qemu
qemu-kvm-1.5.3-105.el7.x86_64
...
如上,Host和guest都是centos7
在 Host 中,“lscpu”将显示 L1/L2/L3 缓存信息。Guest在使用“lscpu”时也有这样的缓存信息,因为guest是作为主机标准进程实现的,我想知道在guest中看到的L1/L2/L3缓存对guest来说真的很重要吗?
这取决于。当在 vCPUS 上排队任务时,来宾中的 Linux 内核调度程序肯定会使用缓存拓扑(虚拟 CPU 共享缓存)。
如果来宾知道 vCPUS 在物理上共享最后一级缓存(LLC,通常是 L3)缓存入队任务是相对便宜的操作,包括将任务添加到列表并在数据结构中设置一些位。
另一方面,如果 vCPU 不共享 LLC,则需要将处理器间中断 (IPI) 发送到目标 vCPU,这会更加昂贵,尤其是在处理中断需要通过 VMEXIT 切换到主机的客户机上。
Qemu 最近添加了对虚拟 L3 缓存选项的支持,如果它无法自行确定,您可以告诉来宾这些关系。该补丁还对可实现的性能胜利进行了很好的描述。
我不认为这应该重要。
主机通过虚拟 CPU/核心使来宾可以使用这些数据。我可以想象主机可以为客人提供任意值而不会真正影响性能,因为无论如何最终决定性能的是主机。
另一方面,如果 KVM 进行裸机虚拟化,则可能客户报告的缓存级别代表与真实 CPU 的直接相关性,因为客户可以直接访问硬件 CPU。因此,安装更好的 CPU 将为来宾提供更好的性能。