Пріоритет у планувальнику завдань Windows

Кожен, хто запускає завдання в планувальнику завдань Windows, рано чи пізно наштовхнеться на незрозумілі відмінності у часі виконання. Сценарій PHP, який виконується за 5 хвилин у командному рядку, раптово потребує 20 хвилин, якщо його запустити через планувальник завдань Windows. Той самий користувач, ті самі права, той самий код – у чотири рази більше часу виконання. Що там відбувалося?


У неробочий час Налагодження, Сеанси моніторингу процесів і незліченні порівняння конфігурацій, рішення було вражаюче простим: планування завдань Windows за замовчуванням встановлює нижчий пріоритет процесу. Значення за замовчуванням для завдань у Планувальнику завдань: 7 (Нижче норми), не 4-6 (Нормально), як і слід було очікувати. Ця, здавалося б, невелика різниця може призвести до значної втрати продуктивності в операціях із інтенсивним введенням-виведенням.

Детальний опис рівнів пріоритету Windows наведено нижче.:

ЗначенняПріоритетОпис
0У режимі реального часуНайвищий пріоритет (обережно!)
1ВисокийВисокий пріоритет
2-3Вище нормиПро нормальний
4-6ЗвичайнийСтандарт для інтерактивних процесів
7Нижче нормиЗА ЗАМОВЧАННЯМ у планувальнику завдань
8-9Нижче нормиЩе нижче
10Холостий хідНайнижчий пріоритет

Проблема з пріоритетом у плануванні завдань є багатогранною: коли ви експортуєте завдання та переглядаєте XML, ви часто знаходите ні Налаштування пріоритету. Після цього Windows непомітно використовуватиме значення за замовчуванням 7. Графічний інтерфейс відображає це значення під час експорту, але воно явно не зберігається в завданні. Нижчий пріоритет не лише призводить до меншого часу процесора, але й:

  • Операції вводу-виводу диска з обмеженим доступом
  • Нижчий пріоритет мережі
  • Погане кешування файлової системи
  • Затримки в доступі до бази даних

Навіть якщо ви використовуєте того самого користувача та ввімкнули опцію «Запускати з найвищими правами», завдання виконується в іншому середовищі станції/робочого столу Windows з іншими пріоритетами. Щоб визначити проблему, можна скористатися PowerShell, щоб отримати список усіх завдань з їхніми фактичними пріоритетами.:

38b7fa6c77dc344401485cd338ea4128

Майже всі мої завдання виконувалися з пріоритетом 7. Тепер ми спеціально коригуємо пріоритет кількох завдань одночасно:

38b7fa6c77dc344401485cd338ea4128

Після встановлення пріоритету 4 Мій сценарій PHP знову запустився (нормально) через очікувані 300 секунд. Якщо ви налаштували завдання з певним обліковим записом користувача, ви можете просто ввести це в рядку 10, як показано нижче:

38b7fa6c77dc344401485cd338ea4128

Назад