kvm guest 中看到的 cpu L1/L2/L3 缓存真的很重要吗?

kvm guest 中看到的 cpu L1/L2/L3 缓存真的很重要吗?
[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 将在客户机中提供更好的性能。

相关内容