連載
» 2018年09月18日 05時00分 公開

山市良のうぃんどうず日記(136):Windowsのシャットダウン時、何をしているのか“のぞき見”したい! (1/2)

Windowsのシャットダウンや再起動に異常に長い時間がかかるとき、電源ボタンを長押しするのは早計です。電源ボタンによるリセットが必要なハングアップ状態なのかもしれませんが、何か重要な処理を行っていて、それに時間がかかっているのかもしれません。今回は、Windowsがシャットダウン処理中に何をしているのか、知りたいときに利用できる2つの方法を紹介します。

[山市良,テクニカルライター]
「山市良のうぃんどうず日記」のインデックス

山市良のうぃんどうず日記

システムアクティビティーの過度な監視は状況を悪化させることも

 Windowsにおいて、システムのブート時、シャットダウン時、再起動時の状況を知る方法は、コンソール画面に「コンピューターの電源を切らないでください」とともに表示される簡単なメッセージや、起動後のイベントログを確認するぐらいしかありません。

 「更新プログラム」のインストールに伴う再起動の場合、進行状況がパーセンテージで表示され、最初の30%が完了すると再起動され、その後、30%から100%まで進んで完了するという共通の挙動は、実際に目の前で何度か体験すれば分かると思います。

 また、100%に到達する前に何らかの問題が発生して「元の状態に戻しています」と表示されたり、あるいは更新のための再起動や更新とは関係のないシャットダウンや再起動時に「Windowsを準備しています。コンピューターの電源を切らないでください」と表示されたりしたまま、数時間全く画面が変化しないといった経験をお持ちの方もいるでしょう。

 筆者はそのような状況でも、数時間後には進むことを何度も経験しているため、物理コンピュータでは電源ボタンを長押ししてリセットするなんてことは決してしません(1日たっても変わらないならするでしょう)。

 本連載第131回では、Microsoftが無料提供しているWindows Sysinternalsユーティリティーの一つ「Process Monitor(Procmon)」を使用して、Windows Updateによる更新後の再起動時に何をしているのかを調べる方法を紹介しました。

 その際にも指摘しましたが、Procmonのようなツールを使用してシステムのアクティビティーを監視すると、さらに状況が悪化する(時間がかかる問題の調査のための負荷で、さらに時間がかかる)可能性があることに注意が必要です。

 連載第131回では、Procmonのブートログを使用して、Windows Updateによる再起動後、最初のブート時のアクティビティーを記録する方法を紹介しました。Windows Updateの問題に限らず、シャットダウンや再起動に異常に時間がかかる問題(特にWindows Serverの場合)の調査のためには、シャットダウン処理のイベントをトレースしたい場合があります。

 今回は、Windowsのシャットダウン処理中のアクティビティーを記録する2つの方法を紹介します。今回もProcmonを使用しますが、「Sysmon」を使用する方法も紹介します。

Procmonのブートログでシャットダウン中のイベントを記録する

 Procmonの「Options」メニューから「Enable Boot Logging」を選択すると、次回ブート時にアクティビティーを記録するように構成できます(画面1)。

画面1 画面1 Procmonの「Options」メニューから「Enable Boot Logging」を有効にし、次回ブート時にログを記録するように構成する

 具体的には、ブート開始ドライバとして「Procmonドライバ」(%Windir%\System32\Drivers\PROCMON##.SYS)をシステムに登録します。このドライバは、次回ブート時の初期段階に読み込まれ、監視を停止するまでアクティビティーを記録します。監視の停止とは、次回のブート後にProcmonを開始するまで、あるいは次回ブート後のシャットダウン処理の最終段階でドライバがアンロードされるまでになります。

 連載第131回で紹介した方法は、前者の方法です。これを図示したものが以下の図1になります。

図1 図1 ブートログの有効化後、次回ブート後にProcmonを開始すると、ブート直後からツール開始までのログを取得できる

 Procmonでブートログを有効化した後、Windows Update(あるいは次回のブートに影響するかもしれない何らかの操作)を実行して再起動すれば、次回ブート時のアクティビティーを記録できます。次にProcmonを開始したときには、ブートログを変換するように指示され、変換後にログを参照できるようになります。この方法では、シャットダウン時のアクティビティーは何も記録されないことに留意してください。

 シャットダウン時のアクティビティーを記録するには、Procmonでブートログを有効化してから、次回ブート後にProcmonを開始せず、シャットダウンや再起動まで進みます。これにより、Procmonドライバがブート時に読み込まれてから、シャットダウン処理の最終段階でドライバがアンロードされるまでのアクティビティーを記録できます(図2)。その後、次回Procmonを開始したときに、ブートログを変換するように指示され、変換後にログを参照できるようになります。

図2 図2 シャットダウン処理の最終段階まで(ブート直後から)をブートログに記録する場合のProcmonの使用方法

 例えば、Procmonの「Tools」メニューの「Process Tree」を利用すると、シャットダウンの最後の方まで動作していたアプリケーションのプロセスを特定して、トレース結果にフィルターを追加できます(画面2)。

画面2 画面2 ブートログの「Process Tree」を開くと、ブート直後からシャットダウンの最終段階までのプロセスの生死をタイムラインで確認でき、トレース結果に対してフィルターを追加することもできる

 トレース結果の詳細を調査するのは難解ですが、「Process Activity Summary」やその他のツールを利用することで、プロセスのリソース消費状況をタイムラインで確認したり、プロセスのファイルやレジストリ、ネットワークに対するアクティビティーを確認したりできます(画面3)。

画面3 画面3 「Process Activity Summary」や「Process Timeline」などのツールを使用すると、特定のプロセスのアクティビティーをタイムラインでグラフ表示できる

 シャットダウン処理中に影響するかもしれない操作を実行する場合は、ブートログを有効化してから次のブート後、シャットダウンや再起動を開始する前に行います。なお、シャットダウン時のアクティビティーを記録する場合、ブートログを有効化してから1度目のブート時のアクティビティーは記録されますが、2度目のブート時のアクティビティーは記録されないことになります。

 ブート直後からシャットダウン最終段階までのアクティビティーを記録する場合、稼働時間が長いとそれだけログサイズが膨大になり、Procmonで読み取るための変換にも時間がかかります。先に指摘したように、アクティビティーの過度な監視は、システムのパフォーマンスに大きく影響する可能性があることに十分に留意してください。システムの問題がブート中、またはシャットダウン中にあることが確実で、どうしても原因を究明したい場合に利用するとよいでしょう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。