Виртуальные ядра процессора как сделать

Форумы ISPsystem.com > Системы управление виртуальными машинами > VMmanager KVM, Cloud > Виртуальные процессоры… 160? круто)


PDA

Просмотр полной версии : Виртуальные процессоры… 160? круто)


nebosklon

10.03.2016, 15:26

Вот у меня сервер с вмменеджером квм. процессор Intel Core i7-3770
центос 6.7 стоит.

вмменеджер гордо говорит, что 160 виртуальных процессоров в моем распоряжении.
пытался найти адеквантное пояснение по этому поводу. Но ничего кроме как то, что это вмменеджер эмулирует 160 вирт процессоров не нашел.

Конкретная ситуация: Есть две виртуалки. одну под виндой под терминальные сервер (до 5 юзеров). второй с дебиан под хостинг.

Как грамотно распределить ядра…. методом тыка ставить кучу ядер на дебиан… плохо работает. ошибки валяться. нормально на 8 ядрах работает.

Помогите разобраться, чтобы использовать всю мощность сервера и 80% отдать на виртуалку с хостингом.

Если надо, что оперативы 32 гига…

помогите плиз. А то складывается впечатление, что сервер юзается не полностью…. а на 9 из 160 ядер(1 на винду и 8 на дебина хостинговый)


nebosklon

10.03.2016, 19:34

Видимо это сложный вопрос даже для разработчиков


Делал примерно такую-же конфигурацию, где используется 1 сервер с виндой под терминал и второй на дебиан под веб-сервер.

У вас 4 ядра + гипертрейдинг = 8 ядер (4 физических 4 виртуальных)
На KVM, на сколько мне известно, не желательно давать виртуалке больше процессоров, чем есть у самого сервера.

В вашем случае, как мне кажется, есть 2 наиболее подходящих варианта:

1. Дать и виндовс, и дебиану по 8 ядер процессора, настроив вес CPU в пользу дебиана. Получается, что и винда и дебиан может использовать все 8 процессоров когда им надо, но дебиан в приоритете и если ему не хватает, он будет использовать больше ресурсов процессора. В этом варианте мощности процессора сервера действительно используется на 100%

2. Дать винде 2 или 4 процессора, а дебиану 8. Вес CPU тоже настроить в пользу дебиана, либо оставить равным. Получается более жесткое ограничение и 100% гарантия, что у дебиана всегда будут свободные ресурсы)

Вес CPU настраивается в настройках виртуальной машины

Я выбрал 1 вариант, но стоит учитывать, что, например, у Windows Server 2008 R2 есть ограничение по количеству процессоров — максимум 4. По умолчанию, VMManager настраивает виртуалку так, что если, например, дать ей 8 CPU, то каждый из них будет как-бы отдельным процессором, а не ядром одного процессора. Решить эту проблему поможет параметр <topology> — можно вручную прописать в qemu конфиге виртуалки с виндой. В вашей конфигурации лучше будет настроить так: <topology sockets=’1′ cores=’4′ threads=’2’/>

160 CPU означает, что вы можете назначить максимум 160 CPU всем вашим виртуальным машинам. Это может быть 160 виртуалок с 1 процессором, или 80 виртуалок с 2 процессорами, но количество назначенных CPU в общем не может превышать 160. С чем это связано я точно не знаю, видимо какие-то аппаратные ограничения по виртуализации.


nebosklon

11.03.2016, 02:19

Делал примерно такую-же конфигурацию, где используется 1 сервер с виндой под терминал и второй на дебиан под веб-сервер.

У вас 4 ядра + гипертрейдинг = 8 ядер (4 физических 4 виртуальных)
На KVM, на сколько мне известно, не желательно давать виртуалке больше процессоров, чем есть у самого сервера.

В вашем случае, как мне кажется, есть 2 наиболее подходящих варианта:

1. Дать и виндовс, и дебиану по 8 ядер процессора, настроив вес CPU в пользу дебиана. Получается, что и винда и дебиан может использовать все 8 процессоров когда им надо, но дебиан в приоритете и если ему не хватает, он будет использовать больше ресурсов процессора. В этом варианте мощности процессора сервера действительно используется на 100%

2. Дать винде 2 или 4 процессора, а дебиану 8. Вес CPU тоже настроить в пользу дебиана, либо оставить равным. Получается более жесткое ограничение и 100% гарантия, что у дебиана всегда будут свободные ресурсы)

Вес CPU настраивается в настройках виртуальной машины

Я выбрал 1 вариант, но стоит учитывать, что, например, у Windows Server 2008 R2 есть ограничение по количеству процессоров — максимум 4. По умолчанию, VMManager настраивает виртуалку так, что если, например, дать ей 8 CPU, то каждый из них будет как-бы отдельным процессором, а не ядром одного процессора. Решить эту проблему поможет параметр <topology> — можно вручную прописать в qemu конфиге виртуалки с виндой. В вашей конфигурации лучше будет настроить так: <topology sockets=’1′ cores=’4′ threads=’2’/>

