Начиная с Windows Vista, планировщик заданий играет очень важную роль в обслуживании и оптимизации операционной системы. Сегодня я расскажу о нововведениях в автоматическом обслуживании Windows 8 и объясню, с чем они связаны.
В свое время я подробно разбирал задания, встроенные в планировщик Windows Vista, делая акцент на том, имеет ли хоть какой-то смысл их отключать. На поверку выяснилось, что таковых крайне мало. Меня не раз просили в почте сделать такой же обзор планировщика Windows 7, но я не видел в этом резона. Ведь единственным изменением было увеличившееся количество заданий по обслуживанию системы.
Однако с выходом Windows 8 появился повод вернуться к этой теме, тем более что элементы автоматического обслуживания системы появились даже в панели управления.
[+] Сегодня в программе
Панель управления
В разделе «Обслуживание» центра поддержки Windows появился новый компонент – автоматическое обслуживание.
Не спешите запускать обслуживание вручную, мы к этому еще придем. Давайте сначала посмотрим на его нехитрые настройки (их также можно найти в панели управления по запросу обслуживание).
Время запуска, бездействие и использование ресурсов ПК
Из подробного описания видно, что время запуска обслуживания можно не изменять. Оно все равно произойдет в подходящий момент, когда система перейдет в режим бездействия. Однако описание в панели управления умалчивает о том, что если вы начнете взаимодействовать с системой во время ее обслуживания, оно немедленно прекратится. И это логично, поскольку фоновые задачи могут сопровождаться интенсивной нагрузкой на диск и процессор, тем самым мешая вашей работе.
Автоматическое обслуживание Windows выполняется в режиме максимальной производительности с использованием всех системных ресурсов, чтобы завершить его как можно быстрее.
Работая в Windows, вы могли заметить по звуку и индикаторам корпуса ПК, что оставленная без присмотра система иногда демонстрирует повышенную активность процессора и диска. Но стоит вернуться к работе в системе, как эта активность немедленно идет на спад и затем прекращается. Это и есть фоновое обслуживание!
Пробуждение ПК
На параметре пробуждения системы я остановлюсь подробнее, чтобы разъяснить несколько моментов.
- Пробуждение подразумевает выход из сна, но не выход из гибернации или включение ранее выключенного ПК. Разбудив систему и выполнив обслуживание, Windows отправляет ПК обратно в сон.
- Автоматическое обслуживание учитывает различия в политике электропитания для мобильных и стационарных ПК, исходные настройки которых отличаются. Например, одной из них является пробуждение по таймеру для выполнения запланированных задач (снимок экрана сделан на ноутбуке).
Именно по этой причине на мобильных системах флажок пробуждения для обслуживания изначально снят, а на стационарных – установлен. - Если у вас мощный компьютер, который любит пошуметь вентиляторами и посветить корпусом, лучше изменить стандартное время запуска задачи. Иначе ПК может вас разбудить в три часа ночи.
Выполнение автоматического обслуживания Windows, как и прежде, осуществляется с помощью планировщика, однако теперь там появилась новая группа заданий для этой цели.
Запланированные задания
В Windows 8/8.1 найдите в программах планировщик и перейдите в раздел Библиотека планировщика заданий — Microsoft — Windows – TaskScheduler.
В Windows 10 эти задания спрятаны из планировщика, чтобы люди не мешали обслуживанию ОС, отключая задания. Однако все они есть в реестре, поэтому особо талантливые пользователи смогут воспрепятствовать обслуживанию при желании.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\TaskScheduler
Внизу списка вы видите то самое задание Regular Maintenance, время ежедневного запуска которого можно настроить в панели управления. Обратите внимание, что в планировщике вы можете изменить расписание запуска, например, на еженедельное. Однако делать это вовсе необязательно, ибо в итоге все упирается в бездействие ПК.
Если вы запустите задание Manual Maintenance, система выполнит тот же самый набор задач по обслуживанию, что и при запуске задания по расписанию. Отличие в том, что ваше взаимодействие с системой не прервет процесс оптимизации, поскольку вы сами запустили его.
Отключенное задание Idle Maintenance любопытно тем, что система сама включает его при выполнении ручного или автоматического обслуживания. Однако других подробностей о нем мне выяснить не удалось.
Задание Maintenance Configurator, судя по нескольким триггерам, определяет список задач, обслуживающих систему.
Какие задачи выполняются для обслуживания системы
Можно выполнить обслуживание вручную из панели управления или командой MSchedExe.exe Start и посмотреть, что при этом происходит. Для полного счастья откройте сначала диспетчер задач, а заодно монитор ресурсов на вкладке «Диск».
Так, я первым делом увидел процессорную активность процесса MsMpEng.exe. Открыв Windows Defender, я убедился в том, что выполняется быстрое сканирование встроенным антивирусом. Одновременно начал мигать индикатор внешнего диска, а монитор ресурсов указал на активность в папке с изображениями. Мое предположение о том, что это дело рук истории файлов, быстро подтвердилось фильтром Process Monitor.
В любом случае вы увидите потребление ресурсов CPU процессом system, поскольку обслуживание выполняется от имени системы. В частности, в обслуживание входят еще такие задачи:
- Автоматическое создание резервной копии реестра
- Передача данных об использовании системы в рамках программы CEIP
- Отправка отчетов о неполадках
- Оптимизация и дефрагментация дисков
- Обновление поискового индекса
- Оптимизация загрузки системы
- Создание точки восстановления системы
Я сознательно не стал перечислять все задачи, поскольку вы можете вывести их список самостоятельно в PowerShell!
Get-ScheduledTask | Where-Object {$_.Settings.MaintenanceSettings}
Также в планировщике пробегитесь по папкам планировщика в разделе Windows, обращая внимание на время последнего запуска задания.
Если задание выполнялось вскорости после запуска Manual Maintenance, оно входит в общий список задач по обслуживанию. На рисунке выше видно несколько заданий планировщика, которые система выполнила сразу после запуска единого задания обслуживания.
Впрочем, все эти задачи вовсе необязательно выполняются в полном объеме. Если вы не участвуете в CEIP или отсутствуют новые отчеты о неполадках, то и отправлять нечего. Точно так же, если точку восстановления создавать не нужно, она не и не будет создаваться.
В чем суть изменения в автоматическом обслуживании
Ключевое различие в автоматическом обслуживании Windows 7 и Windows 8+ в оптимизации энергопотребления операционной системой!
Раньше многие задачи по обслуживанию действовали исключительно по своему расписанию и могли выполняться при работе от батареи, а теперь они привязаны к единой задаче, которая запускается в период бездействия только при питании от сети и выполняется как можно быстрее.
Это не означает, что все задания планировщика теперь выполняются только в рамках автоматического обслуживания, поскольку у них может быть определено несколько триггеров. Например, точка восстановления системы обязательно создается при установке обновлений и драйверов. Однако отсутствие триггера в задании указывает на то, что оно выполняется исключительно в рамках автоматического обслуживания.
Рисунок выше иллюстрирует одно и то же задание по резервному копированию реестра, рассказ доктора Ватсона о котором выручил немало людей, потерявших надежду на восстановление системы.
Зачем это нужно Microsoft
Продажи настольных компьютеров неуклонно снижаются, уступая место мобильным системам, и продолжение этого тренда дружно прогнозируют все аналитические агентства. Так, компания Forester Research считает, что в ближайшие три года и без того невысокая доля продаж настольных ПК дополнительно снизится за счет роста популярности планшетов, составив в итоге всего 18%.
Очевидно, при таком раскладе длительность работы устройства от батареи выходит на первый план, и эффективность операционной системы в этом аспекте очень важна. Microsoft много говорила о том, что энергопотребление Windows 8 улучшено по сравнению с Windows 7, и консолидация фоновых задач по обслуживанию ОС – это один из важных шагов в этом направлении.
При этом Microsoft не ограничивается оптимизацией фоновых задач Windows, предоставляя разработчикам, ИТ-специалистам и конечным пользователям возможность добавить свое задание к автоматическому обслуживанию системы. Дальше я покажу, как вы можете это сделать без особых усилий.
Создание своего задания, выполняющегося в рамках автоматического обслуживания
У вас есть какие-то задачи по обслуживанию Windows, выполнение которых возложено на планировщик или на сценарии входа в систему? Если они не являются интерактивными, возможно, имеет смысл перевести их в фоновый режим автоматического обслуживания. Примерами таких задач могут служить:
- очистка диска средствами системы
- удаление временных файлов скриптом по расписанию
- создание резервного образа системы утилитой recimg
Все задачи автоматического обслуживания выполняются в скрытом режиме. Например, окно командного файла появляться не будет.
Создание XML-файла
В графическом интерфейсе планировщика Windows не предусмотрена возможность включения своего задания в автоматическое обслуживание. Однако можно создать XML-файл, описывающий задание, и импортировать его в планировщик. В приведенном ниже примере файла вам нужно изменить лишь несколько параметров.
Пример XML-файла автоматического обслуживания
<?xml version="1.0" encoding="UTF-16"?> <!-- Подробные объяснения по адресу /14062/ Приводятся русские описания параметров, относящихся к автоматическому обслуживанию. Полный список параметров: http://msdn.microsoft.com/en-us/library/aa383611(v=vs.85).aspx (EN) --> <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2011-09-01T19:35:38</Date> <Author>Vadim</Author> </RegistrationInfo> <Principals> <Principal id="Author"> <RunLevel>LeastPrivilege</RunLevel> <GroupId>NT AUTHORITY\SYSTEM</GroupId> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <!-- Параметры автоматического обслуживания --> <MaintenanceSettings> <!-- Частота выполнения во время регулярного автоматического обслуживания --> <Period>P1D</Period><!-- ежедневно --> <!-- Крайний срок выполнения задания в рамках экстренного обслуживания, если задание не запускалось во время регулярного обслуживания. --> <Deadline>P7D</Deadline><!-- еженедельно --> </MaintenanceSettings> <!-- Разрешить выполнение по требованию --> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <!-- Приоритет задания. 0 - высший, 10 - низший. 7 и 8 - для фоновых задач, 4, 5, 6 - для интерактивных. --> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <!-- Исполняемый файл --> <Command>cmd</Command> <!-- Параметры командной строки --> <Arguments>/c echo %date% %time% >> "%windir%\temp\test.txt"</Arguments> </Exec> </Actions> </Task>
Файл содержит мои краткие комментарии, но ключевые моменты я опишу ниже.
Узел MaintenanceSettings
Начиная с Windows 8, в синтаксисе задания поддерживается узел MaintenanceSettings, отвечающий за автоматическое обслуживание.
<MaintenanceSettings> <Period>P1D</Period> <Deadline>P7D</Deadline> </MaintenanceSettings>
Здесь два ключевых параметра.
Period
Это частота выполнения вашего задания в рамках регулярного автоматического обслуживания. Например, P1D означает, что задание будет выполняться ежедневно, а P30D — раз в месяц.
Deadline
Это крайний срок выполнения задания. Например, P7D означает, что задание должно выполняться никак не реже, чем раз в неделю.
Если задание ни разу не запускалось во время регулярного обслуживания, система выполнит его при первом же бездействии системы. Если же ПК используется в режиме, не позволяющем системе бездействовать, в дело вступает экстренное обслуживание. В этом случае пользователь получает сообщение о том, что оно выполняется, чтобы объяснить нагрузку на диск и процессор.
В рамках экстренного обслуживания выполняются все задачи, входящие в список автоматического обслуживания. Однако пропущенное задание всегда выполняется первым.
Узел Exec
Этот узел присутствовал и раньше, обозначая команду и параметры командной строки. Вы можете указать любой исполняемый файл, в т.ч. скрипт.
<Exec> <Command>cmd</Command> <Arguments>/c echo %date% %time% >> "%windir%\temp\test.txt"</Arguments> </Exec>
В моем примере дата и время выполнения команды просто записываются в текстовый файл во временной папке, что удобно для тестирования.
Импорт задания в планировщик и проверка его работы
Импорт задания выполняется одной командой:
schtasks.exe /create /tn "Имя задания" /xml "Полный путь к XML-файлу"
После чего задание отображается в библиотеке планировщика.
Вы можете проверить работу задания, выполнив его прямо в планировщике или из командной строки:
schtasks.exe /Run /tn "Имя задания"
Остается лишь убедиться в том, что задание выполняется в рамках автоматического обслуживания. Если вы не хотите ждать, пока оно отработает в соответствии с вашими условиями, форсируйте автоматическое обслуживание запуском задания Manual Maintenance в планировщике или из консоли:
schtasks.exe /Run /tn "\Microsoft\Windows\TaskScheduler\Manual Maintenance"
На рисунке ниже показано мое задание по очистке временных файлов скриптом.
Несмотря на отсутствие триггеров, задание отработало, успешно удалив ненужные файлы. Обратите внимание, что время выполнения задания до секунды совпадает со временем запуска других задач автоматического обслуживания.
Я пользуюсь планировщиком заданий для:
- запуска командной строки, PowerShelll, JumpReg и некоторых других программ без запроса UAC
- перезапуска одной старой программы при выходе из гибернации (впрочем, в Windows 8 проблемы с ней не наблюдается)
- очистке временных файлов скриптом (именно это задание теперь включено в список обслуживания)
А вы? Расскажите в комментариях, для каких задач вы используете планировщик!.
Игорь
Я пытался приспособить Планировщик в качестве будильника — в нужный момент комп выходит из спящего режима, запускается плеер и играет некую мелодию.
Добавил в планировщик задание, настроил. Принудительно плеер играет. В нужное время комп просыпается… но не играет. В последний раз вообще проснулся и выключился :) Типа, и тебя будить не буду, и сам отдохну. Вот не пойму — какого ему надо?!
Вячеслав
Люди, и здесь, и на других форумах, неоднократно спрашивали: «как же полностью отключить обслуживание, чтобы оно не тревожило пользователя?». Ведь, таки, оно по умолчанию запускается раз за разом, мешая ПК отдыхать физически, а пользователю морально. Автор статьи пожелал не помогать людям в решении этой проблемы напрямую….
Нарвался на статью на забугорном сайте, в которой пишется как отключить обслуживание: http://www.helpwithwindows.com/Windows8/Disable-Windows8-Automatic-Maintenance.html
иииии…парапапам…..You will now be able to disable the Idle Maintenance and Regular Maintenance tasks without Windows re-enabling them.
Вот и всё…..мы победили утомительный планировщик.
Vadim Sterkin
Вячеслав, ваш комментарий подтверждает тенденцию: в третьем лице об авторе ничего хорошего не говорят. Отмечу пару моментов. Автор (то бишь я):
1. Предоставил более чем достаточно информации для того чтобы отключить автоматическое обслуживание. Нужно лишь прочесть статью.
2. Не дает вредных советов (это в сайдбаре написано), снижающих производительность и устойчивость ОС. А это так или иначе произойдет у тех, кто последует вашему добродетельному совету. Задачи обслуживания либо не будут выполняться совсем, либо их нужно будет запускать вручную, тратя на это свое время и ресурсы ПК в то время, когда вы на нем работаете.
Между прочим, автор статьи, на которую вы ссылаетесь, тоже не рекомендует отключать обслуживание. Так что ваш совет характеризуется кратко (парам-пам-пам): ССЗБ.
P.S. Дальнейший обмен мнениями зачищен (кому надо — прочел), а обсуждение закрыто.