Windowsタスクスケジューラの優先度

Windows タスク スケジューラでジョブを実行する人は、遅かれ早かれ実行時に説明できない違いに遭遇するでしょう。コマンド ラインでは 5 分で実行される PHP スクリプトが、Windows タスク スケジューラ経由で実行すると、突然 20 分かかります。同じユーザー、同じ権限、同じコード – 実行時間は 4 倍。そこで何が起こっていたのでしょうか?


時間外 デバッグ, プロセス モニター セッションと無数の構成比較を行った結果、解決策は驚くほどシンプルでした。Windows タスク スケジューリングは、デフォルトでプロセスの優先順位を低く設定します。タスク スケジューラのタスクのデフォルト値は次のとおりです。 7 (正常以下)、 4-6 (普通) ご想像のとおり。この一見小さな違いは、I/O 集中型の操作では大幅なパフォーマンスの低下につながる可能性があります。

Windowsの優先度レベルの詳細は:

価値優先度説明
0リアルタイム最優先(注意!)
1高い優先度が高い
2-3正常範囲以上ノーマルについて
4-6普通対話型プロセスの標準
7正常以下タスクスケジューラのデフォルト
8-9正常以下さらに低い
10アイドル最低優先度

タスクスケジューリングにおける優先順位の問題は多面的です。タスクをエクスポートして XML を確認すると、多くの場合、 いいえ 優先度設定。Windowsはデフォルト値を暗黙的に使用します。 7. GUIはエクスポート中にこの値を表示しますが、タスクに明示的に保存されるわけではありません。優先度を低くするとCPU時間が短くなるだけでなく、:

  • スロットルされたディスクI/O操作
  • ネットワーク優先度を下げる
  • ファイルシステムのキャッシュが不十分
  • データベースアクセスの遅延

同じユーザーで「最上位の権限で実行」を有効にしても、タスクは異なる優先度を持つ別のWindowsステーション/デスクトップ環境で実行されます。問題を特定するには、PowerShellを使用して、すべてのタスクとその実際の優先度を一覧表示できます。:

38b7fa6c77dc344401485cd338ea4128

ほぼすべてのタスクが優先的に実行されました 7. 複数のタスクの優先度を一度に修正できるようになりました:

38b7fa6c77dc344401485cd338ea4128

優先順位を設定した後 4 PHP スクリプトは、予想される 300 秒以内に (通常どおり) 再度実行されました。特定のユーザー アカウントでタスクを設定している場合は、次のように 10 行目にこれを入力するだけです。:

38b7fa6c77dc344401485cd338ea4128

バック