こんばんわ、ちま夫です。
先日、Windows Server 2012 R2 にバックアップ目的として、Windows タスク マネージャーにRobocopy用のBATを登録し、毎晩コピーを実行するように設定しました。
ところが、想像以上にコピー処理に時間がかかる(トラフィックがでない)状況だったので、色々調査した結果、タスクスケジューラで実行されたプロセス(robocopy.exe)の基本優先度が通常以下で実行されていることが原因だとわかりました。
備忘録として対策方法を記載します。
状況
対策前のRobocopy実行状況はこんな感じでした。
Windowsタスクでの自動実行 | 遅い |
DOSコマンドで実行 | 速い |
BATを手動実行 | 速い |
原因
最初に書きました通り、タスクスケジューラで実行されたプロセス(robocopy.exe)の基本優先度が通常以下で実行されていることが原因です。
この優先度を変更すれば解決できるのですが、変更方法に注意が必要です。
GUIタスクマネージャーから優先度は変更できるのですが、優先度の保存ができないようで、次回タスク実行すると基本優先度が通常以下で実行されてしまいます。。。
対策:優先度の変更方法
タスクスケジューラで実行されたプロセス(robocopy.exe)の基本優先度を通常で実行できるように設定変更する手順を記載します。
【手順-1】
タスクスケジューラを起動
【手順-2】
登録したタスクをエクスポートします。
【手順-3】
エクスポートしたタスク設定(XML)をテキストエディターで開き、「7」を「6」に修正して保存する。「6 = 標準」と言う意味です。
【手順-4】
変更したタスク設定(XML)をインポートする前に、上書きインポートできない為、先に既存のタスクを削除します。
【手順-5】
変更したタスク設定(XML)をインポートします。
【手順-6】
これで優先順位の設定変更完了です。
タスクを自動実行すると、プロセス(robocopy.exe)の基本優先度が通常になりました。
最後に
Windowsタスクスケジューラでファイルコピー等を実行されている方は、手動でBATを起動した時の速度と、タスク自動実行した時に速度を比較してみると良いかと思います。
もし、タスク自動実行の方が遅かった場合は、優先度を変更して試してみてください。