Назад | Перейти на главную страницу

Cpu L1 / L2 / L3 cache видеть в гостевом kvm действительно имеет значение?

[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
...

Как указано выше, хост и гость являются centos7

В Host "lscpu" покажет информацию о кэше L1 / L2 / L3. У гостя также есть такая информация о кеше при использовании «lscpu», поскольку гость реализован как стандартный процесс хоста, я хочу знать, что кеш L1 / L2 / L3, который виден в госте, действительно важен для гостя?

Это зависит. Конечно, топология кеша (виртуальные процессоры совместно используют кеш) используется планировщиком ядра Linux в гостевой системе при постановке задач в очередь на vCPUS.

Если гость знает, что vCPUS физически совместно использует кеш последнего уровня (LLC, обычно L3), постановка задач в очередь - это относительно дешевая операция, которая состоит из добавления задачи в список и установки некоторых битов в структуре данных.

С другой стороны, если виртуальные ЦП не разделяют LLC, межпроцессорное прерывание (IPI) должно быть отправлено на целевой виртуальный ЦП, что намного дороже, особенно на гостевой машине, где обработка прерываний требует переключения на хост через VMEXIT.

Qemu недавно добавил поддержку опция виртуального кэша L3 который позволяет вам рассказать гостю об этих отношениях, если он не может разобраться самостоятельно. В патче также есть довольно приятное описание достижимой производительности.

Я не думаю, что это должно иметь значение.

Хост делает эти данные доступными для гостя через виртуальный процессор / ядро. Я могу представить, что хост может предоставить гостю произвольные значения, не сильно влияя на производительность, поскольку именно хост в любом случае определяет производительность.

С другой стороны, если KVM выполняет виртуализацию на «голом железе», возможно, уровни кэша, сообщаемые гостем, представляют прямую корреляцию с реальным ЦП, поскольку гость имеет прямой доступ к аппаратному ЦП. Таким образом, установка лучшего процессора даст лучшую производительность в гостевой системе.