Parallels Desktop: как мы заставляли подружиться Мак и Винду. Parallels Desktop: как мы заставляли подружиться Мак и Винду #4

С решением Parallels Desktop мы знакомы уже лет 7. Как это ни парадоксально, до сих пор потребность в работе с Windows (у кого-то Linux) на Mac сохраняется. Каждый год, в каждой новой версии разработчики Parallels стараются сделать ее быстрее предыдущей, однако вопросы о том, сколько памяти потребляет виртуальная машина и как сделать так, чтобы гостевая операционная система работала так же быстро, как нативная, похоже, не исчезают (и не исчезнут до тех пор, пока аппаратные возможности не позволят запускать одновременно Windows и Mac OS X, оставляя при этом больше свободных ресурсов для приложений).

Редакция MacDigger нашла 5 полезных хинтов последних версий, которые помогут снять возможные «тормоза» виртуальной машины и выжать максимум из своего яблочного помощника. Все они посвящены разгрузке памяти и повышению скорости работы. Очевидные советы (например, взять более современный Мак с четырьмя (а то и восемью – память нынче дешева) Гб оперативной памяти или перейти на последнюю 9-ю версию Parallels, в которой разработчики обещают прирост производительности до 40%), мы опустим. Потому что купить железку и ПО поновее – это всякий сможет, а вот что можно сделать из не столь очевидного?

Способ 1: полезные настройки

Например, в меню Parallels Desktop выберите Preferences, затем Advanced. Отключите там возможность отправки детализированных логов (Use detailed log messages). Эту функцию стоит включать, только если у вас есть какие-то проблемы, связанные с работой виртуальной машины, и вы по этому поводу общаетесь с техподдержкой Parallels. Сбор детализированных логов потребляет больше ресурсов.

А теперь поиграем с настройками производительности и энергопотребления. В меню Virtual Machine выбираем последовательно: Configure, Options, Optimization. В разделе Performance выбираем Faster Virtual Machine и ставим галочки рядом с Enable Adaptive Hypervisor и Tune Windows for Speed. Опции Faster Virtual Machine и Enable Adaptive Hypervisor устанавливают приоритет процессам виртуальной машины над процессами OS X. Tune Windows for speed ускоряет загрузку Windows и оптимизирует работу приложений в виртуальной машине.

Если в ближайшее время вы не планируете отключать свой Мак от электросети, можно также в разделе Power вместо Longer Battery Life выбрать опцию Better Performance. Если вы являетесь счастливым обладателем MacBook Pro c двумя графическими чипами, то, помимо принятия общих энергосберегающих мер, эта опция заставит Мак переключиться на интегрированный графический чип – менее производительный, но потребляющий значительно меньше заряда аккумулятора. Чтобы все измененные настройки вступили в силу, потребуется полностью перезапустить Parallels Desktop.

Дальше, что ест много ресурсов? Правильно, видео и 3D-графика. Поэтому можно уменьшить количество видеопамяти, отведенной для виртуальной машины. По умолчанию ее значение равняется 256 Мб. Для офисной работы и даже для двухмерной графики (например, Photoshop) это излишне. В меню Virtual Machine выбираем Configure, затем Hardware, и в разделе Video снижаем значение Video memory до 128 Мб. Там же можно выбрать режим ускорения 3D, либо вовсе отключить его (особенно полезно тем, у кого не очень новый Мак).

Что еще можно сделать? Например, попробуйте отключить доступ к папкам Windows из OS X. Это можно сделать в разделе Sharing на вкладке Options.

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

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

Если вы не уверены, что настройки по умолчанию спасут отца русской демократии ваши приложения, то нужно сначала все протестировать. Допустим, у вас виртуальная машина Windows и обычно вы работаете с Microsoft Office Suite, FireFox и парой других приложений. Запустите под дефолтными настройками свой Windows и по нескольку файлов приложений, с которыми вы обычно работаете, скажем, откройте несколько сообщений в Microsoft Outlook, 3 документа Microsoft Word, пару файлов Microsoft Excel, 10 вкладок в Firefox и IE до кучи, презентацию PowerPoint и еще пару приложений – и поработайте с ними немного. Кликните правой кнопкой мыши на панели задач Windows и запустите Диспетчер задач. Переключитесь на вкладку Приложения и проверьте, сколько сейчас чего используется.

Обычно можно увидеть, что все запущенное потребляет около 80% памяти и меньше 1% процессора, значит, установленного по умолчанию достаточно, чтобы все прилично работало. Однако если вы будете использовать что-нибудь флешовое, этого может не хватить (о флеше мы поговорим в хинте ниже).

