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

Действительно ли виртуальная машина с 2 процессорами быстрее, чем виртуальная машина с 4 процессорами?

Наши ИТ-специалисты создали виртуальную машину с двумя выделенными ЦП, а не с четырьмя, которые я запрашивал. Их причина в том, что виртуальная машина лучше работает с 2 процессорами, а не с 4 (по их мнению). Причина в том, что гипервизор виртуальной машины (в данном случае VMWare) ожидает, пока все процессоры станут доступны, прежде чем задействовать любой из них. Таким образом, требуется больше времени для ожидания 4, а не 2 процессоров.

Имеет ли смысл это утверждение?

Раньше это было правдой, но теперь это не совсем так.

Они имеют в виду Строгое совместное планирование.

Самое главное, что в алгоритме строгого совместного планирования наличие запаздывающего виртуального ЦП приводит к совместной остановке всей виртуальной машины. В упрощенном алгоритме совместного планирования ведущий виртуальный ЦП решает, следует ли ему совместно останавливаться, основываясь на расхождении с самым медленным соседним виртуальным ЦП.

Сейчас, если у хоста только 4 потока, тогда было бы глупо выделять их все. Если у него два процессора и 4 потока на процессор, тогда вы мощь не хотите выделять все содержимое одного процессора, так как ваш гипервизор должен стараться держать виртуальные ЦП на одном узле NUMA, чтобы ускорить доступ к памяти, а вы усложняете эту работу, выделяя весь сокет одной виртуальной машине (См. Страницу 12 этого PDF-файла выше).

Таким образом, существуют сценарии, в которых меньше виртуальных ЦП жестяная банка работать лучше, чем больше, но это не так в 100% случаев.

С учетом всего сказанного и сделанного, я очень редко выделяю более 3 виртуальных ЦП на гостя. Каждый получает 2 по умолчанию, 3, если это большая рабочая нагрузка, и 4 для таких вещей, как SQL-серверы или действительно тяжелые виртуальные машины с пакетной обработкой, или терминальный сервер с большим количеством пользователей.

Это во многом зависит от основного гипервизора и администраторов, которые его запускают, позвольте мне объяснить:

  1. Плохая практика - просто произвольно давать вам 4 процессора только потому, что вы этого просили. Вообще говоря, вы считать нужно 4; но мониторинг ресурсов говорит, что вам нужен только 1.
  2. VMware ESXi например требует блокировки всех pCPU, когда vCPU делает запрос на ресурсы CPU; так что на этом гипервизоре это плохо для производительности. KVM не выполняет блокировку, как ESXi; он использует базовый планировщик ядра, но, тем не менее, в конечном итоге может вызвать конкуренцию ЦП.
  3. Если вы с самого начала строите системы с 4 процессорами, вы на самом деле не масштабируете, а увеличиваете (что является плохой практикой, особенно для виртуальных машин). Возможно, вы захотите проверить, как вы проектируете то, над чем работаете, чтобы его можно было масштабировать для современных современных облачных инфраструктур.

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

Из-за блокировки, которая может возникнуть с гипервизором, действительно верно, что 2 процессора могут быть быстрее, чем 4 процессора.

Да, это утверждение в целом имеет смысл. Однако это то, что вы должны проверить на предмет вашей точной конфигурации и рабочей нагрузки. Иногда больше процессоров лучше, если вы действительно можете ими воспользоваться. Однако, если у вас на самом деле не так много параллелизма, виртуальная машина, настроенная с меньшим количеством процессоров, часто будет работать немного лучше, поскольку она позволяет избежать замедления из-за пауз в состоянии готовности процессора.

Я уменьшил количество виртуальных ЦП на некоторых наших виртуальных машинах и заметил улучшение пропускной способности на большинстве. Некоторым стало еще хуже, и их нужно было увеличить по количеству виртуальных ЦП.