![image](https://habrastorage.org/files/d24/901/d0f/d24901d0f7bb49e4a19b8bf43eefc6c2.gif)
Скорость доступа в Интернет была такая, что не разгуляешься, так что поначалу через сайт Windows Update на пользовательские компьютеры приходили дополнения и новые технологии только для самой операционной системы Windows. Затем начали поставляться исправления безопасности для других приложений. Чем больше предлагалось обновлений, тем больше файлов нужно было загружать.
![](https://habrastorage.org/files/314/06a/1d2/31406a1d254642c5866a4277449f5b29.jpg)
Все версии Windows до Windows 8 включительно позволяли выбирать, какие именно обновления будут установлены на данный компьютер.
![](https://habrastorage.org/files/c4b/0d5/b05/c4b0d5b053fd4da1b2a34f457bc0b21e.jpg)
В актуальной версии Windows 10 возможности выбора нет — пользователь может отказаться от обновлений других продуктов Microsoft кроме операционной системы, отложить обновления на несколько дней и попросить систему не устанавливать обновления без его ведома. Но даже обновления одной лишь операционной системы в наше время — далеко не фунт изюма.
![](https://habrastorage.org/files/caf/dd2/567/cafdd2567dd94953ab48cc8b68131349.png)
Система обновляется буквально все время. Каждый день выходят новые сигнатуры для встроенного антивируса, обновления компонентов Windows и целые новые версии, такие как Windows 10 Anniversary Update. С одной стороны, функциональность обновления Windows, прозрачного для пользователя, по определению должна быть удобна, если этот процесс облегчает жизнь пользователю, а не отвлекает его. С другой стороны, есть пользователи, которые Центром обновления Windows очень недовольны. Посмотрите на популярные запросы в поисковике.
![](https://habrastorage.org/files/74c/962/239/74c962239b5545dd8d353516b7a3664e.png)
Некоторым принципиально не нравится, что система постоянно что-то делает без их ведома, но большинство пользователей испытывает дискомфорт по существенно более прозаическим причинам — загрузка и установка обновлений поглощает трафик и ресурсы компьютера. На PC, как правило, это происходит, когда компьютер не используется, и пользователи узнают об очередном обновлении, услышав шум жесткого диска или вентилятора оставленного компьютера, или увидев ничем вроде бы не спровоцированное предложение перезагрузиться.
Механизм обслуживания Windows, работающий во время простоя системы, появился еще в Windows 8. Он контролирует периодичность запуска большинства задач из планировщика, таких как сбор различных статистик, отправку телеметрии, дефрагментацию, сессии антивирусного контроля и пр.
А как на Mac?
Виртуальная машина Windows 10 на Mac «живет» несколько иначе, и сценарий обновления Windows в ней отличается от обычного сценария для PC. Главное отличие заключается в том, что она работает не эксклюзивно.
Поэтому часто возникают два неприятных сценария:
1) Пока виртуальная машина работает в фоновом режиме, пользователь, как обычно, работает с основной системой или другой виртуальной машиной. Проблема в том, что Windows в первой виртуальной машине ничего не знает о том, что компьютер используется для других задач, и начинает загружать и устанавливать обновления, а также запускать другие задачи, которые должны выполняться в время простоя.
2) Виртуальная машина запущена впервые после длительного перерыва. И первым делом она начинает искать в Интернете обновления операционной системы и запускать пропущенные задачи из планировщика задач. Пользователь озадачен: он просто запустил Windows, чтобы по старой памяти разложить «Косынку» или пройти по минному полю, а система безбожно тормозит!
![image](https://habrastorage.org/files/344/c60/867/344c60867a9b4fd4bbc7f6baf5a093da.jpg)
Главная проблема заключается, в том, что виртуальная машина Windows работающая в фоновом режиме считает, что за компьютером никого нет, и слишком много на себя берет — начинает устанавливать обновления, дефрагментировать диски и т. п. Это создает серьезную проблему производительности, повышая нагрузку на диск и сеть — особенно если виртуальных машин несколько. И все потому что Windows Update выкачивает из интернета сотни мегабайт каждый месяц, и каждый день тоже качает какие-то обновления, антивирусы для программ. Производительность компьютера падает, он неожиданно начинает шуметь, нагреваться и быстро расходовать ресурсы батареи. Негативный пользовательский опыт, как говорится, неизбежен.
Надо сказать, что в корпоративной среде, где обновление и обслуживание компьютерных систем поставлено на поток, эти проблемы решаются проще. Если в компании используются, например, Windows 10 Enterprise и Windows Server Update Services, то даже в Windows 10 можно настроить выполнение всех операций обновления, обслуживания и перезагрузки по расписанию. Но далеко не все наши пользователи трудятся в корпоративных сетях.
Что сделали мы?
Изучив проблему, мы сделали неизбежный вывод — виртуальную машину нужно научить правильно понимать состояние компьютера-хозяина (хоста). Традиционный механизм запуска процедур обслуживания по расписанию мы тоже решили реализовать, но без решения основной проблемы это была бы полумера.
Поэтому главное, что мы сделали — мы научили нашу систему Parallels Desktop передавать состояние простоя из хоста в виртуальную машину. И если на Mac происходит ввод с клавиатуры, мыши и т. д., то виртуальная машина Windows узнает об этом и не уходит в состояние простоя.
Проще всего это было бы сделать, симулируя внутри виртуальной машины ввод с устройств — поэтому оцените, что мы выбрали менее инвазивный, документированный способ — SetThreadExecutionState (ES_DISPLAY_REQUIRED). Функция обнуляет таймер простоя дисплея, так что, если вы когда-нибудь будете писать видеоплеер для Windows, этот вызов вам точно пригодится.
Разумеется, мы не забыли о варианте управления обновлением и обслуживанием Windows по расписанию. Поскольку никто на рынке пока не реализовал корректный способ отключить автоматические обновления Windows 10, мы сделали это самостоятельно. Parallels Desktop временно отключает механизм обслуживания назначенные задачи Центра обновления. Интерфейс настроек виртуальной машины с Windows 10 мы дополнили вкладкой «Обслуживание», которая позволяет настроить расписание для выполнения обновлений и обслуживания Windows. Каждую виртуальную машину можно настроить индивидуально. Таким образом, наша функциональность временно выключает обслуживание и задачи обновления Windows, программы Windows Store, Microsoft Office, встроенного антивируса, и запускает их только в то время, которое назначено пользователем в настройках виртуальной машины. И теперь виртуальная машина тормозит только тогда, когда она должна делать это по расписанию.
Вы можете назначить периоды обслуживание на ночное время или на выходные. Это более удобное решение, чем вариант, реализованный в Windows 10. В нашем варианте все задачи обслуживания Windows — обновления, проверка антивирусом, дефрагментация, сбор телеметрии и прочее — выполняются одним сеансом, в достаточно короткий промежуток времени. Задачи отрабатываются, компьютер перезагружается, если нужно, и все готово — виртуальная машина обновлена и не будет мешать вам работать.
Здесь вы можете вспомнить, что в корпоративных сетях эти проблемы уже решены, а значит ИТ-администраторам предприятий наша функциональность вроде как без надобности. На самом деле любая сложная задача по администрированию система может и должна иметь более одного хорошего решения, и раз уж мы включили нашу функциональность в состав Parallels Desktop, это дает возможность администраторам решить данную проблему еще одним способом — через массовое внедрение Parallels Desktop с виртуальными машинами, предварительно настроенными на оптимизацию обновления и обслуживания систем.
А может, совсем его отключить?
Есть пользователи — их довольно много, особенно среди непрофессиональных пользователей — которые были бы не против навсегда отключить обновления Windows 10, оставив разве что возможность обновления антивируса. Скажем честно — мы против.
![image](https://habrastorage.org/files/756/eb9/c6f/756eb9c6f9a545368211aea0e5e00aea.png)
Советы постороннего
Самое главное в реализованной нами новой функциональности Parallels Desktop 12 для Mac в части обновления Windows — возможность ее персонализации. Для нас важно, чтобы пользователи знали о ней и могли включить. По умолчанию мы ее не запускаем, потому что такой функциональности нет в стандарте Windows. К тому же, если мы включим ее по умолчанию, нам придется предложить пользователям некий безальтернативный режим ее работы. Нам кажется, что это неправильно.
Таким образом, на данный момент пользователи, которым требуется оптимизация обновления и обслуживания виртуальной машины Windows, включают и настраивают ее сами. Статистика показывает, что так поступают около 20% наших пользователей — можно предположить, что это те самые 20% профессиональных пользователей, которых можно выделить из любого сообщества.
![](https://habrastorage.org/files/45c/b9b/778/45cb9b7788d449b48f76288f9497eb92.gif)
Возможно, в будущем мы придумаем адаптивный алгоритм, который не будет требовать ручной настройки времени обслуживания, и тогда можно будет включить данную функциональность автоматом. Тем же, кто хочет настроить свои виртуальные машины, но не знает, на какой час, мы можем предложить для начала попробовать ежедневный запуск обслуживания в 24:00 и посмотреть, что из этого выйдет — очень скоро вы найдете оптимальный для вашего случая режим.