Windowsのシャットダウンを高速化するレシピ――そのレシピは本当においしいのか?:その知識、ホントに正しい? Windowsにまつわる都市伝説(205)
Windowsのシャットダウンを高速化するといわれる3つのレシピ「HungAppTimeout」「WaitToKillAppTimeout」「WaitToKillServiceTimeout」。この中の1つに、もはや何の意味も持たない無駄なものがあります。分かりますか?
訂正されることなく流布される誤ったレシピ
インターネット初期から脈々と続く、おいしいクッキーのレシピの書かれた伝説の迷惑メールがあるとかないとか、そして作ってみたら本当においしかったとかそうでなかったとか、今回取り上げるトピックを調査していたら、そんな話をふと思い出しました。
インターネットで「HungAppTimeout」「WaitToKillAppTimeout」「WaitToKillServiceTimeout」の3つをキーワードに検索してみてください。Windowsのシャットダウンを高速化するレシピ(テクニック、Tips)として、たくさんの情報が見つかると思います。
具体的には、以下のレジストリ値になります。いずれもREG_SZ(文字列)型のレジストリ値、「HKCU」は「HKEY_CURRENT_USER」、「HKLM」は「HKEY_LOCAL_MACHINE」と同じ意味を持つ省略形です。これらのレジストリ値は、シャットダウン時にアプリケーションを「応答なし」と見なす、あるいはサービスに対して停止処理を実行する機会を与えるためにシステムが待つタイムアウト値を調整するといわれるものです。
- HKCU\Control Panel\Desktop\HungAppTimeout
- HKCU\Control Panel\Desktop\WaitToKillAppTimeout
- HKLM\SYSTEM\CurrentControlSet\Control\WaitToKillServiceTimeout
実はこのレシピには、もう役に立たないものが1つ紛れ込んでいます。それは2つ目の「WaitToKillAppTimeout」です。実証してみましょう。
今回、素材として「Windows XP」「Windows 7」「Windows 8.1」「Windows 10」を、調理道具としてWindows Sysinternalsの「Process Monitor」(Procmon.exe、Procmon)を用意しました。
Procmonは、Windowsのプロセスが行うレジストリやファイル、ネットワークのI/Oをリアルタイムにキャプチャーするツールです。このツールには「ブートログ(Boot Logging)」という機能もあり、この機能を使うと次回のブートの早い段階から、次にProcmonを起動するまで継続してキャプチャーすることができます。これを使って、ブートから起動して、ユーザーがログオンし、Procmonを停止するまでに行われた「HKCU\Control Panel\Desktop\」へのアクセスをキャプチャーしてみます(画面1、画面2)。
以下の画面3は、Windows 10のキャプチャーデータを、画面4はWindows 7のキャプチャーデータを示したものです(Windows 8.1も同じなので省略)。
画面3 Windows 10のキャプチャーデータ。「HungAppTimeout」のすぐ後に参照しているのは、「WaitToKillAppTimeout」ではなく「WaitToKillTimeout」
つまり、正しい組み合わせは以下の3つになります。3つのレジストリ値の既定値は5000ミリ秒、つまり5秒です。「HungAppTimeout」と「WaitToKillTimeout」は既定では存在しませんが既定値が適用されます。
- HKCU\Control Panel\Desktop\HungAppTimeout(値が存在しない場合の既定は5000ミリ秒)
- HKCU\Control Panel\Desktop\WaitToKillTimeout(値が存在しない場合の既定は5000ミリ秒)
- HKLM\SYSTEM\CurrentControlSet\Control\WaitToKillServiceTimeout(既定は5000ミリ秒)
ちなみに、「HungAppTimeout」と「WaitToKillTimeout」はユーザーアプリケーション用のタイムアウト値で、「HungAppTimeout」値はファイルの保存など、応答を待っているウィンドウ(アクティブなトップレベルウィンドウ)を持つアプリケーションの応答なしを判断するのに使用されます。応答なしと判断された場合、画面5のような、皆さんがよく目にする画面が表示され、シャットダウンはユーザーが介入しない限り、そこで永遠に中断します。
アプリが最近のWindows 10や「Windows 11」の「アプリの再起動(再起動可能なアプリをサインアウト時に自動保存し、サインイン後に再起動する)」(アカウントのサインインオプションの一つ)に対応している場合、この画面は表示されません。例えば、Windows 11の場合、「メモ帳」で未保存のファイルを編集中であっても、メモ帳で作業中の情報が保存されるため、応答なしの対象にはなりません(メモ帳がユニバーサルWindowsプラットフォーム《UWP》化され、アプリの再起動に対応したからです)。
「WaitToKillTimeout」は、シャットダウン通知をしてもらうように登録済みのコンソールアプリのためのタイムアウト値です。タイムアウト値に達しても、前出の≪画面5>のような中断は発生しません。そのままシャットダウン処理が続行します。
そして、「WaitToKillServiceTimeout」は先ほど説明したように、サービスに対して停止処理を実行する機会を与えるためにシステムが待つタイムアウト値です。このタイムアウト値も、システムが終了処理を行う各サービスに対して待機してあげる時間であって、その時間が過ぎれば粛々とシャットダウン処理を進めます。
いずれの既定値もたったの5秒、コンピュータから見れば長い時間かもしれませんが、人から見れば一瞬のことです。これをチューニングして、さらに高速化するなど、ほとんど意味がないことでしょう。
どちらかといえば、「HungAppTimeout」は「アプリの再起動」対応のウィンドウアプリが増えていけば影響を受けることはなくなるでしょうし、他の2つのレジストリ値は短縮するよりも、適切なシャットダウン処理のために長めに調整するという使い方が今では適しています(サーバ用途では特にそうです)。
古過ぎる情報源には要注意
では、「WaitToKillAppTimeout」というレジストリ値はどこからきたものなのでしょうか。実は、Windows XPや「Windows 2000」「Windows Server 2003」までは実際に使われていたものでした。以下の画面6は、Windows XPで先ほどと同じ実験をしたものです。キャプチャーデータを見ると、確かに「WaitToKillAppTimeout」を見に行こうとしています。
最初にリストアップした3つのレジストリ値の説明を公式ドキュメントで探すと、Windows 2000やWindows Server 2003のものがヒットします。新しい(おそらく「Windows Vista」以降)「WaitToKillTimeout」について説明しているドキュメントは筆者が探した限りでは見つけることができませんでした。
- HungAppTimeout(Windows Server 2003 Deployment Guide)[英語](Microsoft Docs)
- WaitToKillAppTimeout(Windows Server 2003 Deployment Guide)[英語](Microsoft Docs)
- WaitToKillServiceTimeout(Windows 2000 Server)[英語](Microsoft Docs)
最後の「WaitToKillServiceTimeout」のドキュメントで説明されている既定値にも注意が必要です。当時、既定値は「20000ミリ秒(20秒)」と長いものでした。なので、当時は、短縮することで高速化が期待できたわけです。「WaitToKillServiceTimeout」の既定値は、Windows 7とWindows Server 2008 R2のこのレジストリ値が期待通りに機能しないという不具合を解決する更新プログラムの提供と同時に、既定値が「12000ミリ秒(12秒)」に少し短縮されました。
- WaitToKillServiceTimeout registry value does not work in Windows 7 or in Windows Server 2008 R2[英語](Microsoft Support)
そして、Windows 8およびWindows Server 2012で「5000ミリ秒(5秒)」にさらに短縮され、今に至っています。「WaitToKillServiceTimeout」の既定値が「5000ミリ秒(5秒)」に変更されたというドキュメントは見当たりませんが、Windows 8およびWindows Server 2012以降のクリーンインストールでは「WaitToKillServiceTimeout」値にこの既定値が設定済みという事実が示しています。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP 2009 to 2022(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows 11一般提供開始、企業での導入/展開時に注意すべきポイントは?
MicrosoftはWindowsデスクトップOSの最新バージョンである「Windows 11」を正式にリリースし、Windows 11対応ハードウェアを搭載したWindows 10デバイスに対して、無料アップグレードの段階的なロールアウトを開始しました。 - Windows 11登場! 11で変わること、思ったほど変わらないこと
新しいWindows OS「Windows 11」の正式出荷が2021年10月5日に開始された。Windows 10からの無償アップグレードが可能であるため、どのような新機能が実装されたのか気になる人も多いのではないだろうか。そこで、本稿ではWindows 11の新機能、削除された機能などを簡単にまとめてみた。 - 買って、試して分かったWindows 365(契約・セットアップ編)
Microsoftからクラウド上でWindows 10が動く「クラウドPC」の利用可能なサブスクリプションサービス「Windows 365」の提供が開始された。早速、サブスクリプションを契約し、クラウドPCの設定を行ってみた。契約からセットアップまでで見えてきた便利な点、不便な点などをまとめてみた。 - いよいよ完全終了へ。Internet Explorer(IE)サポート終了スケジュール
長らくWindows OSに標準装備されてきたInternet Explorer(IE)。その「寿命」は各種サポートの終了時期に左右される。Windows OSごとにIEのサポート終了時期を分かりやすく図示しつつ、見えてきた「終わり」について解説する。