Windows 11 上で、とある作業において、バックアッププロセスが重すぎて 10~20分 程度操作不能になってしまう問題が発生した。
対策の為、バックアッププロセスだけ優先度を下げられないか色々調べたメモ。
## 対策
レジストリを操作することにより、デフォルトのプロセス優先度を変更できることが分かった。
レジストリキー
`\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<プログラム名>\PerfOptions`
> [!tip] プログラム名には、拡張子 `.exe` も含めること。
> [!warning] `PerfOptions` は公式説明がない裏機能?
>
> この `PerfOptions` レジストリキーは **公式文書がない** らしく、海外ニキ達の調査研究によって判明したものらしい。
> 現状、ゲーマーなど一部の界隈でのみ裏技 (グリッチ) 的に用いられている模様。
>
> **プロセス起動に関わるため、誤った値を設定すると不安定になるかもしれない。**
> また、将来的に使用不可となる可能性もあり得る。
## 設定値
### CpuPriorityClass
`CpuPriorityClass` (DWORD値)
CPUの割当て優先度を変更する。タスクマネージャーの「優先度」と同じ。
**値**
- `1`: Idle (低)
- `2`: Normal (通常) ※デフォルト
- `3`: High (高)
- `4`: Real-time (リアルタイム) **※推奨されない**
- `5`: Below Normal (通常以下)
- `6`: Above Normal (通常以上)
※ Idle と Below Normal のみ、親プロセスから継承されるらしい?
### IoPriority
`IoPriority` (DWORD値)
ストレージ I/O の優先度を変更する。
CPUより I/O がビジーになってしまう状況下では効果てきめん。
**値**
- `0`: Very Low (非常に低い)
- `1`: Low (低い)
- `2`: Normal (デフォルト)
---
激重バックアッププロセスに効果があったのは `IoPriority` の方だった。
値を `0` に設定することで、今まで10分以上操作不能だったサーバーが、起動後でも問題なく操作できるようになった。
## 参考
- [[Windows-IFEO-PerfOptions - HelderMagalhaes]], [直リンク](https://gist.github.com/HelderMagalhaes/899766e74da8cd3923fd47c41c07b320)