Что означает закрепление процессора в контексте гипервизора KVM с несколькими виртуальными машинами
Я смотрю на настройку гипервизора KVM для некоторых виртуальных машин.
Гипервизор KVM имеет 8 физических ядер (16 с HyperThreading). Я хочу создать на нем 8 виртуальных машин, но я не могу понять, какая разница будет с процессором на нем.
Какая будет разница, когда я прикрепляю каждую виртуальную машину к другому ядру по сравнению с тем, когда я прикрепляю все виртуальные машины ко всем ядрам (устанавливая привязку к процессору 0-15)
Будет ли это иметь какие-либо преимущества в производительности?
Я предполагаю, что у меня будут некоторые преимущества кэширования, но будет ли разница, если я захочу запустить трафик на все виртуальные машины?
3 ответа
Прикрепление ЦП гарантирует, что виртуальная машина будет получать время ЦП только от определенного ЦП или набора ЦП. Если у вас нет очень конкретной причины для закрепления, обычно нет необходимости делать это.
Я уверен, что вы можете получить прирост производительности, если вы прикрепите каждую виртуальную машину к определенным ядрам процессора, а также ограничите гипервизор одним или двумя другими ядрами.
Это позволило бы вашим виртуальным машинам оптимально использовать кеши L1 и L2, которые зависят от процессора, и их не будут беспокоить прерывания от сетевых плат и контроллеров хранилища.
С другой стороны, я ожидаю, что гипервизор уже прилагает усилия, чтобы в основном направлять события ЦП одного и того же виртуального ЦП на одно и то же физическое ядро, и я сомневаюсь, что это приведет к значительному увеличению производительности, если вручную принудительно применить что-то более строгое.
Недостатки этого также очевидны: когда вы назначаете виртуальным гостям больше ядер, чем доступно физическим ядрам, маловероятно, что ручное закрепление процессора будет работать лучше, чем гипервизор. Это также будет ад, когда вы используете живые миграции.
Я не думаю, что это ваш случай, но другим это может помочь.
Закрепление ЦП может быть очень полезным, если в вашей системе имеется несколько узлов NUMA. Обычно это многорозеточные системы.
Закрепление ядра виртуальной машины только на одном процессоре системы позволяет избежать использования памяти другого процессора, уменьшая задержку и перекрестные помехи между процессорами. В том же случае полезно, если вы выполняете сквозную передачу pcie, поскольку линии pcie идут только от одного процессора.