В этом году я прошёл обучение, а затем успешно сдал сертификационный экзамен, по администрированию среды виртуализации VMware. Наверное, этот факт как-то повлиял на моё мировоззрение. Я решил, после стольких лет использования VirtualBox для своих личных проектов, на персональной рабочей станции попробовать перейти на решение от VMware.
Вы наверное знаете, что среды виртуализации можно разделить на 2 типа:
- тип 1 - физический гипервизор (bare metal hypervisor), который устанавливается на физический сервер.
- тип 2 - гипервизор, устанавливаемый поверх операционной системы (hosted hypervisor).
Примером гипервизора первого типа является VMware ESXi. Эта среда виртуализации, включающая в себя гипервизор со своей операционной системой, устанавливается напрямую на физический сервер. SAP системы в той или иной степени поддерживают это решение от VMware и про это у меня уже была пара постов (ссылка 1 и ссылка 2).
Ко второму типу гипервизоров относятся решения Oracle VirtualBox и VMware Workstation. Для их разворачивания требуется операционная система, предварительно установленная на целевой сервер или компьютер (host server). Поддерживаются распространённые операционные системы: MS Windows, Linux или MacOS. Данный тип гипервизора выбирают для небольших проектов. Обычно разработчики программного обеспечения используют их для тестирования своих разработок в разных операционных системах.
VMware Workstation поставляется в двух версиях:
- VMware Workstation Pro (требует приобретения платной лицензии),
- VMware Workstation Player (распространяется бесплатно для личного пользования).
В бесплатной версии нет шифрования виртуальных машин и нельзя для них создавать снимки состояния (snapshots). А в остальном это полноценное решение, где можно как создавать, так и запускать виртуальные машины.
Перейдя на VMware Workstation, как взрослый администратор :), я поставил себе задачу получить максимальную производительность виртуальных машин, работающих на моём рабочем ноутбуке. Собранной в процессе решения задачи информацией решил поделиться с вами.
Виртуальная машина - это виртуальный компьютер, который имеет те же ресурсы, что и физический. Каждый тип ресурса вносит свою лепту в работу машины. При этом конфигурация и настройки (корректные или нет) ресурса могут как повышать, так и снижать общую производительность. В связи с этим я выделил следующие разделы:
- процессорные ресурсы,
- оперативная память,
- жесткий диск,
- другое оборудование,
- программное обеспечение,
- другое (всё остальное).
Процессорные ресурсы
Во-первых, необходимо проверить, что ваш процессор имеет аппаратную поддержку виртуализации и в BIOS основной машины включены опции поддержки: Intel VT-x или AMD AMD-V. Если система поддерживает "Hardware-Assisted MMU Virtualization": опции Intel EPT (extended page tables) или AMD RVI (rapid virtualization indexing) или AMD NPT (nested page tables), то тоже обязательно включаем. Первый механизм в условиях виртуализации позволяет эффективнее (с меньшими накладными расходами) распределять процессор между виртуальными машинами, а второй - память.
Во-вторых, если процессор поддерживает Hyper-threading, то рекомендуется активировать поддержку этого механизма в BIOS. Hyper-threading, когда один процессорный юнит (ядро) обрабатывает 2 очереди команд, даёт скорее большую утилизацию процессорных ресурсов, так как процессор меньше простаивает. Но при правильном использовании этой технологии можно добиться и повышения производительности всей системы. Гипервизор от VMware умеет использовать Hyper-threading.
В третьих, можно проверить, что в BIOS отключены различные энергосберегающие опции, а вместо этого везде выбрана максимальная производительность.
При конфигурировании количества ядер для виртуальных машин, можно руководствоваться правилом: общее количество ядер всех виртуальных машин плюс запас для основной машины не должно превышать двойного количества физических ядер процессора (без учёта Hyper-threading). Например, если ваш процессор имеет 4 физических ядра, то можно создать максимум 3 виртуальные машины, каждой отдав по 2 ядра, а 2 ядра оставить основному компьютеру. В идеале, конечно, вы должны распределять только имеющиеся ядра, не допуская overhead. Но так как мы говорим про персональные компьютеры (или даже ноутбуки), а не про сервера, то ядер у нас обычно не так много. Исходим из того, что имеем, поэтому максимум двойной overhead.
При этом не настраивайте на виртуальной машине больше vCPU, чем ей это необходимо. Удивительно, но большее количество vCPU может привести к снижению производительности в силу действия разных факторов. Например,
- переброс одного исполняющегося потока между ядрами, в связи с чем происходит потеря кэша процессора,
- дополнительные накладные расходы: каждый виртуальный процессор требует выделения оперативной памяти,
- использование лишних циклов таймера планировщика при переключении потоков между ядрами и так далее.
Ещё одно важное замечание: при создании виртуальной машины всегда корректно выбирайте тип гостевой операционной системы и её версию. Гипервизор, зная особенности работы разных операционных систем, для создаваемой вами виртуальной машины применит оптимальные настройки и для процессора, выбирая поддерживаемые операционной системой механизмы виртуализации. А это напрямую влияет на производительность. После создания виртуальной машины изменить эти настройки тоже можно. Выключив виртуальную машину, войдите в пункт меню "VM -> Settings" (или нажмите Ctrl+D), а там выберите раздел "General". Справа будут нужные вам параметры (рис. 1).
![]() |
Рис. 1. Настройки типа и версии гостевой операционной системы. |
Вот по этой ссылке на официальном сайте можно посмотреть список поддерживаемых гостевых операционных систем.
Оперативная память
Первое правило виртуализации: оперативной памяти много не бывает. Оперативная память, для гипервизора, как и для БД SAP HANA, основной ресурс.
Память виртуальной машине (как и в любой операционной системе) выдаётся по требованию. При этом, как и в Enterprise решении VMware ESXi, гипервизор в VMware Workstation умеет выполнять разные финты при управлении памятью: page sharing, balooning, swapping. Все эти механизмы направлены прежде всего не на повышение производительности виртуальных машин, а на максимальную утилизацию ресурсов. Задача механизмов оптимизации уменьшить потребление памяти виртуальными машинами. Например, забрав свободные страницы памяти у виртуальной машины, как только они ей больше не нужны, и отдать их той виртуальной машине, которая в текущей момент требует больше памяти для своей работы. Стоит отметить, что благодаря такому подходу удаётся разместить на одной машине большее количество виртуальных машин. Гипервизор жонглирует количеством памяти меньшего объёма, чем сумма сконфигурированной памяти всех виртуальных машин, но при этом обеспечивает их одновременную работу. Существует даже термин для этого - "memory overcommitment".
У нас же стоит обратная задача: получить максимальную производительность при работе виртуальных машин. Обеспечить это можно, как ни странно, отключив по максимуму механизмы оптимизации. :)
Для этого необходимо, во-первых, перейти в пункт меню "Edit -> Preferences" (или нажать Ctrl+P). Здесь в разделе "Memory" содержатся общие настройки для всех виртуальных машин (рис. 2). Для начала укажите сколько оперативной памяти сервера может быть отдано виртуальным машинам. Так как VMware Workstation относится ко второму типу гипервизоров, то мы должны подумать и об основной машине, не оставив её без памяти. Иначе, если она начнёт уходить в swap, то работать плохо начнёт всё, включая виртуальные машины. В моём примере из 32 Гб оперативной памяти 24 Гб отдано виртуальным машинам, а 8 Гб всегда будут за операционной системой хоста.
Далее обязательно выбрать пункт "Fit all virtual machine memory into reserved host RAM". Гипервизор, работая в таком режиме, запускает виртуальные машины только при условии, если сумма сконфигурированной для них оперативной памяти умещается в выделенный для них пул основного хоста.
![]() |
Рис. 2. Опции памяти для всех виртуальных машин. |
Во-вторых, для каждой виртуальной машины перейти в индивидуальные настройки через пункт меню "VM -> Settings" (или нажать Ctrl+D), перейти во вкладку "Options", а там выбрать пункт "Advanced" (рис. 3). В этом окне поставить галочку напротив пункта "Disable memory page trimming". В этом случае гипервизор не будет пытаться отнять у виртуальной машины оперативную память, используя свои механизмы оптимизации.
![]() |
Рис. 3. Настройка памяти для отдельной виртуальной машины. |
Жёсткий диск
Во-первых, постарайтесь разместить виртуальные машины на дисках с хорошей скоростью чтения-записи. Раньше рекомендовалось использовать RAID массив на достаточном количестве дисков. Сейчас прекрасным вариантом будет SSD диск. К примеру в VMware Workstation для гостевой операционной системы MS Windows 10 рекомендуется использовать тип диска "NVMe" (рис. 4).
![]() |
Рис. 4. Рекомендуемый тип диска виртуальной машины. |
Драйвер такого типа виртуального диска (из пакета VMware Tools) показывает хорошую скорость в тестах (рис. 5). Но только если на нижнем уровне находится быстрый SSD диск. В данном примере это даже не NVMe диск, а SSD через интерфейс SATA.
![]() |
Рис. 5. Тестирование скорости диска в виртуальной машине. |
- тонкий диск (thin provisioned) - место выделяется по мере необходимости,
- толстый диск (thick provisioned) - место выделяется сразу на весь объём виртуального диска,
- хранить виртуальный диск в одном файле,
- разбить виртуальный диск на несколько файлов.
Вариант с максимальной производительностью это толстый диск, хранящийся в одном большом файле (рис. 6).
![]() |
Рис. 6. Параметры виртуального жесткого диска для максимальной производительности. |
![]() |
Рис. 7. Расширенные настройки диска виртуальной машины. |
![]() |
Рис. 8. Информация о виртуальном диске и дополнительные утилиты для работы с ним. |
![]() |
Рис. 9. Включение кэширования записей на диск в MS Windows. |
Другое оборудование
Отключайте ненужное оборудование. Например, если у вас в виртуальной среде работает серверная операционная система, то звуковая карта вам вряд ли понадобится. Для отключения выберите пункт меню "VM -> Settings" (или нажмите Ctrl+D), слева выберите пункт "Sound Card", а справа уберите галочки напротив пунктов "Connected" и "Connected at power on". Или удалите целиком виртуальное устройство через кнопку "Remove" (рис. 10).
![]() |
Рис. 10. Отключение виртуальной звуковой карты. |
Также настоятельно рекомендуется отключать автозапуск для CD/DVD-устройств. Если вы устанавливали гостевую операционную систему через ISO-файл, то он будет постоянно контролироваться и читаться виртуальной машиной. А этот образ вам скорее всего уже не нужен. Поэтому для отключения в тех же настройках виртуальной машины установите курсор мыши на пункт с CD/DVD и уберите галочки напротив пунктов "Connected" и "Connected at power on" (рис. 11).
![]() |
Рис. 11. Отключения автозапуска CD/DVD устройства в виртуальной машине. |
Ну и так как 3D-графику в виртуальной машине мы тоже обычно не используем, то рекомендуется отключить и её. Читал сообщения, что в предыдущих релизах VMware Workstation включение её очень сильно тормозило интерфейс гостевой операционной системы. Для отключения в настройках виртуальной машины установите курсор мыши на пункт "Display" и снимите галочку напротив пункта "Accelerate 3D graphics" (рис. 12).
![]() |
Рис. 12. Отключение 3D графики в виртуальной машине. |
Программное обеспечение
Во-первых, обязательно устанавливайте пакет расширений VMware Tools. Данный пакет представляет собой набор драйверов для виртуального оборудования плюс ряд программных механизмов, которые напрямую влияют на производительность виртуальной машины. Помимо этого после установки VMware Tools можно будет настроить нормальное разрешение экрана, интеграцию мыши и выполнять копирование через буфер обмена между основной и виртуальной машинами. Для установки выберете пункт меню "VM -> Install VMware Tools". Для гостевой операционной системы Linux поддерживаемой альтернативой является пакет Open VM Tools. Подробности можно найти тут и тут.
Во-вторых, рекомендуется на основной машине отключить антивирус на директории с файлами виртуальных машин. Дополнительно можно включить основные типы файлов виртуальных машин (*.vmdk, *.vmx, *.vmem, *.nvram) в исключения антивируса. При работе виртуальной машины эти файлы часто меняются, так как виртуальная машина постоянно читает и пишет в них. Антивирус может вызывать излишнюю нагрузку на систему, постоянно проверяя эти файлы (особенно большие файлы образов виртуальных дисков). Тем самым будет оказываться влияние на производительность и виртуальных машин.
Другое
Во-первых, встречал рекомендацию работать в виртуальной машине в полноэкранном режиме (Full-screen). То есть когда вы находитесь в виртуальной машине в окне VMware Management Interface, то лучше работать не в оконном режиме. Иначе производительность работы интерфейса операционной системы внутри виртуальной машины будет не максимальной. Для перехода в полноэкранный режим необходимо нажать комбинацию клавиш Ctrl+Alt+Enter. Выйти можно через комбинацию клавиш Ctrl+Alt или вызвав сверху панель VMware Management Interface и свернув окно виртуальной машины.
Говорят, что в свежих релизах VMware Workstation производительность что в оконном режиме, что в полноэкранном одинакова, но "осадочек" остался. :)
Во-вторых, если ваша виртуальная машина работает без ошибок и сбоев, то для максимальной производительности можно полностью выключить Debbuging. Для этого необходимо перейти в настройки виртуальной машины через пункт меню "VM -> Settings" (или нажать Ctrl+D), открыть вкладку "Options", а там выбрать пункт "Advanced". Справа для пункта "Gather debugging information" выбрать уровень "None" (рис. 13).
![]() |
Рис. 13. Выключение сбора трассировочной информации для виртуальной машины. |
В виртуальных машинах с операционной системой MS Windows рекомендуется по максимум отключить визуальные эффекты. Обычно эти настройки можно найти в "Панель управления -> Система и безопасность -> Система -> Дополнительные параметры системы -> Быстродействие -> Параметры". Я на всех своих рабочих местах выбираю "Обеспечить наилучшее быстродействие", включая только некоторые настройки визуализации (рис. 14).
![]() |
Рис. 14. Настройки быстродействия интерфейса MS Windows. |
Дополнительно отключите Screen Saver. В виртуальной машине он ни к чему, а ресурсы может расходовать прилично.
B Linux можно обойтись совсем без графической среды. Это так же положительно повлияет на скорость работы виртуальной машины. Например, в этом посте я рассказывал как установить Developer Edition систему на Linux без графического окружения.
В третьих, рекомендуется в гостевых операционных системах включать синхронизацию времени. Лучше всего для этого использовать NTP-сервер. Нет локального? Всегда можно использовать свободные для доступа из Интернет. В крайнем случае, можно использовать встроенную функцию синхронизации из VMware Tools. Но следите, чтобы не были активированы оба механизма.
В четвёртых, пару слов про сеть. Помните, что работа виртуальной машины в режиме соединения с сетью типа "Bridged", требует меньше всего процессорных ресурсов основного компьютера (рис. 15).
![]() |
Рис. 15. Настройка типа сетевого соединения виртуальной машины. |
Надеюсь мои изыскания, будут кому-то полезны. Если есть дополнения, пишите в комментариях.
Автор: Шиболов Вячеслав Анатольевич
Столько воды и ничего полезного
ОтветитьУдалитьСпасибо за комментарий. Я описал свой опыт, по которому попытался настроить максимальную производительность данного ПО. Если у вас есть свои советы/конкретные комментарии или ссылка на документ/статью, то поделитесь. Я думаю, многим будет полезно/интересно.
УдалитьСпасибо за статью! Для начинающих самое то! Единственное, нет изображений на странице.
ОтветитьУдалитьК сожалению, изображения режет Google для России. Можно попробовать открыть через VPN.
Удалить>Стоит отметить, что размещение файлов виртуальной машины на внешнем USB-носителе плохая идея. Практика показывает, что работает такая виртуальная машина очень медленно. Работать практически невозможно. Так что, если у вас возникла такая идея, лучше откажитесь от неё сразу. :)
ОтветитьУдалитьУ меня другой опыт. Ssd over usb (450MB per sec) работает без нареканий. Визульно нет разницы с внутренним в режиме m4
Саша, привет! Негативный опыт был для классического HDD over USB. Для SSD, да через USB 3.1 может быть картина совершенно другая. Допускаю :)
УдалитьЯ тут на коленках писал. "m4" должен был означать M.2 в режиме X4. )))
УдалитьНастроил виртуалку согласно статье, реально стало работать быстрее. Спасибо за статью. Единственное что необъяснимо смутило, стали пропадать некоторые папки с файлами. 100% папка с файлами была, не удалялась, восстановления виртуалки из снапшота не было. Но папки куда-то деваются, Замечено неоднократно. В итоге убрал галочку Indendent (см. рис.7). Наблюдаю.
ОтветитьУдалитьСпасибо за обратную связь. С пропаданием папок не сталкивался.
УдалитьОперационная система на master-host и guest-host какие?
Host - Windows10 Home, Guest - WIndows2000 SP4.
УдалитьНу вообще допускаю, что Windows 2000 уже не поддерживается. От этого могут быть и проблемы.
УдалитьСпасибо, было полезно. А как-нибудь картинки можно починить без впн?
ОтветитьУдалитьК сожалению, только перезаливать всё заново. Google как-то подрезал их.
УдалитьСпасибо за пост,
ОтветитьУдалитьНо все таки вопрос, зачем ставить количество процессоров vcore ? когда можно просто 1 поставить и ядер отсыпать??? Или этому есть какое-то прикладное применение, не говоря уже о том, что некоторый серверный софт лицензируются по количеству процессоров/сокетов.
И еще вопрос может дилетантский, по типу среды виртуализации:
workstation на винде, и esxi - на сколько критично держать нормальные проекты в первом варианте, если ресурсами под винду можно пренебречь? цены на лицензию esxi кусаются, хотя были какие-то бесплатные раньше варианты...
Настройки количества процессоров/ядер и их комбинации не имеют в техническом плане никакого влияния на работу или производительность виртуальной среды. Можно таким образом попробовать оптимизировать лицензирование какого-либо прикладного ПО. Но, как мне кажется, всё что более или менее современное лицензируется по максимуму, по всем ядрам. Поэтому можно лепить/рисовать как хочется.
УдалитьЧто касается второго вопроса, то ESXi это совсем другой продукт. Мало того, что среда на чистом ESXi (спец. Linux) более компактная, и считай, требует меньше ресурсов. Плюс интерфейс позволяет мониторить производительность, например. Хотя бы только в реальном времени. Подключив ESXi к vCenter, вы получите ещё больше инструментов. А в Workstation вы имеет много слоёв ПО, каждое из которых забирает ресурсы, может "упасть" в неподходящий момент. Этот инструмент скорее для разворачивания сред разработки на рабочих станциях. Продуктивные среды я бы в нём не размещал. Но всё зависит от ваших задач. Мои среды для учёбы и тестирования работают на связи Linux + Worstation, а рабочие консоли на Windows+Workstation. Всё вполне стабильно. Падений именно Workstation я не помню.
да круто, спс, статья реально помогла с оптимизацией виртуалки. Хорошо было бы осветить способ как перенести виртуальную машину на физический диск. Виртуалку использую для тестирования связок рабочего ПО, и вот теперь нужно после получения стабильного результата перенести это все так чтобы загружалось как обычная операционная система
ОтветитьУдалитьдля этого есть vmconverter
Удалитьогромное спасибо создателю поста,все быстро и четко обьяснил
ОтветитьУдалитьСпасибо за статью. Буду пробовать. Есть вопрос по подключению общей директории с основной ос. Почему-то при добавлении в настройках, в гостевой не отображается. Спасибо.
ОтветитьУдалитьСтавили галочку "Map as a network drive..."? Или у Вас Linux? Рестарт виртуальной машины обычно помогает.
Удалить