Windows7からWindows10にアップグレードして1週間たった時ぐらいに,PCの電源をONしたら異常に速度が遅くなっていた。
私は会社のデスクトップPCをシャットダウンして帰宅します。出社しPCの電源をONすると,なかなかロック画面・ログイン画面が表示されません。
やっとログインできても,その後数十分動作がひじょうに重くて困ってしまう状況に。何度かPCを再起動したり,BIOS/UEFIの設定を確認したりもしたがなにも改善しない。
タスクマネージャーのパフォーマンスで確認すると,C:ドライブが常に100%状態になっている。
ハードディスクが何らかの故障が起きたのかなと思い,ハードディスクのS.M.A.R.T.情報を確認してもトラブルは発生していなかった。
Windows10のシャットダウンは,デフォルトで「高速スタートアップ」という機能が有効になっていて,昔のWindowsのシャットダウンとは違っている。
高速スタートアップのシャットダウンは,シャットダウン時に動作している状態のメモリにある一部のシステム情報をストレージのファイルに保存しておいて,次に電源ONした時にそのファイルをメモリーにロードすることによって出来るだけ初期化動作を省くことを行い,より早くシステム起動する機能。
Windows10はこのようなシャットダウンからスピーディに起動するからくりがあるにも関わらず,多くの追加されている機能(いろいろな情報をMicrosoftに送ったり・・・)があるためか,電源ON時にそれらの初期化や動作によりPCが遅くなってしまうということが発生しているようだ。
しばらくすると(20分ぐらい),ディスクアクセス100%の状態もなくなり普通に操作できるようになることからも,このようなことが遅くなっている理由と思われる。
そこで,Windows10でのこれらの原因を考え対策を行ってみた。
Windows Updateでトラブルが起きると,プログラムの更新->その後のプログラムの更新という状況があった時,どこかでアップデートが失敗すると,それのループになってしまう問題がある。Windows Updateはひじょうに負荷がかかる処理を行うので,これがループトラブルになるとPCが非常に重くなる。
これが発生した時の対処として,手動で「更新プログラムのチェック」を行って,正しくUpdateを完了することで問題が改善する場合がある。
これで解決出来ないでループトラブルになるなどの問題が発生している場合は, 「Windows Updateが失敗ばかりで更新できない」 や 「Windows Updateの自動更新を無効にする 」を参照して,問題を解決する必要がある。
また,ブート時に,Windows Updateの更新等があるかどうかをチェックする時にも,ディスクに大きな負荷がかかる。
実際に確認してみたが,Updateは全て正常に完了しており今回の原因ではなかった。
SysMain(旧SuperFetch)サービスは,Windows Vista以降に搭載された機能で,PCの使用履歴を管理してユーザーが頻繁に使っているアプリケーションを特定した上で,そのアプリケーションがすぐに起動出来るように前もってメモリーにロードし準備しておく機能。
常に準備してくれているなんて朝起きたら朝食が出来ているという感じで,うまく動いてくれればありがたいのかもしれないが,この機能がとち狂ってしまうとハードディスク100%になってしまうようだ。つまりこのSysMainサービスにはバグがある可能性高い。
また,ストレージのHDDに不良セクタなんかがあると処理が以上に遅くなる。
対処としてはこのSysMainサービスを停止する。停止の仕方は,
今回の私のPCでは,この対処でC:ドライブが常時100%になってしまう不具合がかなり解消された。
Windows10でピアツーピアの接続での関連するサービスに問題があって,それがディスク100%を発生する原因になっている場合がある。
これが原因の場合は,関係するサービスを停止させることで改善する。
今回は,これらのサービスは手動になっていて実行されていなかった。まあ必要ないので無効にしておく。
Windows検索(Windows Search)は,PCの中のファイルを前もって作成した検索DBから検索する機能。
前もって事前に検索データのインデックスを作成する必要があるので,サービスでバックグラウンドで常に動作している。
対象のファイルの内容によってインデックスを作成する機能がエラーで止まってしまうことがあり(これも問題なのだが),この場合再度インデックスを作成するといったループの不具合が発生する場合があります。これが起きると,ディスク100%になってしまう場合がある。
特に対象になっているファイルがzipファイルやExcelファイルなどの場合にエラーになることが多いみたい。
これもバグなわけでMicrosoftがプログラムを直してくれれば良いのだが,いっこうに直してはくれない。しょうがないので,これらのエラーになりそうなファイルをインデックス作成対象から外すようにしたり,ファイルの場所を制限することにして,この問題も解決します。
実際のやり方は,Windows検索インデックスの再構築が終わらないを参照。
Windows10は,デフォルト状態だとPCを起動しWindowsにログインするとOneDriveが自動で開始されるようになっている。
OneDriveは,Microsoftがサービスしているネットワーク上のストレージサービスです。このようなサービスは,Dropbox,Box,・・・他にも多くあります。
このOneDriveには,以前にWindows7の時にディスク100%になってしまう問題があった。原因は不明なのだが,なにかの拍子にこの問題が発生するとディスクが100%状態になってしまう。
この時は,OneDriveを一旦アンインストールして,再度インストールすることにより問題が解決した。
Windows10でこの問題が発生した場合は,一旦OneDriveを止めてみる。
これで,次回ログイン以降,自動で開始されないように設定できた。
すでに起動しているOneDriveを停止したい場合は,メニューの一番下にある「OneDriveを閉じる」で停止出来る。
Microsoft Compatibibility Telemetryは,Windowsでユーザーがどういった使用をしているのか使用状況のデータ収集を行ったり,Windowsの互換性に関する問題の情報の収集を行って,Microsoftに報告するプログラム。
つまり,Microsoftの遠隔データ測定プログラムということになる。情報収集を行うプログラムなので,なんとなくこのプログラムのせいで情報漏洩するかもってと思うのだが,Microsoftでは悪用はしていないとのこと。
しかし,このプログラムが動作するとディスク100%になってしまうことがあります。実際に私のWindows10もこれがもう一つの原因となっていました。
そこで,Microsoft Compatibility Telemetryを無効化します。
Microsoft Compatibility Telemetryはタスクスケジューラで毎日PCがブート後,実行されているようだ。なので,タスクスケジューラーで登録されているのを無効化することにした。
これで,Microsoft Compatibility Telemetryの無効化することが出来る。
もし,再度有効化したい場合は,操作メニューの「有効化」をクリックすることで有効化出来る。
Windows10でシステムがアイドリング状態(お休み中)になると,Windowsエクスペリエンスインデックスを作成するためにベンチテストを行うように,タスクスケジューリングされています。
これが動き始めると,CPUやHDDに無理やり負荷をかけるので,どちらも100%状態になります。
これ以外にも多くの不要なタスクスケジュールがあるので,Windows10の不要なタスクスケジュールを無効化するを参照して,不要なものは無効化しておいたほうが良い。
タスクマネージャーでこのスケジュールを無効にします。
PCが暇になった時のメンテナンスタスクはこれで行われなくはなる。
しかし,これ以外にも夜中なんかに勝手に同じメンテナンス作業が動き始める問題もある。
メンテナンスの実行をクリックすると,このメンテナンスタスクが手動で実行出来ます。
ここでは停止できないので,レジストリを変更する。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance 作成する値(DWORD(32ビット)値) MaintenanceDisabled 値のデータ:無効化する場合・・・・ 1 有効化する場合・・・・ DWORD(32ビット)値を削除する
ディスク100%ではないが,CPUやメモリーの使用量が突然大量になって動作が激重になる原因の一つに,Runtime Brokerの問題がある。
Runtime Brokerは,UWPアプリが動作するときなどにセキュリティ絡みでアプリを監視するためのプログラムなようだが,実際のところよくわからない。
UWPアプリを使わないと問題は起きないが,Windows10では多くのUWPアプリが標準でインストールされている。
手っ取り早く対策するには,レジストリでRuntime Brokerを動作しないようにする。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TimeBrokerSvc
変更後,PCを再起動するとRuntime Brokerは動作しなくなる。
しかし,タスクスケジューラーが起動しなくなっちゃったんでもとに戻した。
PCに実装しているメモリが少ない場合(4Gbyteなど),Windows10だとWindows7に比べて多くのプログラムが同時に動かしているので,物理メモリが足りなくなり仮想メモリが比較的使われるようになります。
仮想メモリはHDDなどのストレージを使用するので,このような状態になると極端にPCの速度が遅くなる。
仮想メモリを使用しないのが一番良いわけだが,多くのプログラムを動かすことでユーザーに便利に使えるようにしているWindows10では,なかなかうまく解決が難しい。
以下のようにして,仮想メモリの使用の確認と設定を行います。
コミット済みの左の数値-使用中=現在の仮想メモリの使用サイズ
現在の仮想メモリの使用サイズ+300MByte = 新しい仮想メモリの設定サイズ~
例えば,5120
設定を行った後メモリ不足のメッセージが表示される場合は,サイズを大きくするか自動的に管理するに戻す。
仮想メモリは,PCの使用状況で変化するので,時々設定を見直し必要がある。
Windows10でシャットダウン後にリブートすると,いくら「高速スタートアップ」を使ってもシステム起動後様々な初期化を行うため,ディスクアクセスが長い時間100%になってしまう。
これは,シャットダウンを使用する場合には回避しようがない。
そこで電源OFFする場合にシャットダウンではなく,休止状態を使用するようにして改善することを考える。
Windows10では,電源ボタンをクリックした場合,スリープとシャットダウン,再起動が選択できるようになっている。
スリープは,ハイブリッドスリープがスリープ機能としてデフォルトで使われている。再起動はシャットダウン/電源ONとほぼ同じ(少しは早く起動するように工夫している)。
Windows10では,デフォルトで休止状態は使用できないようになっている。
休止状態を有効にするには,以下のようにする。
これで休止状態が有効になって,電源メニューにも休止状態が表示されるようになる。
PCの電源をOFFする場合この休止を使用すると,次回PCをONした場合には保存した動作環境をストレージからロードするだけで復帰できるので,ディスク100%になることはなくなる。
私のPCはデスクトップPCなので,ついでに電源ボタンの挙動をシャットダウンから休止状態に変更しておく。これで電源ボタンを押すことで休止状態になる。
デスクトップPCでシャットダウンの代わりに休止状態を使用する場合,休止状態から勝手にWindows10が復帰してしまうという問題が発生する場合がある。
なので,これを防止する対策としてWindows10で休止・スリープから勝手に起動してしまうを参照して対策を行っておく必要がある。
新しくコメントをつける