вторник, 23 мая 2017 г.

Объяснение настроек VirtualBox, влияющих на производительность

Привет.
Я многое время не знал, как правильно настроить VirtualBox, но теперь я решил разобраться для чего нужен каждый параметр.
Я сделал видео ролик, в котором коротко и ясно всё объяснил.
Для тех, кому удобно воспринимать информацию в текстовом варианте, я привожу текст из видео.
Всем привет, вы смотрите канал LinuxComp.
Сейчас я бы хотел рассказать вам о том как правильно настраивать VirtualBox для получения максимальной производительности. Мне нужно было использовать виртуалку с виндой для работы с софтом от Adobe. А как вы знаете, таким программам много железа не бывает. При создании виртуалки в её настройках можно изменять множество каких-то непонятных параметров. Вот я и решил разобраться, для чего они нужны. И о них я расскажу в этом видео. Моя цель — добиться максимального ускорения виртуализации. Итак, поехали.
Заставка.
В качестве гостевой ОС я буду использовать windows 7 64 bit. Именно эта ось мне подходит больше всего. Весь адобовский софт давно делают только 64 битным, а семёрка — последняя винда, для которой нормально поддерживается режим интеграции экрана в VirtualBoxЭто тоже очень интересная тема, но об этом мы можем поговорить отдельно.
Там где необходимо, я буду отмечать особенности настроек для виртуализации других операционок. Свою виртуалку я уже создал и настроил, её я трогать не буду. Я продемонстрирую настройку и создание заново на другой виртуалке.
Итак, запускаем VirtualBox, нажимаем кнопку создать. Вводим имя машины. Оно ни на что не влияет, а просто используется для вашего удобства. Я назову свою машинку w7-demo.
В поле тип нужно выбрать тип гостевой системы. Хоть это и не обязательно, я всё же советую здесь указать реальный тип, поскольку тогда интерфейс паравиртуализации будет выбран автоматически. Об этом я расскажу позже в этом видео. Также укажите версию и разрядность винды. Вам же самим будет удобнее распознавать машину по иконке.
Двигаемся дальше. Здесь нужно указать объём оперативы для виртуалки. Тут зависит от ваших задач. Мне нужно дать ей как можно больше оперативы, поэтому я сдвигаю ползунок направо. Но, как вы видите, под шкалой есть цветовая маркировка. Заезжать на жёлтую или красную полосу я не советую, потому что тогда поплохеет уже вашему хосту. У меня получается около 5 гигабайт.
Двигаемся дальше. Нужно выбрать виртуальный жесткий диск. Если у вас его ещё нет, выбираем «создать новый». Дальше нужно выбрать его тип. Здесь обязательно указывайте именно VDI. Это родной формат для виртуалбокса. VHD и VMDK – это форматы для виртуалокvmware и virtual pc. Их использование приведёт к падению производительности, особенно отvirtual pc.
Следующий важный момент — выбор между динамическим и фиксированным диском. В принципе, опять же, зависит от ваших задач. Если вам калькулятор на виртуалке запускать, то для удобства можете выбрать и динамический. Но мне нужна максимальная производительность, поэтому я выбираю Фиксированный.
Имя можете оставить такое же как у виртуалки, оно ни на что не влияет. Размер указывайте исходя из рассчёта, что сама винда займёт 20 гигов + ваши программы и + ваши документы, если будете хранить их на том же диске. Для своей виртуалки я выделил 35 гигибайт. Но сейчас для демонстрации я не буду создавать большой жёсткий диск.
Всё, виртуальная машина создана. Теперь нам надо перейти к её настройкам. Нажимаем настроить.
В принципе на вкладке общее вы разберётесь, здесь ничего сложного нет. Если надо, включайте общий буфер обмена.
Переходим к самому главному. Вкладка система.
Порядок загрузки, как вы понимаете, на производительность не влияет, выставляйте здесь нужный порядок. И можете отключить Гибкий диск.
Дальше — чипсет. Тут есть два варианта: PIIX3 и ICH9. Какой выбирать и что это вообще значит? Здесь нужно выбирать в зависимости от гостевой ОС. Например, если вы хотите использовать MAC гостя, то нужно выбирать ICH9. Однако, если вы выберете ICH9 для семёрки, то у вас будут фризы. Я это уже выяснил, прочитав сообщения на некоторых форумах. Так что для windows 7 выбираем PIIX3.
Где брать информацию по настройке? Проще всего в поисковиках. Ещё есть встроенное руководство, которое можно открыть из меню Справка. Оно на английском языке и не всегда исчерпывающе описывает настройки, но всё равно очень полезно. Также оно есть в виде сайта в интернете. Но что ещё интересно, я нашёл сайт, где эта справка очень точно переведена на русский. Находится она правда на каком-то левом сайте, но тем не менее, вам может быть полезно. Ссылку я оставлю в описании.
Дальше у нас идёт манипулятор курсора. Тут есть три варианта: PS/2 мышь, usb планшет и usb мультитач планшет. Вариант PS/2 мышь не требует эмуляции usb контроллеров, но он больше подходит для древних осей. Я бы не советовал его выбирать, так как при этом режиме, даже если установлены дополнения гостевой ОС, виртуалка больше нагружается. Большинство людей захотят выбрать здесь usb планшет. Ну, а если у вас есть какие-то специальные устройства, можете выбрать usb мультитач-планшет. Я выбираю именно его, потому что у моего ноутбука есть тачскрин.
Что у нас дальше?
Включить I/O APIC. Что это такое? APIC — это контроллер прерываний, который используется на современных материнских платах. Эту галочку нужно ставить, если вы хотите дать виртуалке несколько ядер процессора, а также её требуется включать для 64 битных гостей. Соответственно я её ставлю.
Следующая галочка отвечает за режим загрузки. Помните, я рассказывал, как я устанавливал семёрку на реалку в режиме загрузки UEFI? Для неё обязательно требовалось включать CSM модуль. И связано это с тем, что семёрка не умеет работать с новым способом видеовывода в UEFI — GOP (Graphics Output Module). То есть в том случае был не совсем чистый UEFI режим. Но то было на реалке.
Здесь я опять наступил на те же грабли. На VirtualBox эта галочка включает чистый UEFI режим. Семёрку так даже установить не получится. Я нашёл инфу на официальном форуме, Оракл о данной проблеме знают, но у проблемы низкий приоритет. Вот с 2014 года ничего и не сдвинулось с места. Ну и пофигу, пусть будет загружаться в режиме BIOS. На производительность машины это не влияет.
Дальше идёт параметр «Часы в системе UTC». По хорошему, здесь должна стоять галочка, т.к. нормальные системы ожидают в этом счётчике именно мировое время. Но микрософты у нас особенные. Нафига им тайм зоны? Лучше фигачить локалтайм в system clock. Кто ставил себе винду в дуалбуте, тот знает о чём я говорю. Там нужно либо линукс подстраивать под закидоны винды, либо, что более правильно и надёжно — отредактировать реестр винды, чтобы она воспринимала систем клок как мировое время.
Но опять же, это было на реалке. Здесь нам по сути это не важно. Можно снять галочку, тогда системные часы хоста (настроенные на мировое время) будут восприниматься виндой как локальное время. И вам не придётся лезть в её реестр, и время будет отображаться правильно. А на производительность это не повлияет.
Переходим на вкладку Процессор. В зависимости от задач, которые вы собираетесь выполнять на виртуалке, выделяйте нужное количество процессоров. Мне для обработки видео надо как можно больше, но как и в случае с оперативной памятью, перегибать здесь нельзя. У меня четырёхъядерный процессор, 2 ядра я даю виртуалке.
Дальше идёт опция «Предел загрузки ЦПУ». Здесь можно ограничить процессорное время, которое гостевая система сможет использовать ядро процессора. Это может понадобиться если у вас много виртуалок на одном хосте. Я естественно выставляю 100 %.
Следующая опция у нас — это PAE/NX. Она отвечает за то, будет ли виртуальной машине предоставлен доступ к функции расширения физических адресов (Physical Address Extension). Если у вас 32-битный процессор, то с помощью PAE вы сможете адресовать больше 4 Gb. NX — это специальный бит в таблице доступа к памяти, который не позволяет выполнять данные из памяти как код, что позволяет защищаться от атак типа переполнения буфера. Если вам интересно разобраться в этом, я оставлю интересную ссылочку в описании, которую я нашёл, можете посмотреть. http://blog.nandaka.io/what-is-nx-bit/ https://forums.virtualbox.org/viewtopic.php?f=3&t=56528
Если у вас не какая-нибудь специальная защищённая ОС, и она может загружаться без PAE/NX, значить вам эта функция не нужна. Я её выключаю.
Так, с этим разобрались. Переходим на вкладку Ускорение.
Интерфейс паравиртуализации. Что это такое и какой выбирать? Давайте пройдёмся по списку и я вам расскажу какой для чего.
Выбирать его нужно в зависимости от вашей гостевой ОС.
  • Вариант «Отсутствует» нужно выбирать в случае, если вы хотите скрыть от гостевой ОС, что она работает в виртуальной машине.
  • Вариант «Совместимый» специально выбирать не надо, он сделан для поддержки виртуальных машин, которые были созданы в VirtualBox ранее пятой версии.
  • Вариант «Минимальный» нужно выбирать для гоствых систем Mac OS.
  • Вариант «Hyper-V» — для гостевых Windows систем.
  • Вариант «KVM» — для гостевых систем Linux.