160 CPU означает, что вы можете назначить максимум 160 CPU всем вашим виртуальным машинам. Это может быть 160 виртуалок с 1 процессором, или 80 виртуалок с 2 процессорами, но количество назначенных CPU в общем не может превышать 160. С чем это связано я точно не знаю, видимо какие-то аппаратные ограничения по виртуализации.

Это уже что-то проясняет. Спасибо тебе друг за неравнодушие к чужим бедам и неопытности. Вообщем-то все, что ты написал я догадывался. было дело даже ставил 64 ядра на дебиан. он работал очень плохо. и ошибки валились. я так понимаю 8 это предел теперь для любых машин. для винды это 4 ибо версия 2012 R2.

Про виртуальные ядра тоже примерно понял. Спасибо еще раз брат


Alex Keda

11.03.2016, 02:27

а что, у вас на машине реально 64 ядра?

невижу смысла ставить виртуалке больше чем физических ядер.


nebosklon

11.03.2016, 02:37

а что, у вас на машине реально 64 ядра?

невижу смысла ставить виртуалке больше чем физических ядер.

Чуть выше написано, что у меня физически 4 ядра и 4 виртуальных (Спасибо Intel). 64 ставить, чтобы методом тыка понять, что за 160 виртуальных процессоров мне предлагает вм менеджер.


nebosklon

11.03.2016, 02:51

Решить эту проблему поможет параметр <topology> — можно вручную прописать в qemu конфиге виртуалки с виндой. В вашей конфигурации лучше будет настроить так: <topology sockets=’1′ cores=’4′ threads=’2’/>

подскажи плиз где это прописать, ибо это реально актуально!


/etc/libvirt/qemu/имясервера.xml

Прописать нужно вот так:

<cpu mode=’host-model’>
<model fallback=’forbid’/>
<topology sockets=’1′ cores=’4′ threads=’2’/>
</cpu>

где-нибудь в конфиге, например после </features>

<model fallback=’forbid’/> — автоматически выставит эмулируемую модель процессора такую-же, как и на хост-машине.

Это несколько повышает производительность, т.к. процессор работает эффективнее.

После того, как пропишите это в конфиг, необходимо сообщить qemu об этих изменениях.
Выполняем команду: virsh

Появится командная строка virsh:

Добро пожаловать в virsh — интерактивный терминал виртуализации.

Введите «help» для получения справки по командам
«quit» для выхода

virsh #

Вводим: define /etc/libvirt/qemu/имясервера.xml

Появится:

Домен имясервера определён на основе /etc/libvirt/qemu/имясервера.xml

Значит всё ок. Набираем quit для выхода из командной строки qemu.
Далее можно перезагрузить VDS с помощью VMManager.

Однако следует заметить, что при изменении каких-либо параметров VDS с помощью VMManager, прописанные нами параметры в конфиге могут слететь. Нужно проверять.


nebosklon

11.03.2016, 03:29

/etc/libvirt/qemu/имясервера.xml

Прописать нужно вот так:

где-нибудь в конфиге, например после </features>

<model fallback=’forbid’/> — автоматически выставит эмулируемую модель процессора такую-же, как и на хост-машине. Это несколько повышает производительность, т.к. процессор работает эффективнее.

После того, как пропишите это в конфиг, необходимо сообщить qemu об этих изменениях.
Выполняем команду: virsh

Появится командная строка virsh:

Вводим: define /etc/libvirt/qemu/имясервера.xml

Появится:

Значит всё ок. Набираем quit для выхода из командной строки qemu.
Далее можно перезагрузить VDS с помощью VMManager.

Однако следует заметить, что при изменении каких-либо параметров VDS с помощью VMManager, прописанные нами параметры в конфиге могут слететь. Нужно проверять.

Спасибо тебе друг. вроде все сработало. не совсем понятно что значит настройка <topology sockets=’1′ cores=’4′ threads=’2’/> . сколько ставить теперь ядер. поставил 4 ядра. щас процессор пишет в свойствах inetel Xeon E312xx(Sandy Bridge) 3.4 GHz

А физически стоит intel i7. Это нормально?

И вроде не показывает, что 4 ядра… или процессора…


sockets=’1′ — означает, что физически на сервере установлен 1 процессор
cores=’4′ — означает, что у этого процессора 4 физических ядра
threads=’2′ — означает, что у каждого этого ядра по 2 потока, т.е. в сумме 8 ядер (4 физических 4 виртуальных)

А физически стоит intel i7. Это нормально?
Вполне. Раньше ведь вообще писало что-то вроде QEMU Virtual CPU v1.5.3?

И вроде не показывает, что 4 ядра… или процессора…
В винде зайдите в диспетчер устройств и откройте вкладу Процессоры — там видно количество ядер


nebosklon

11.03.2016, 03:39

Картинка выглядит вот так. Но щас стоит в вмменеджере 4 ядра. при такой настройке топологии надо 8 ставить?

https://yadi.sk/i/YoiGVljmq4frJ


Если у вас указано 4 ядра в VMManager, то топологию желательно поставить, например, так:

<topology sockets=’1′ cores=’4′ threads=’1’/>

или так:

<topology sockets=’1′ cores=’2′ threads=’2’/>

