Open3
Windowsコンテナを動かしていると勝手にスリープから復帰する
... 何で。。?
まぁそもそもWindows Serverはsleepとかしないから、そういう問題を踏む人が居ないんだろう。。
要因とスケジュールを確認
Wakeup要因は powercfg /lastwake
で確認できる。
PS C:\WINDOWS\system32> powercfg /lastwake
スリープ状態の解除履歴カウント - 1
スリープ状態の解除履歴 [0]
スリープ状態の解除元カウント - 1
スリープ状態の解除元 [0]
種類: スリープ解除タイマー
所有者: [SERVICE] \Device\VhdHardDisk{1b4378e4-1640-481d-aea5-a35a438cb621}\Windows\System32\svchost.exe
所有者によって示された理由: Windows は、スリープ状態の解除を要求したスケジュールされたタスク 'Maintenance Activator' を実行します。
このとき、ストレージがVhdHardDiskになっているので、物理ディスクではないことがわかる。このPCではHyper-Vを使っていないので怪しいのはDockerだけとなる。
スリープ解除タイマーでwakeupされたということは、何かしらスケジュールされていることになる。スケジュールされたタイマーは powercfg /waketimers
でわかる。
PS C:\WINDOWS\system32> powercfg /waketimers
[PROCESS] \Device\HarddiskVolume4\Windows\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\StartMenuExperienceHost.exe によって設定されたタイマーは 4:00:00 (退̦E) で有効期限が切れます。
[SERVICE] \Device\VhdHardDisk{1b4378e4-1640-481d-aea5-a35a438cb621}\Windows\System32\svchost.exe によって設定されたタイ マーは 13:13:53 (2024/06/06) で有効期限が切れます。
理由: Windows は、スリープ状態の解除を要求したスケジュールされたタスク 'Maintenance Activator' を実行します。
[SERVICE] \Device\VhdHardDisk{2407c90d-3e84-4b1e-bbcd-06bd2282bd43}\Windows\System32\svchost.exe によって設定されたタイ マーは 13:58:25 (2024/06/06) で有効期限が切れます。
理由: Windows は、スリープ状態の解除を要求したスケジュールされたタスク 'Maintenance Activator' を実行します。
無効にしてみる
とりあえず、レジストリ2つを設定してみる。世間的には DisableMaintenance
だけで済ませているようだが、手元では WakeUp
も設定しないとwaketimerが設定されたままだった。
RUN reg add 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance' /v MaintenanceDisabled /t REG_DWORD /reg:64 /f /d 1
RUN reg add 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance' /v WakeUp /t REG_DWORD /reg:64 /f /d 0