А изначально здесь установлен интерфейс «По умолчанию». Это значит, что нужный интерфейс будет выбран в зависимости от типа гостевой системы автоматически. Именно поэтому я говорил, чтобы вы правильно указывали тип системы при создании виртуалки. Я тип указал правильно, поэтому здесь я оставляю вариант «По умолчанию».
Осталось два параметра: VT-x/AMD-V и Nested Paging.
Здесь вам нужно смотреть, поддерживает ли ваш процессор функции аппаратной виртуализации. Как вариант, можете узнать это на сайте intel или AMD. Но мне проще узнать это сразу из командной строки. Набираем команду lscpu и ищем нужные флаги. Для процессоров intel ищите флаг vmx, а для amd — флаг svm. Если вы нашли их, можете радоваться, ваш процессор поддерживает VT-x или AMD-V. В этом случае разумеется включайте галочку в настройках виртуалки.
И чтобы дополнительно ускорить работу с памятью, нужно вулючить Nested Paging. По описаниям, которые я читал, это существенно влияет на производительность.
Чтобы узнать, поддерживает ли ваш процессор Nested Paging (тик Rapid Virtualization Indexing — RVI), посмотрите есть ли у проца нужный флаг. Для intel это флаг EPT, а для amd — NPT. У меня этот флаг есть, соответственно я галочку в настройках включаю.
Переходим к настройкам дисплея.
Параметр Видеопамять определяет сколько памяти будет у виртуального графического адаптера в гостевой ОС. Здесь я выставляю максимальное значение.
Ну и наконец 3d и 2d ускорение для гостей. К сожалению, даже если вы включите эти опции, под виртуалбоксом добиться такой же производительности как на реальном железе нельзя. Но включение этих опций позволит хоть как-то ускорить видео рендер. Если вы их включаете, то когда гостевое приложение будет делать вызовы OpenGL или DirectX, virtualbox вместо медленного программного рендеринга будет пытаться использовать рендеринг аппаратными средствами хоста. Разумеется, вы должны установить дополнения гостевой ОС. Но при их установке не ставьте экспериментальный драйвер Direct3D. У вас будет три варианта. Первый — не ставить вообще, что я и советую. Второй — поставить упрощенный драйвер Direct3D, но это бесполезено, он не влияет на ускорение. И третий вариант — поставить полный драйвер Direct3D. Если его поставить и включить 3D ускорение, то After Effects будет вываливаться с ошибкой hardware blitpipe engaged при запуске. Так что можете на это время не тратить, я его уже потратил за вас.
Я бы хотел ещё попробовать пробросить видеокарту в виртуалку, чтобы отдать её винде. Но это надо делать на десктопе. У меня на ноутбуке к сожалению карточка от nVidia c технологией Optimus. То есть даже если мне удастся пробросить её по PCI, она всё равно не будет работать. Если кто не знает, Optimus — это такие неполноценные видюхи, которые рассчитаны лишь на ускорение интеловской интеграшки, а отдельно они работать не могут. Под виртуалкой, как вы понимаете, интеловской карты нет.
Ладно, давайте перейдём к категории Носители.
Здесь я хочу обратить ваше внимание на тип контроллера для вашего виртуального диска. Скорее всего он у вас сразу будет sata, но лучше проверьте это. Главное, чтобы он не был ide, потому что они медленнее и не поддерживают асинхронный ввод/вывод. В virtualbox он поддерживается также на SCSI и SAS контроллерах. На обычном ноутбуке выбирать эти контроллеры нет смысла.
Теперь что касается пункта Кеширование ввода/вывода. Надо его включать или нет? Это зависит от того, как вы работаете с данными. Если у вас на виртуалке будут запущены какие-то критические сервисы и вам ни в коем случае нельзя потерять данные, то не включайте. Однако, тогда у вас будет серьёзное замедление при работе с данными. Мне же важнее скорость, поэтому я включаю кеширование. Минусом является то, что данные будут занимать место в памяти дважды: в кеше хоста и гостя. Но это мне не важно. Ещё может быть проблема с подвисаниями хоста если гость будет слишком много кешировать. Тут сами уже рассчитывайте возможности хоста и решайте. Я почитал один блог в интернете, где чувак пишет, что у него не было никаких проблем: при включенном кешировании скорость операций возрасла в разы, а никаких потерь данных не было даже когда он хард-резетил свой ноутбук. https://www.electricmonk.nl/log/2016/03/14/terrible-virtualbox-disk-performance/
Если у вас твердотельник, поставьте галочку Твердотельный накопитель, тогда гость не будет пытаться дефрагментировать данные. Галочку с горячей заменой я не ставлю, так как это у нас будет системный накопитель, т.е. диск C.
Ну вот и всё. Мы рассмотрели все настройки, которые влияют на производительность виртуальной машины и я объяснил для чего каждая из них нужна, чтобы вы могли настроить свою виртуальную машину. Теперь осталось только установить винду с программами.
Какой по всему этому можно сделать вывод? Вывод такой: поскольку Adobe не замечает нас, нам приходится вот так изворачиваться с виртуалками. Производительность здесь будет конечно хуже, чем в реалке. Но мне этот вариант сейчас подходит: я могу что-нибудь простенькое наклепать в Ae, экспортировать и тут же смонтажить в kdenlive на linux. Ну ещё при доработке kdenlive можно посматривать как там у них сделано.
Если нужно серьёзно поработать с эффектами, то тогда придётся всё-таки дуалбутиться…
На этом всё. Надеюсь я помог вам в настройке VirtualBox. Если видео было вам полезно, оцените лайком, мне будет приятно.
Если хотите, чтобы такого рода видео я выпускал и в дальнейшем, напишите об этом в комментариях. Про virtualbox у меня ещё есть что рассказать, ну и можем просто порассматривать разные полезные программы в Linux.
До встречи в следующих видео.

Комментариев нет:

Отправить комментарий