Если показатели не радуют, то выключаем Windows через кнопку Пуск. После завершения работы ОС идем в верхнее меню Virtual Machine, выбираем Configure, затем General. Здесь с небольшим запасом выставляем значение оперативной памяти, показанное Диспетчером задач Windows с небольшим запасом, скажем, в 15%. Мы рекомендуем добавлять не более 256-512 Мб за раз. В итоге: по сравнению даже с дефолтными настройками количество памяти снизится. Сэкономленный объем быстрой (в отличие от жесткого диска) памяти останется у Mac OS X. “Хост” не будет тормозить, а значит, будет быстрее работать и виртуальная машина.

Способ 2: используем неиспользуемое

По статистике разработчиков, у пользователей не так уж много свободного места на диске (у 8% – менее 10 Гб). Функция Reclaim проверяет, находит и позволяет работать с неиспользуемым дисковым пространством в виртуальной машине. Например, заняли в свое время часть дискового пространства виртуальной машиной, место осталось выделенным, но больше не нужно. В этом случае можно вернуть его из виртуальной машины обратно в Мак. Для этого надо открыть меню виртуальной машины, выбрать там Configure, затем General. Под кнопкой Reclaim… будет обозначено дисковое пространство, которое можно заново пустить в работу. Кликните Reclaim… и подтвердите. Функция работает в версиях 8 и 9.

Способ 3: снапшоты

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

Снапшоты обычному пользователю без надобности, зато их в больших количествах (особенно, если подключен режим автоматического их создания во время работы виртуальной машины) плодят товарищи разработчики в гостевых ОС и любители что-нибудь эдакое установить или реконфигурировать (чтобы можно было всегда откатиться назад). Если вам ничего этого не нужно, лучше проверить, не включен ли режим автоматического создания снапшотов SmartGuard (и выключить его) в разделе Backup на вкладке Options. А если снапшоты вам нужны и полезны, но от случая к случаю, то там же можно выбрать следующую опцию Custom, тогда вы сможете сами ограничить частоту и максимальное количество хранимых снапшотов (по умолчанию максимум – это 100 штук, когда появляется 101 – самый старый удаляется). Опция Notify me before snapshot creation позволит отклонить создание ненужного снапшота и информировать о его создании.

Правда, все равно потом забудете, поэтому вот как удалить снапшот:

  1. Запустите Parallels Desktop.
  2. В списке Parallels Virtual Machines выберите виртуальную машину, в которой вы хотите удалить снапшоты.
  3. Кликните меню виртуальной машины и выберите Manage Snapshots.
  4. Выберите ненужные снапшоты и нажмите Delete.

Все упомянутое – это для версий с 6 по 8, а также с версии 8 в Parallels Desktop есть возможность удалять снапшоты даже если места на диска меньше, чем размер снапшота.

Способ 4: управляем прожорливыми приложениями

Во-первых, «торможение» вполне может возникать из-за использования некоторых антивирусов. Попробуйте применять только те антивирусные программы, которые предлагает Parallels Desktop – их выбирали, исходя из того, что они оптимально работают в виртуальной машине. В 9-й версии Parallels Desktop, кстати, сейчас есть довольно удобный мастер безопасности, где все операции со всеми доступными антивирусными программами можно сделать в одном окне. Если у вас антивирус «не из списка», попробуйте его временно выключить и посмотреть на показатели.

Во-вторых, есть серьезные жалобы на Adobe Flash, который неконтролируемо кушает память, особенно если вы активно серфите по Интернету, а там много флешевых баннеров. Под браузер выделяется память операционной системы. Кэш переполняется, и данные сбрасываются на жесткий диск в файл подкачки (swap). Если у вас долго висит свернутый (а не закрытый) браузер, то в «свопе» накапливается огромное количество данных.

Поэтому посматривайте на параметр Swap used в Activity Monitor. Если количество данных там растет и стало явно больше 1 Гб, вероятно, какое-то приложение не отпускает свою память.

Профилактика очень простая – периодически закрывать браузер целиком, используя Cmd+Q, и вообще, почаще пользоваться этой функцией.

Способ 5: SSD, и еще раз SSD

По словам разработчиков, 30% пользователей Parallels Desktop уже используют Маки с SSD и от них никаких жалоб на прожорливость продукта не поступает. Дело в том, что Parallels Desktop использует многопоточные операции ввода-вывода при работе с жестким диском, что дает особенно ощутимый прирост производительности на Маках с SSD. Кроме того, информация о типе диска предоставляется гостевой ОС, благодаря чему та может использовать свои собственные механизмы для оптимизации работы с SSD.

