Вопрос: Является ли виртуальная машина с двумя процессорами быстрее, чем одна с четырьмя процессорами?


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

Означает ли это утверждение?


65
2018-04-30 05:43


Источник




Ответы:


Это было правдой, но больше не является истиной.

То, что они имеют в виду, это Строгое совместное планирование,

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

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

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

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


62
2018-04-30 06:05



Просто в стороне - даже несмотря на препятствия виртуализации, обычно сложно написать программное обеспечение, которое использует параллелизм. Если ваши программные ребята недостаточно хороши, на самом деле может быть лучше иметь четыре виртуальных хоста, которые запускают один экземпляр программного обеспечения, каждый из которых имеет четыре потока выполнения. - Luaan
@Luaan В нем есть SQL Server, поэтому я предполагаю, что у них есть хорошие ребята из программного обеспечения. - AngryHacker
@AngryHacker да SQL-сервер может использовать все 4 ядра очень эффективно, если у вас есть соответствующие MAXDOP Настройки. Однако в зависимости от рабочей нагрузки чрезмерно облагаемый налогом SQL-сервер часто является признаком плохого проектирования базы данных - плохие индексы, не кластерные индексы, слишком много индексов, отсутствие оптимизации и т. Д. (Не всегда, но часто). - Mark Henderson♦
@Luaan Это все еще параллелизм ... только с гораздо большей задержкой, если им нужно поговорить друг с другом. :) - reirab
@MarkHenderson Его довольно хорошо оптимизирован, но некоторые рабочие нагрузки слишком велики, чтобы легко обрабатывать 2 процессора и тонну других запросов одновременно. - AngryHacker


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

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

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

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


14
2018-04-30 19:56





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

Я сократил vCPU на нескольких наших виртуальных машинах и видел улучшение производительности на большинстве. Горстка ухудшилась и нуждалась в том, чтобы ее набирали на счет vCPU.


3
2018-04-30 19:41