А если указываете 8 ядер, то так:

<topology sockets=’1′ cores=’4′ threads=’2’/>


Поправил сообщение, прогнал 🙂


nebosklon

11.03.2016, 04:10

Спасибо тебе многократное и низкий поклон. я не увидел логики))) извини. точно верно написал?
<topology sockets=’1′ cores=’4′ threads=’1’/> тут вроде 4 ядра и 1 поток (это если 4 ядра ставить в вименеджер)
<topology sockets=’1′ cores=’2′ threads=’2’/> тут вроде 2 ядра и 2 потока(это если 4 ядра ставить в вименеджер)
то, что выше вроде понятно….
а вот если ты говоришь поставить 8 ядер то…
<topology sockets=’1′ cores=’8′ threads=’2’/> тут вроде 8 ядер еще и в 2 потока…. точно верно?


Я там поправил, вы видимо зашли в тему до этого)
Правильно будет так: <topology sockets=’1′ cores=’4′ threads=’2’/>


Можете, кстати, еще почитать вот это: http://linuxforum.ru/post/450665
Я когда настраивал, читал эту статью.

Там человек говорит, что в топологии лучше не указывать threads=’2′, мол это может перерасти в проблему.
Говорит, что лучше тогда делать так:
Если 4 ядра: <topology sockets=’1′ cores=’4′ threads=’1’/>
Если 8 ядер: <topology sockets=’1′ cores=’8′ threads=’1’/>

Но я не могу сказать, действительно ли оно лучше, или же нет. Нужно тестировать.

Включение неактивных ядер процессора в Windows – дополнительная мощность

Я пробовал конфигурацию и с threads=2 и с threads=1 — тестировал месяц, разницы никакой не заметил. Но зачем-то ведь qemu сделали этот threads, значит нужно юзать — я придерживаюсь этого мнения.


nebosklon

11.03.2016, 04:20

Слушай, а вот с тем же дебианом есть смысл делать пободные настройки? или с линуксом проще все?


Топологию указывать наверное не обязательно, а вот модель, думаю, желательно

<cpu mode=’host-model’>
<model fallback=’forbid’/>
</cpu>

Я тестировал — указание модели дало мне прирост производительности. К примеру, на Windows в тесте производительности Winrar без указания модели показывало скорость 2800, а с указанием 3100. Разница не сногсшибательная, но достаточно весомая.


Powered by vBulletin® Version 4.2.5 Copyright © 2018 vBulletin Solutions Inc. All rights reserved. Перевод: zCarot

Ядра процессора и настройки вашего компьютера

.

OS: Debian Lenny и Windows 2003.

Конфигурирование «VMware Server 2» с помощью «web»-интерфейса не сложное занятие, но и результат весьма поверхностен.

На что способен эмулятор от Intel?

Для более глубокого и точного воздействия на состояние виртуальной машины требуется редактирование конфигурационного файла таковой.

Этот файл, с расширением «.vmx» располагается в директории каждой виртуальной машины.

«VMware Server 1» временами «притормаживал», но не в такой степени как «VMware Server 2». В конфигурации по умолчанию «VMware Server 2» пишет на диск постоянно, даже если операционной системе в машине это не нужно. Именно эта непрерывная работа с дисковой подсистемой и создаёт жуткие «тормоза» с неявной причиной.

По большей части столь активная работа с дисковой подсистемой обусловлена тем, что «VMware Server 2» записывает все изменения состояния оперативной памяти виртуальной машины в специальный файл с расширением «.vmem» в директории виртуальной машины.

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

Разумеется, в большинстве случаев такой уровень поддержания работоспособности совершенно ни к чему, благо источники бесперебойного питания в наше время совсем недороги. В общем, отключаем функционал записи состоянии оперативной памяти на диск путём добавления в конфигурационный файл соответствующей директивы:

….
mainMem.useNamedFile = "FALSE"
….

Можно подточить параметры подсистемы оперативной памяти.

Внесём в конфигурационный файл следующие директивы:

….
MemTrimRate = "0"
MemAllowAutoScaleDown = "FALSE"
sched.mem.pshare.enable = "FALSE"
….

Где (мои толкования, могущие не совпадать с действительными):

«MemTrimRate» — параметр запрещающий запуск процедур очистки неиспользуемых виртуальной машиной объёмов оперативной памяти несущего компьютера (думаю, что вполне можно отдать виртуальной машине право и обязанность разбираться со своей оперативной памятью самостоятельно);
«MemAllowAutoScaleDown» — параметр запрещающий расширение оперативной памяти на диск в случае нехватки таковой (влечёт за собой необходимость более точного расчёта и указания необходимой виртуальной машине памяти, так как если суммарный объём необходимой виртуальным машинам памяти превысит доступный, будут происходить ошибки работы с таковой);
«sched.mem.pshare.enable» — параметр запрещающий использование виртуальными машинами совместного доступа к «страницам» оперативной памяти (ресурсы будут расходоваться менее экономно, но скорость операций в целом должна возрасти за счёт отказа от задач сканирования памяти в поисках дублирующихся участков).

Добавить комментарий

Закрыть меню