Сейчас в нашей последней версии Parallels Desktop 9 for Mac есть 75 новых функций. Из них 33 так или иначе связаны с интеграцией OS X и Windows. А в самых первых версиях продукта эти функции были попросту базовыми. Сегодня специально для Хабра пишем о том, что и как было придумано, чтобы Windows и Mac жили вместе долго и счастливо, зачем «внедрились» в «Проводник» и как обманули мышь.
Александр Гречишкин, руководитель Integration Team в Parallels

- С чего все началось?
А.Г.:
Сначала нам нужно было воспользоваться теми технологиями, которые в то время уже были на рынке. Виртуализация и эмуляция существовали еще с 1990-ых годов, и даже были решения для работы с одними ОС на компьютерах под другими ОС. Поэтому задачи в первых версиях у нас были такие: во-первых, сделать технологии и базовые функции точно такими же, как в уже существующих решениях. Во-вторых, придумать что-то свое, оригинальное. «Своими» уникальными функциями стали режим Coherence (возможность видеть и работать с Windows-программами на Mac так, как будто это родные приложения OS X) и Shared applications (иконки программ Windows в панели приложений Dock).

Функция Coherence позволяет полностью скрыть сам Windows, оставив только само приложение. В простонародье этот режим называют «Не показывать десктоп Windows». Звучит очень просто, но чтобы реализовать эту возможность, нам потребовалась масса усилий. Это очень тяжелая технология, связанная со множеством программных проблем и необходимостью решать их нестандартными способами. Ее также сложно поддерживать. И, кстати, она до сих пор развивается.
Конечно, дальше - с каждой новой версией - нам приходилось придумывать и реализовывать все новые и новые вещи, аналогов которым не было. Но изначально половину базовой интеграции типа Mouse Synchronization, Shared folders, Copy-Paste, Drag&Drop, Time-синхронизации мы делали по аналогии с тем, что уже в каком-то виде было. Например, существовало достаточно много виртуализационных эмуляторов (под разные платформы) со своим набором функций. Выпускать новый продукт без этого набора было бы просто бессмысленно.
Конечно, мы могли бы создать эмулятор вообще без интеграции, что-то типа DOSbox (в котором интерграционных функций нет, зато он прекрасно запускает старые dosовские игрушки). Кстати, у нас до сих пор есть некоторое количество пользователей, которые работают с Parallels Desktop по такому же принципу: запускают виртуальную машину, в ней работает Windows в окне, и больше им ничего не надо.
Но, понятное дело, путь развития подавляющего большинства программных продуктов – эволюционный: сначала надо сделать базовую функциональность, а потом ее постепенно расширять. Пользователя нужно замотивировать перейти на новую версию (особенно если она платная). И не только за счет увеличения скорости, поддержки новых технологий (например, нового Direct X), улучшенной стабильности и прочего, но и привлечь интересными и полезными фичами. В нашем случае такой кастомизацией - «тюнингом» продукта - очень часто выступает интеграция – сначала так было с Windows, а потом и с другими ОС.

- И на что ориентировались среди существовавших технологий?
А.Г.:
Вообще идея была такая: реализовать виртуализационную технологию так, как это сделано у Apple. В 2005 году Стив Джобс заявил о планах Apple «прикончить» PowerPC на своих компьютерах и перейти на чипы Intel. В 2009 году появилась OS X 10.6 Snow Leopard, первая операционная система Apple, больше не поддерживающая PowerPC. Но, скорее всего, у них все началось еще десять с половиной лет назад, когда Apple начала составлять график модернизации своей Mac OS и план перехода на x86.
Им пришлось перейти с Mac OS 9, заточенной под старое железо, на Mac OS X, а для поддержки всех существующих программ написать свой эмулятор. Они сделали это достаточно эффективно, с высоким быстродействием, и, что важно, эта технология оказалась очень прозрачной и «незаметной» для пользователя. Пользователь кликает на программу, написанную под PowerPC, на своем компьютере, и открывается тот же Coherence, то же самое окно под эту программу. Единственное, что в ней уживаются не две разных операционных системы, а две Mac OS – старая и новая. В общем, очень похоже на нас.
К сожалению, в то время разработчики Parallels Desktop не знали о существовании в Mac OS X технологии Rosetta – динамического транслятора для запуска приложений под PowerPC на компьютерах с процессорами Intel. Мне пришлось даже принести им свой компьютер из дома, чтобы ее показать. Принес, показал – и разработчики признали в технологии наш Coherence, хотя и реализованный иначе: что-то между Wine и простым эмулятором. И в итоге у нас выкристаллизовалась идея сделать как у Apple в том отношении, чтобы пользователю не показывалось никаких загрузочных образов и виртуальных оболочек от Parallels Desktop. Например, чтобы сразу открывался Word, и при этом обычный пользователь даже не догадывался, что это приложение лежит не в папке Application, а где-то еще.

