Сервер в кармане, или просто о сложном!

главная - Статьи - Виртуализация

Multi cores single socket vcpu. Или как создать один процессор виртуальной машины KVM с несколькими ядрами.

Теги: kvm Windows Linux Виртуальные машины

Возникла задача - есть хост KVM и нужна виртуальная машина с Windows Server. Лицензия есть. Создал, запустил, и вроде все ок, но от всех 12 ядер хостового CPU назначено только одно ядро. Ну что за вопрос - добавим. Стало 4 vcpu. Запустил Windows, а лицензия не подходит уже, т.к. я получил 4-х процессорную виртуальную машину (4 виртуальных сокета, а не 4 ядра одного процессора), хотя в реальности она использует всего треть от одного физического CPU. А сокеты от ядер в модели лицензирования отличаются. На каждый сокет нужно минимум 8 лицензированных ядер. Т.е. если у вас 4 проца с 2 ядрами каждый, то лицензировать придется минимум 4*8=32 штук ядер. А если 1 процессор с 8 ядрами - то 1*8=8 лицензий. Это вам не Debian или CentOS виртуализовывать, тут реально думать надо :)

То есть вариант правки конфига <vcpu placement='static'>4</vcpu> недостаточен.

Если нужен один виртуальный процессор на 2 ядра и 4 потока (эдакий гипертрейдинг), нужно в конфиг виртуальной машины внести, например, это:

<vcpu placement='static'>4</vcpu>

<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Broadwell-IBRS</model>
<topology sockets='1' cores='2' threads='2'/>
</cpu>

То есть мы по прежнему выделяем на одну vm 4 хостовых ядра, но раскидываем их по-другому. CPU-Z в гостевой Windows показал:

1 vcpu, 2 cores, 4 threads instead of 4 vcpu

Если вы знаете нюансы относительно того, что такое в данном случае ядра, потоки, как можно выжать больше из vcpu, можно ли считать такой подход абсолютно верным для лицензирования Windows, прошу оставлять комментарии. Это очень полезная информация.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?