[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 是作为 Host 标准进程实现的,我想知道 Guest 中看到的 L1/L2/L3 缓存对 Guest 来说真的很重要吗?
答案1
视情况而定。当然,客户机中的 Linux 内核调度程序在 vCPU 上排队任务时会使用缓存拓扑(哪些虚拟 CPU 共享一个缓存)。
如果客户机知道 vCPUS 物理上共享最后一级缓存(LLC,通常是 L3),则缓存排队任务是相对便宜的操作,包括将任务添加到列表中并在数据结构中设置一些位。
另一方面,如果 vCPU 不共享 LLC,则需要将处理器间中断 (IPI) 发送到目标 vCPU,这会更加昂贵,尤其是在处理中断需要通过 VMEXIT 切换到主机的客户机上。
Qemu 最近添加了对虚拟 L3 缓存选项如果客户无法自行弄清楚这些关系,您可以将其告知客户。该补丁还对可实现的性能提升进行了很好的描述。
答案2
我认为这没什么关系。
主机通过虚拟 CPU/Core 向客户机提供这些数据。我可以想象,主机可以为客户机提供任意值,而不会真正影响性能,因为无论如何,最终决定性能的是主机。
另一方面,如果 KVM 进行裸机虚拟化,那么客户机报告的缓存级别可能与实际 CPU 有直接关系,因为客户机可以直接访问硬件 CPU。因此,安装更好的 CPU 将在客户机中提供更好的性能。