Я пытаюсь найти документацию или рекомендации по виртуализации в отношении выделения виртуальных ЦП на каждое физическое ядро (ЦП). Если это важно, я ищу vmWare для реализации виртуализации. Например, процессор Intel Xeon может иметь 4, 8 и т. Д. Ядер. Мне интересно узнать больше о выделении ресурсов помимо одного виртуального ЦП на одно физическое ядро. Производитель, с которым я говорю, определенно считает, что одно ядро может быть использовано для нескольких виртуальных ЦП.
В своих исследованиях я обычно вижу: «Ну, это зависит от вашего приложения». И в этом случае мое приложение редактирует код, компилирует / связывает, тестирует и управляет конфигурацией. Конечно, не все виртуальные машины должны быть настроены с несколькими виртуальными ЦП на ядро, но в общем случае.
Один физический ЦП может использоваться как много виртуальных ЦП. Ресурсы ЦП в решениях для виртуализации редко заканчиваются. Оперативная память и хранилище всегда являются ограничивающими факторами ...
Помните, что в VMware загрузка ЦП выражается в используемых МГц, а не в ядрах ... Если вы не установили привязку всех виртуальных ЦП на 100%. ВСЕ ВРЕМЯ, Я не думаю, что ваш поставщик правильный.
Давайте посмотрим на следующий кластер систем ...
из другого активного кластера - 3 хоста 42 виртуальных машины
Чтобы расширить описание ewwhite, если у вас нет приложений, которые могут явно использовать преимущества нескольких виртуальных ЦП или нескольких ядер на один виртуальный ЦП, выделение нескольких виртуальных ЦП / ядер для виртуальной машины не дает абсолютно никакого преимущества. На самом деле, чаще всего вы фактически получаете более низкую производительность, чем работу на одном виртуальном ЦП, которому назначено одно ядро, отчасти из-за накладных расходов на планирование, необходимых для запуска нескольких виртуальных ЦП.
FWIW, в настройках VDI часто упоминаемое число - 5 виртуальных ЦП на физическое ядро. Конечно, это касается рабочих столов в офисе. Если ваши виртуальные машины все время заняты компиляцией кода, возможно, вы не сможете разместить 5 виртуальных ЦП на физическое ядро.
Причина, по которой так много людей говорят, что «это зависит от обстоятельств», заключается в том, что это действительно так. Посмотрите на значения готовности ЦП и затем решите, можно ли увеличить нагрузку на ЦП в конкретной системе. Готовность ЦП - это показатель готовности виртуального ЦП к выполнению команды, но он должен ждать, пока станет доступным физическое время ЦП.
В вашем случае, если вы компилируете большие программы, вполне возможно, что вашим виртуальным машинам действительно потребуется много процессорного времени. Как заметил ewwhite, обычно виртуализация имеет тенденцию ограничиваться дисковым вводом-выводом и оперативной памятью, а не ЦП.
Основная проблема в основном такая же, как и при планировании процессов в физической системе. Пока нагрузка на систему ниже количества ядер (или даже логических процессоров в случае HyperThreading), все в порядке, и процессоры могут справиться с нагрузкой.
Пока одновременная нагрузка на все используемые виртуальные ЦП не превышает нагрузку, которую могут обрабатывать ваши физические ядра, все в порядке.
Для ваших требований только компиляция - это интенсивная работа с центральным процессором, которая требуется только время от времени. Для виртуальных машин-компиляторов мы выделяем столько процессоров, сколько доступно. Поэтому, если есть необходимость в компиляции, это будет сделано как можно быстрее (если ваш компилятор поддерживает параллельную компиляцию).
Это может быть неверно для виртуальной машины-компилятора, которая находится под постоянной нагрузкой (например, если вы предоставляете интернет-сервис для компиляции и который постоянно используется).
Одно практическое правило, которое я видел (возможно, в документации VMware), заключается в том, чтобы не выделять виртуальной машине больше ядер, чем физически существует на хосте, потому что это приведет к эмуляции нескольких виртуальных ядер на одном ядре, что добавит ненужных накладных расходов.