- Как разрабатывался Coherence?
А.Г.:
Автором идеи был Сергей Белоусов (прим. - основатель компании Parallels) , он тогда ходил по офису и рассказывал всем желающим, что есть гениальная идея - убрать десктоп, чтобы все виндовые окна выглядели бы точно так же, как маковские. Мы сразу же поняли, что эта идея очень хорошая и нужно над ней работать. «Вырезать окошко и убрать десктоп» мы смогли достаточно быстро и просто. А затем вся технология представления Coherence была написана одним-единственным человеком, который до сих пор у нас работает – Сергеем Концовым. На достижение того, чтобы пользователь практически не заметил отличий между приложениями Windows и Mac, ушли годы кропотливого труда.
Доказательством тому, что идея и правда была хорошей, стало то, что ее потом у нас все скопировали. Но в начале пути мы не были уверены в том, что технология станет революционной. И хотя Белоусов нас уверял, что все будут на ней работать, мы все-таки постеснялись поставить ее по умолчанию при загрузке виртуальной машины в первой же версии (прим. - слева - скриншот с версии 2.5) . Но как только поняли, что это работает и пользуется популярностью, то сразу поставили по умолчанию (с версии 3.0). И этот режим до сих пор в лидерах, им в Parallels Desktop пользуется почти 80% юзеров.
Также реализовали простую инсталляцию Windows через Wizard, чтобы пользователь просто нажимал пару кнопок и получал свою вирутальную ОС. Эта технология была заимствована у OEM-установщиков, но впервые для конечных пользователей была реализована именно у нас в продукте.
Мы так долго работали с Coherence еще и потому, что это название из одного слова объединяет на самом деле много технологий. В частности, туда входит такая большая функция, как Shared Applications, которая заставляет пользователя видеть тот же Microsoft Word как нативное приложение в Маке. Вот это и есть самое сложное. Внешне функция выглядит просто, но «внутри» скрыто много логики, над которой мы до сих пор продолжаем работать.
В Coherence вложено 15 человеко-лет – целая карьера программиста. И этот код составляет около 8% всех исходников Parallels Desktop – настолько это большой и сложный продукт.

- Что еще было так же сложно сделать?
А.Г.:
Сложность может быть разная. Программная сложность, алгоритимическая, сложность понять, как реализовать вещь или как она будет работать. Часто нам приходилось идти совершенно нетривиальным путем.
Например, расскажу про функцию, ради которой пришлось влезть во внутренности Windows. Есть у нас такая технология - SmartMount. Вот в чем ее суть: когда пользователь втыкает флешку в компьютер Mac, то она появляется только на маковском десктопе. Человек, работающий в режиме Coherence, хочет полной интеграции – то есть видеть содержимое своей флешки и в Windows. Но, чтобы она там появилась, ее нужно переконнектить в виртуальную машину, а ведь делать это каждый раз очень неудобно. Мы решили использовать Shared Folders. Поскольку эта функция представляет из себя драйвер сетевой файловой системы и показывается в Windows как сетевой носитель, то, когда флешка коннкетится в Мак, мы пробрасываем ее через Shared Folders в Windows. Тогда она автоматически попадает в Network location. Но пользователю непонятно, что свою флешку он должен найти именно в Network location: он привык, что это USB-девайс, который выглядит определенным образом и показывается именно там, где и все removable media. Стандартными способами невозможно сделать так, чтобы сетевая шара показывалась в списке устройств как подключаемый девайс и при этом еще и отражалась как USB. И вот наш разработчик Василий Жданов «внедрился» (назовем это так) в «Проводник», и доходчиво «объяснил» этой программе, что вот эту вещь надо показывать именно так. И теперь у нас SmartMount показывает USB-флешки как внешние накопители.


Вставили флешку


Увидели флешку

Или можно привести в пример оригинального способа решения задачи Smart Mouse – технологии, которая позволяет компьютерной мышке адаптироваться к тому приложению, с которым пользователь сейчас работает. Если это офисное приложение – она ведет себя одним образом, если игрушка – по-другому.
В Parallels Desktop есть два режима мышки – absolute pointing device, который позволяет курсору и в винде, и в маке двигаться одинаково – с одинаковой скоростью, перемещением. При этом используется только хостовая мышь. И есть режим relative mouse, при котором мышь работает внутри виртуальной машины со своей собственной скоростью. Последний режим используется в компьютерных играх, так как они совсем не заточены под absolute pointing device. Раньше курсор в играх начинал с бешеной скоростью передвигаться и играть было невозможно. Мы придумали способ, как обнаруживать нужный режим без каких-либо привязок к именам программ, библиотек или файлов. Все очень просто: если во время работы программы на ее экране визуально наблюдается курсор – то нужен absolute pointing device. В играх же стандартный курсор почти всегда выключается и игра его рисует сама, следовательно, в данном типе программы нужен relative mode. Выбор режима мыши по этому принципу, как в итоге оказалось, работает правильно в 95% случаев.

