У меня вопрос относительно рекомендации по настройке vCPU на виртуальном сервере Hyper-v. Документация для состояний приложения «Для максимальной производительности настройте выделение виртуальных процессоров один к одному для доступных логических процессоров узла Hyper-V» но я нахожу это немного запутанным.
У меня есть два типа хост-серверов Hyper-V в разных кластерах.
Хост Hyper-V с 4 сокетами, 40 ядер, 80 логических процессоров, 64 логических процессора хоста и .. Хост Hyper-V с 4 сокетами, 60 ядрами, 120 логическими процессорами, 64 логическими процессорами хоста.
Я ищу некоторую ясность в том, что именно означает выделение виртуальных процессоров один к одному доступным логическим процессорам узла Hyper-V в этом сценарии.
В Hyper-V нет выделения процессора. Вы не можете выделить виртуальный процессор (VP) логическому процессору (LP).
По крайней мере, начиная с Hyper-V 2012 (я думаю, даже с 2008 R2) Microsoft не дает никаких предложений по соотношению VP на LP (источник на 2016 год)
Но также верно и то, что один VP всегда выполняется на одном LP. Даже если вы перегрузите хост, что вполне возможно, Hyper-V управляет ресурсами, проверяя VP на LP и вне LP. Так что чрезмерные обязательства - это не плохо. Например, Hyper-V 2016 позволяет одной виртуальной машине иметь 240 виртуальных процессоров! Один хост поддерживает 2048 виртуальных процессоров!
Единственное, что следует иметь в виду, это то, что вы не должны чрезмерно загружать виртуальных машин на хосте Hyper-V, если у вас меньше виртуальных машин, чем логических процессоров. Потому что тогда происходит подкачка ЦП, что (возможно, не заметно, но может) повлиять на производительность.
Если вы не уверены, сколько VP вы назначаете виртуальной машине, начните с числа, которое вам удобно, и отслеживайте загрузку ЦП в течение определенного периода времени. Затем соответствующим образом отрегулируйте VP.
Я не уверен, о каком документе вы говорите, но это имеет смысл. Для достижения наилучшей производительности вам не нужно «чрезмерно загружать» ресурсы ЦП. Допустим, что возможность чрезмерного использования ядер ЦП, вероятно, является причиной, по которой мы виртуализируем, если бы у вас было соотношение 1-1, вы бы получили лучшую производительность. Итак, согласно этому эмпирическому правилу, если бы у меня была система с одним шестнадцатеричным ядром (12 логических процессов, если включена гиперпоточность). Я мог бы поставить 12 одиночных vcpu vms, 6, 2 vcpu vms и т. Д., Сохраняя соотношение 1-1.
Реальный вопрос заключается в том, будет ли ваше приложение в порядке с более типичным соотношением виртуальных ЦП и логики, оно действительно должно быть 1-1. Вам нужно будет сделать этот вызов в зависимости от того, что делает приложение.