У меня есть несколько виртуальных машин, которые были созданы из физических серверов. Некоторые из них имеют (на мой взгляд) несоответствующее количество процессоров - например, у нас есть веб-приложение, доступное только для внутреннего пользования, работающее на виртуальной машине с 4 выделенными процессорами. Это самая высокая спецификация наших виртуальных машин, но есть и другие, которые, как я подозреваю, имеют завышенные характеристики.
Насколько я понимаю, это может привести к снижению производительности, так как гипервизор ожидает, пока 4 процессора освободятся на хост-машине, при выделении процессорного времени этой виртуальной машине. Это также вызывает проблемы при попытке перенести виртуальную машину между хостами. Это справедливые предположения?
Глядя на сам сервер, я не вижу причин, по которым ему нужно 4 процессора. Просто так получилось, что на физическом сервере, на котором он был установлен, было такое количество процессоров.
Итак, вопрос в том, какие риски есть при уменьшении количества процессоров на этой виртуальной машине?
Некоторые детали:
Мы запускаем VMware ESX 3.5 на серверах с 8 ядрами и 20 Гб. Виртуальная машина в приведенном выше примере имеет 4 выделенных процессора и 3 ГБ ОЗУ. Серверная ОС на виртуальной машине - Windows Server 2003 Standard SP2 (не R2).
Единственное серьезное осложнение может возникнуть при переходе от многоядерного (т.е. двух или более) к одноядерному. Windows 2000, XP и 2003 (я не уверен насчет Vista, 2008 или 7) использовали другое ядро для многоядерных процессоров, чем для одноядерных. Тем не менее, это, вероятно, будет просто неким штрафом за производительность, а не полным взрывом.
Я бы проверил, что для каких-либо критических приложений также не установлено соответствие процессоров - это может испортить вам жизнь. посмотреть здесь: http://forums.whirlpool.net.au/archive/735180 или https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6168870.html
Изменить: то же самое будет верно и для linux, однако основная проблема SMP - это просто проблема производительности, а не полная остановка. В linux, с другой стороны, гораздо проще установить постоянную привязку процессора. видеть http://www.cyberciti.biz/tips/setting-processor-affinity- sure-task-or-process.html
Да, ваши предположения верны: у планировщика ESX должно быть 4 доступных ядра, чтобы запланировать выполнение виртуальной машины с 4 виртуальными ЦП, поэтому он просто не будет работать вообще, если доступны только 2 или 3 из них, независимо от того, как ВМ действительно собирается их использовать; гость О.С. может иметь только один работающий поток, но планировщик ESX по-прежнему не сможет запустить виртуальную машину, если недостаточно доступных свободных ядер.
Уменьшение количества виртуальных ЦП обычно является безопасной операцией, но это сильно зависит от гостевой ОС, которая фактически должна будет справиться с изменением (виртуального) оборудования. Современные системы Windows и Linux обычно не имеют с этим никаких проблем.