- Что за команда делает всю интеграцию?
А.Г.:
Сейчас в команде Integration работает 6 человек, и это очень разные люди. Чем-то похожие, но не одинаковые. Практически всю команду я набирал сам. Единственный, кто уже работал, когда я пришел, – это уже упомянутый «отец Coherence» Сергей Концов. Так что я стал руководителем отдела из 1 человека, где сам выступал в качестве играющего тренера.
Вся интеграция в первой версии делалась силами этих двух человек – и Shared folders, и работа мышки, и копипаст, и drag&drop, и Coherence – практически вся базовая интеграция. Чуть позже появился Василий Жданов. Потом - Андрей Покровский, который сделал Shared applications для первой версии. Причем, что интересно, он сделал это очень быстро. Когда мы закончили продукт и уже захотели его продавать, то поняли, что без иконок в панели приложений Dock основная когеренция выглядит недоделанной. Пришел Коля (прим. - Николай Добровольский, вице-президент по виртуализации ПК) и спросил, можем ли мы это быстро реализовать. И Андрей сделал это за одни выходные, написав и отладив порядка 2000 строчек кода. Приложения показывались где надо, их можно было запускать из Dock. Вот это можно назвать по-настоящему продуктивной работой.
А вот, например, у Василия Жданова, о котором мы уже говорили, очень хорошо получается реверс-инжиниринг. Он быстро вникает во внутренности программ, что очень нужно для реализации интеграции, так как в этом процессе очень многое сделать стандартными способами просто нельзя. И Василий очень любит этим заниматься: просто приходит на работу и вкалывает, не отвлекаясь на голод и самочувствие. Вообще ничего не видит и не слышит. Часто даже не знает статус проекта, ему интересна лишь его конкретная задача в данный момент.
В общем, все они умеют разное, и производительность у них разная. Но они – КОМАНДА. Они абсолютно все умеют и хотят работать, у всех обширные и глубокие знания (которые за годы работы стали ОЧЕНЬ большими знаниями), и у них очень высокий уровень программирования. За семь лет их уровень настолько поднялся, что они могут сделать практически любую задачу, какую ни дай.

- То есть шестерых достаточно?
А.Г.:
На данному этапе уже нет. У нас очень короткие циклы разработки, а, как я уже говорил, у нас примерно 30 интеграционных функций каждый год. Получается, что нужно делать примерно по 3 фичи в месяц. Тут надо отметить, что интеграционных фич много, но не все они делаются именно нашей командой.
В общем, мне сейчас требуется 3 человека в команду Integration. Это вакансии для тех, кто хочет программировать под все платформы и разбирается в Windows, Mac и Linux (ну, или хотя бы в одной из этих ОС). Основные языки – С++ и Objective C.
Так что те, кто хочет работать в Parallels в команде OS Integration, могут писать лично мне на адрес [email protected]. Одно точно могу пообещать – интересные нестандартные задачи гарантированы. Остальное обсудим на месте.

To provide Parallels USB passthrough, you just need to:

  1. Install USB Network Gate on the server machine (the PC with a USB device attached).
  2. Share the device over network.
  3. Install the software on Parallels Desktop, start the app, and click ‘Connect’ next to the required USB device. This is it! Now, the shared USB peripheral is connected to your virtual machine and displayed in its Device Manager.

This way, with the help of USB Network Gate Parallels can connect to USB over Ethernet or any other network.

Versatile solution to forward USB to virtual environment

Whether you use Parallels, VMware, Citrix XenDesktop, VirtualBox, or , USB Network Gate will help you redirect any remote USB peripheral to your guest operating system.

Think of the possibilities:

  • The software lets forward a limitless number of USB devices over any network, including Wi-Fi, Ethernet, and the Internet;
  • supports cross-platform connections between different operating systems (Windows, Mac, Linux);
  • offers the traffic encryption option that guarantees security of your connections, and more.

With USB Network Gate you can not only provide Parallels remote USB access but also connect to your valuable USB devices over network from a wide range of other virtualization solutions.

Публикации по теме