Windows Updateが動作していて、フォアグラウンドの作業が重く、しかもWindows Updateがなかなか進まない状況に遭遇したことはありませんか。画面をただ眺めているだけでは、進んでいるのか、いないのかが分からず、結局失敗して時間の無駄に終わるということも……。他にすることがなく、時間を持て余しているのなら、進んでいることが分かる詳細を追跡してはいかがでしょうか(本稿の最後に注意点というかオチがあります)。
今回は、2017年6月に書いた以下の記事のアップデート版です。以下の記事では、Windows Sysinternalsの「Process Monitor(Procmon)」ツールを使用して、Windows Updateによる「品質更新プログラム」のインストール実行中のアクティビティーを調査し、その処理プロセス(過程)を筆者なりに想像して、大量のディスクI/Oが行われている実態を見える化しました。
今回はそれを補足する、別のモニター方法を紹介します。なお、Windows 10 April 2018 Update(バージョン1803)のような「機能更新プログラム」を対象にしたものではありません。Windows 10で「設定」アプリの「更新とセキュリティ」にある「Windows Update」では、更新プログラムを手動でチェック、利用可能な更新プログラムが見つかった場合は、ダウンロードやインストールの進行状況を見ながら更新を進めることができます。
しかし、ダウンロードの準備中、ダウンロード中、インストールの準備中、インストール中のパーセンテージが増えるのを見ているだけでは、手持ち無沙汰です。時には、まるで止まっているかのように進行が遅いこともあります。何らかの問題が発生していて、実際に止まっていることもあるかもしれませんが、ほとんどの場合は、恐らく何らかの処理が進行中です。数時間、あるいは半日といった長い時間、ただ眺めているだけでは、他にすることがなかったとしても、時間の無駄です。
また、更新を完了するために再起動が要求される場合、「設定」アプリで監視できるのは“再起動を開始するところまで”です。この後の進捗(しんちょく)状況は、コンソール画面に表示される「Windowsの準備をしています コンピューターの電源を切らないでください」「更新プログラムを構成しています XX% 完了 コンピューターの電源を切らないでください」という表示で把握できますが、なかなか進まないと「本当は止まっているんじゃないのか」「電源を切るしかないのか」と不安はどんどん増していきます。順調に進んでいるように見えて、最後の最後に「更新プログラムを構成できませんでした 変更を元に戻しています」なんて表示されるかもしれません。
皆さん、Windowsのパフォーマンスが気になるときには、「タスクマネージャー」の「パフォーマンス」タブを開いて状況を確認することがあると思います。このタブ表示の下方に「リソースモニターを開く」というリンクがあるのに気が付いていますか(画面1)。
タスクマネージャーの「プロセス」タブや「詳細」タブでは、CPU、メモリ、ディスク、ネットワークの使用率の高いプロセスを識別することができますが、そのトレンドは分かりません。一方、「パフォーマンス」タブはコンピュータ全体の情報を示すものであり、細かいところまで分かりません。
「リソースモニター」を使用すると、プロセス一覧とグラフ表示を同時に参照しながら調べることができ、フィルター条件を設定して詳細なアクティビティーをモニターすることができます。
例えば、Windows Updateを実行中にリソースモニターの「ディスク」タブを開き、ディスクへの読み取り/書き込み操作の激しいプロセスを調べると、「System」(システムプロセス)、「svchost.exe(netsvcs)」(netsvcグループの複数のサービスをホストするプロセス)、「TiWorker.exe」(Windows Modules Installer Workerプロセス)といったプロセスが見つかるはずです。これらのプロセスを選択してフィルタリングすると、次のような場所に対する読み取り、または書き込み操作が大量に行われている様子が分かるでしょう(画面2)。
ディスク性能が低い場合はこれらのI/Oによって、ディスクのアクティブ時間が100%になり、キューがたまった状態が続いて、Windows Updateがなかなか進まないという状況が考えられます。もし、同じような場所に対して、マルウェア対策ソフトウェアのリアルタイム保護プロセス(Windows 10標準のWindows Defenderを使用している場合は「MsMpEng.exe」)が大量のI/Oを行っている場合は、リアルタイム保護を一時的に停止する、あるいは「C:\Windows\SoftwareDistribution」や「C:\Windows\WinSxS」ディレクトリを除外対象に設定することで、ディスクI/O性能を改善できるかもしれません。
リソースモニターの「ネットワーク」タブに切り替えると、アクティブなネットワーク接続や送受信量を、プロセスでフィルタリングして参照できます。Windows Updateの進行状況が「ダウンロード中 XX%」だったとしても、実はディスクI/Oの方に時間を取られていて、ダウンロードがほとんど行われていないという時間帯もあります(画面3)。
Windows Updateのダウンロードには「svchost.exe(netsvcs)」が関わっています。プロセスIDを調べることで、このプロセスが「Windows Update(wuauserv)」「UsoSvc(Update Orchestrator Service)」「BITS(Background Intelligent Transfer Service)」「DoSvc(Delivery Optimization)」をホストしているものと分かるはずです(画面4)。
リソースモニターでWindows Updateのアクティビティーを参照して見慣れてくれば、後どれくらいで完了するか予想がつくかもしれません。例えば、「C:\Windows\Software\Download」ディレクトリのサブディレクトリ内で、大量のファイルがアルファベット順に処理されている様子が見えたりします。「設定」アプリでは更新プログラムのダウンロードが進行中になっているのに、ダウンロードではなくインストールが進んでいるのを見たことがあります(2018年6月、Windows 10 バージョン1703でのこと。このときは失敗後、再試行で成功)。
「設定」アプリではWindows Updateが進行中の表示なのに、リソースモニターでは具体的なディスクI/OやネットワークI/Oが全く見られないという場合、何らかの障害でストップしている可能性があります。その場合は、Windowsを再起動したり、「SoftwareDistribution」ディレクトリをリセットしたりすることで、解消する場合があります。「SoftwareDistribution」ディレクトリのリセットについては、本連載第96回を参考にしてください。
Copyright © ITmedia, Inc. All Rights Reserved.