本当に役立つ「パソコンが遅い」の原因究明と解決方法

タイトルは若干、アクセス数を狙ったものになってます。他の同種の記事よりはマシだと思ってますが、役立つ保証はないです。

パソコンが重い

私は昔から知人にPCが得意と認知されていたのですが、一番良く質問されるのがこれ。「パソコンが最近遅いんだけど」という内容。

原因は様々で一概には言えないですが、私が実際にチェックすれば何が原因で遅くなっているのかはだいたい判別がつきます。ここではその方法を指南しましょう。

参考

パソコンが重いを解決する時代遅れ記事と本当の方法という記事を見ました。ここで語られて居ることは大幅には間違いではないですが、説明が不足してたりしてあんまり親切じゃないな…と思ったのがこの記事を書いた動機です。

それを踏まえたりしつつ記事を書いていきます。ちなみに、Windows PCを念頭において回答しています。また、あまり詳しくない人向けに説明を試みているので若干不正確に見える記述もあるかもしれません。

考えられる原因

以降、私が見た中で発生頻度の高いものから順に列挙していきます。

1. 全般的に低スペック

旧式のPCや格安なPCだと単純にパソコンのスペックがやっている作業(使っているアプリ)に対して足りてないということが多いです。このケースを一番良く見ます。

はっきりとは言えませんが、大雑把に言えば4〜5年前のPCはもう旧式で遅くなる可能性があると言って良いでしょう。2010年以前のPCではその当時のハイスペックマシンであっても遅いと感じるケースはあると思います。

具体的に言えば、最近のOSやアプリはマルチコアに最適化した作りになってるので、シングル〜デュアルコアCPUでは遅さを感じることは多いと思われます。コア数以外にも、シングルスレッド性能もメモリのアクセス速度もGPUの性能もすべてが新型機種よりも劣っていますし。

格安PCでも同じことが言えます。安いPCはその分スペックにもしわ寄せが行ってます。

4〜5年使い続けてきて遅さを感じた、または、格安なPCを買ったが性能に不満がある、という場合はあれこれパーツを変えたりシステムを最適化したりということを試すよりも札束で殴って新しいPCを買ったほうが圧倒的に楽ですし、そのくらいのお金を出す価値はあります。

2. アンチウィルスソフトが悪さをしている

特に重いような処理をさせているわけではないが、ソフトウェアのインストールや起動にめちゃ時間がかかる。起動してからだとそんなに遅いと感じない。という場合はアンチウィルスソフトがなにかやらかしている可能性が高いです。

これは比較的簡単に特定できます。一つは、アンチウィルスソフトを完全に終了させてから重いと感じるアプリを立ち上げる方法です。

「完全に」、というのがポイントです。というのも、多くのアンチウィルスソフトは何故か完全に無効化することが難しいようなわかりにくいUIになっているものが多いからです。できればアンインストールすることが確実です。

これで動作が劇的に軽くなるようであれば、アンチウィルスソフトが原因です。

もう一つ見分ける方法は、タスクマネージャーを開き、「パフォーマンス」タブのCPUグラフを右クリックして「カーネル時間を表示する」オプションをONにする方法です。

すると色の濃い部分と薄い部分が二重になったグラフになります。この、濃い部分がシングルスレッド分(たとえばデュアルコアなら50%、クアッドコアなら25%)以上を維持しているようなら、アンチウィルスソフトが原因な可能性は高いです。

なぜそのようなことが言えるかというと、アンチウィルスソフトはアクセスしたファイルがウィルスのパターンにマッチするかどうかというのをOSのカーネルにチェック処理に挟み込む方法で確認しているからです。

したがって、ウィルスチェックのチェック時間はアンチウィルスソフトのCPU利用率でなくてカーネル時間の比率の高さとして確認できるケースがほとんどです。(アンチウィルスソフトプロセスのCPU利用率が上がるケースも無いわけではないです)

解決方法としては、思い切ってアンインストールすることを個人的には推奨します。

そもそも現代のマルウェアは単純なパターンファイルでは検出できなかったり、パターンファイルに登録されてソフトが更新されるまでの間を狙って攻撃するような物が多いので、古典的なパターンマッチでは効果が低いです。アプリの振る舞いを見てブロックを行うヒューリスティックな手法を採用したものならば多少効果は高くなります。

最近ではWindowsのアンチウィルスソフトはWindows Defenderで十分ではないかと指摘する専門家もいます。このあたりの詳細は下記記事なども参考になります。

「他のセキュリティ対策ソフトはもういらない」とアピールするWindows Defenderの現状

3. SSDが載ってない

パソコンの中で行われている処理の中で一番時間がかかるのはIOです。

IOというのはネットワークやストレージ(HDDなど)に対する入出力を主に指します。メモリへのアクセスレイテンシはナノ秒の世界ですが、HDDのシークタイムはミリ秒の世界なので桁がいくつも違います。なので、ここの速度を早くすることはメモリアクセス速度などを向上させるよりもずっとインパクトが大きいです。

SSDが載っていないPCにSSDを搭載させることは体感速度を劇的に向上させます。個人的な経験では、CPUやメモリを交換・増設するよりもこれが一番体感速度に効く印象があります。それほどまでに一般的なデスクトップPC用途の処理の中でIOが及ぼす影響は大きいということでしょう。

もしこれからPCを買うならば、必ずSSDを買うようにしたほうが良いと思います。IT系エンジニアの中では十分な量のメモリ、デュアルディスプレイ、SSDあたりは「基本的人権」と言われているほどに重要なところです。

IOがボトルネックになっているか否かはWindows標準の「リソースモニター」で判別が付きます。

こちらの「ディスクのキューの長さ」がずーっと高い値をキープしているようであれば、IOがボトルネックになってる可能性は高いです。ただ、アンチウィルスソフトが頑張ってるときにもこの値は大きくなることが多いので、先にアンチウィルスソフトが原因かどうか確かめたほうが良いです。

4. メモリが足りてない

さて、その基本的人権のもう一つです。

冒頭に紹介した記事では

今時のパソコンは最低でも4GB搭載しているものであり、4GB未満ならパソコン買い替えのタイミング。
常駐で重くなるのはメモリ256MB未満時代の話であり、マジで常駐が原因ならば、その常駐アプリケーション=マルウェアなどの可能性が高い。

と解説されているものの、しかし4GBでも足りなくなるケースはあります。「メールやブラウジングでは大量のメモリは不要」というのはこういった記事で決まり文句のように語られますが、しかし近年はブラウザが担う責務が増大したこともあって、ブラウザが食うリソースは高まっています。

開いてるタブの数や使用している拡張機能によっては、ブラウジングしながらなにか別の作業、たとえば画像処理などを行った場合に4GBというメモリはすぐに食いつぶしてしまう可能性が高いです。

また、最近はデジタルカメラも高画素化してきていますが、これらの編集をPCで行う際も4GBでは不足するケースもあるでしょう。ですから、デジカメの写真をレタッチしたい、なんて場合でもそれなりにスペックには気を配ったほうが良いです。

動画編集などはメモリがいくらあっても満足ということはないという分野なのでもっての外です。

個人的には我慢して使うなら4GBでも良いと思いすが、快適に使いたいなら6GB以上、画像処理などメモリを食うアプリを動かす場合には最低でも8GB以上ないと快適にはならないと思っています。可能ならば16GB以上積んどきましょう。

メモリが足りているかどうかはこれもパフォーマンスモニタより判別できます。

「物理メモリn%使用」の表示が重いと感じる作業をしているときに常時8割~9割になっていれば、メモリ不足の可能性が高いです。

メモリが足りなくなるとシステムはストレージをメモリ代わりに使い始めます(スワップ)。すると、ナノ秒単位でアクセスできていたデータがミリ秒単位になるので単純計算で1億倍くらいのオーダーで遅くなります。

ちなみにスワップしているときもHDDへのアクセスは増大するので、3.で述べたようにディスクのキューの長さが増大します。頻度としてはHDDがボトルネックなっているケースが多いものの、確認順序としてはメモリ不足を最初に疑ったほうが誤判断しないと思います。

5. GPUの性能がヘボい・古い

意外に盲点になるところです。昔からPCに詳しかった方人ほど「GPU?俺はゲームしないからGPU性能は要らないよ」というのですが、実は現代では2Dな画面の描画にもGPUはかなり使われています。Windowsの標準GUIの描画にも使われていますし、ブラウザのページ描画にもGPU処理が使われています。それは、GPUが特定の計算(行列演算など)を得意としているからです。

GPUがボトルネックになっているケースの判別はやや難しいのですが、「ソフトの表示でボタンや通知などがアニメーションで変化するような場合にとたんに遅くなる」とか、「ブラウザで動きのあるコンテンツを読み込むととたんに遅くなる」とか、「動画がカクついて見れない」とかいう場合にGPUが原因であることがあります。

Windows 10のタスクマネージャにはGPUの利用率の表示もあるのですが、古いGPUやドライバを使用していると「そもそもGPUを使わない」という設定になっていることも多く、この利用率をもってしてGPUがボトルネックになっているか否かを判別するのは難しいです。その時はCPUを利用するので、CPU利用率がすごく高くなります。「なにか動きのある画面動作を行ったときにCPU利用率が急上昇する」という場合で、かつGPUが古い・ヘボい場合はGPUがボトルネックになっている可能性は大きいです。

ちなみに、近年のCPU統合GPUは普段の2Dな画面描画をこなすのに十分な性能を有しているので、GPUがボトルネックになるケースとして多いのは

  • 古いCPUが載っていてGPUは古いオンボードのものを使用している
  • 古いビデオカードで動かしている
  • ドライバが古い・OSが古い

という場合だと思います。

GPUがボトルネックになるようであれば、その世代のPCならばもう買い替えたほうが良い(つまり1.のケースに近い)と私は考えています。

6. HDDが死にかけている

頻度は低いですが、HDDが死にかけているとはちゃめちゃに遅くなります。数MBのファイルコピーに30分以上かかったりします。これはHDDがおかしくなっているのでリトライを何度も繰り返しているのが原因です。

S.M.A.R.T.情報をチェックするツールでエラーセクタ数を確認すれば一発でわかります。というか、明らかに何かがおかしいと思うくらい動作が重くなるので素人でも壊れる寸前だというのが分かると思います。

ちなみに、これと似たもので昔のWindowsではPIO病というのがありました。これはハードディスクアクセスにDMA転送が効かなくなり、CPU資源を消費してクソ遅いデータ転送を行うPIOモードになってしまうというドライバの不具合でした。最近のWindowsでは見ないので、この可能性は除外していい気がします。

7. マルウェア等に感染している

これも頻度としては殆どないのですが、ビットコインが流行った以降、普通のユーティリティ、ツールっぽいプログラムの中にマイニングするコードを混入させて常時実行するタイプのマルウェアが出回っているらしいです。

感染しているかどうかはタスクマネージャでCPU利用率を浪費しているプロセスを確認すれば良いでしょう。もちろん、何らかの偽装工作はしているでしょうから簡単にはわからないかもしれませんが。

8. 妙なWebサイトを開いている

これも極稀にしかみかけないですが、たまに妙なJavaScriptコードを実行させてブラウザが応答不能になるようなサイトがあります。そういう場合はブラウザ側が「このサイトのスクリプト実行に時間がかかってるよ」と教えてくれるのですぐに分かるとは思います。

9. その他考えられる原因

その他にも色々遅くなるケースはあります。主にソフトウェア側の問題です。

ある特定のソフトウェアが重い場合、単にそのソフトウェアで妙な処理をしているから遅くなっているという可能性が高いです。最も、画像処理、動画編集、3Dレンダリングなど本質的に重い作業をしているから当然重くなるというものあるのですが、それは自明なので置いときます。

具体例をあげるとすれば、Windows Updateなどでしょうか。Windows Updateはパッチの適用履歴やソフトウェアの依存関係を調べるためにPC内部に専用のデータベースを構築しているのですが、このデータベースへのアクセスが劇的に遅いです。

かといってアップデートを適用しないというわけにも行かないので、ここは我慢するしか無いでしょう。ちなみに、アンチウィルスソフトが加わると更に遅くなることが多いです。

ちなみに、以前インストールしたアップデートのバックアップをディスククリーンアップツールなどから消すと多少速度が改善します。

あとは、インターネットの表示が遅いという場合は単に回線が細いだけというケースもあります。スピードテストを実施して速度が出てない(例えば動画視聴なら最低数十MBps出てないと低画質モードになると思います)ならば、プロバイダを変えるか、太い回線を使うかに切り替えたほうが良いでしょう。

「効果があるよ」と言われているもののやっても意味ないこと

ここでは他の記事などで効果があると紹介されているものの、やっても意味ないことを挙げます。

1. 不要ファイルのクリーンアップ

厳密に言えば、特定のディレクトリに数万個のオーダーの大量のファイルがあり、そこのディレクトリを全スキャンする、などという特殊な場合ではパフォーマンスが悪化することがあります。ただ、普通の使い方で不要ファイルが多いので遅くなるということはめったになく、特別気にかけるほどの影響はないと思われます。

人間は物が多いほど目的のものを探すのが難しくなりますが、ファイルシステムのインデックスはファイル数が増えてもそういうことが起きないようなインデックスを構築しているので劇的にアクセスが遅くなることは無いです。

2. レジストリのクリーニング

これも昔からよく言われていますが、意味ないです。そもそもレジストリというものの実態は数~数十MBのデータで、現代のPCでは十分メモリに載るようなサイズのデータベースですし、そもそもレジストリに多数のアクセスをおこなうアプリケーションって殆ど無いでしょう。

また、レジストリも項目数が増えたからと言って極端にアクセス速度が落ちるようなちゃちなフォーマットになっているわけが無いです。ここらへんは計算機科学の基礎なので、よっぽど出来の悪いプログラマがレジストリを実装したので無い限りは、マイクロソフトのプログラマがちゃんと作っているでしょう。

3. メモリのクリーニング

昔から「メモリのクリーニング」と称して、「実行したらこんなにメモリを開放しましたよ!」と主張するメモリクリーナー、みたいなプログラムがあります。スマホでもありますね。

Windows OSで動く同種のソフトが何をしているのかというと、

  • キャッシュとして使用している領域を減らす
  • ワーキングセットの開放
  • メモリ圧縮

あたりを行っていると思われます。

OSがやっているメモリ資源の管理というのは非常に複雑です。OSは物理的なメモリの番地をアプリに直接割り当てるのではなくて、仮想的なメモリ空間を構築して、それと物理メモリ空間とのアドレスのマッピングを行って物理メモリを抽象化して使っています。

そのメモリの中には、消されたら絶対困るエリアもあれば、消しても困らないエリアもあったりします。仮想的に割り当てたメモリ空間で使ってない部分はいきなり削除しても問題ないですし(そもそも物理的にデータがあるわけではないので)、ファイルその他IOに向けたキャッシュとして使っているエリアも消しても一応問題ない領域です。(消すとまたファイルIOが発生して逆にパフォーマンス悪化するケースもありますが)

その他、最近のOSではメモリ圧縮という技術も使われたりします。これはその名の通り使用しているメモリを圧縮してスワップを防ぐものです。

あとは詳しく書くと長くなるので書きませんが、ともかく、OSは「メモリ不足でスワップしないように、かつパフォーマンスが出るように」うまくメモリを使おうと日夜頑張っているわけです。ですから、どちらかというと空きメモリをギリギリまで使うような管理の仕方をしているはずです。

つまり、メモリの空き容量が大きいほどパフォーマンスがでるとか、そんな単純な話ではないのです。

OSではパフォーマンスを発揮できるよう絶妙にこれらの技術を駆使して管理していますが、これらの処理を手動で行えるようなインタフェースを用意したりもしています。それを手動で実行してしまうのがいわゆるメモリ解放ツールがやっていることです。

ただ、OSはメモリが足りなくなってくれば同種の動作を裏で行うので、それをいつやるかの違いだけで大した差は無いでしょう。むしろ、先に書いたとおり、キャッシュを消すなどやらなくてもいいことをメモリの空き領域を増やすために行って結果としてディスクIOを増やすなど逆効果の場合もあります。

素人が手動でボタンを押したり、素人が単純なアリゴリズムでメモリ操作を行うよりも近年のOSに完全に任せきりにしたほうが良いのは言うまでもありません。

4. 常駐アプリケーションの終了(スタートアッププログラムの整理)

私はこの「常駐アプリ」というMS-DOS由来の名前を未だに使ってるのが嫌いなのですが、それはさておき。

大量のリソース(メモリ、CPU)を消費しているとかで無い限りは、終了してもほとんど意味がないです。重要なのは常駐アプリケーションの数ではなくて、リソース消費量です。

ちなみに、このリソース消費量が高いアプリの代表例がアンチウィルスソフトです。

5. 一時ファイルの削除

ブラウザのキャッシュなど、一時ファイルの類の中にはIO等に時間がかかるので速度向上のために保存しているファイルもあります。これを削除しても遅くなることはあれど、早くなることはほとんど無いでしょう。

一時ファイルを削除する必要があるのは、ストレージ容量が足りなくなってきたときか、なにかソフトウェアにパフォーマンス以外の不具合が出たときくらいです。

6. デフラグ

FATなど昔のファイルシステムでもなければ、断片化がパフォーマンスに著しく影響することはないはずです。最近のファイルシステムは断片化しにくいと言われていますし、そもそもギリギリのファイル容量で長期間運用するなど特殊な使い方をしない限りは断片化がひどいことにはなりません。

アクセス頻度の高いファイルをディスク外周に配置しパフォーマンスを向上させるような類のソフトを使ったことも個人的にありますが、体感できるほどの差は無いですし、そもそも何をもってアクセス頻度が高いと判定しているのか怪しいと思います。もし、ディスクアクセスの統計を裏で収集しているならば、その処理のほうがよっぽどパフォーマンスに影響するでしょう。

ちまちまデフラグするならSSDに換装したほうがいいです。いまはSSDの値段もかなり落ちましたし。

7. 不要なアプリケーションの削除

アプリケーションは起動しなければインストールされていようといまいとパフォーマンスには影響しません。常時起動しているアプリケーションの場合は4.に書いたとおりです。

8. セキュリティソフトのアップデート

前述したとおり、アンチウィルスソフトの類そのものがパフォーマンスに影響します。

もちろん、ソフトウェアのアップデートはセキュリティソフトにかかわらず何でも重要で、基本的にはやったほうが良いのです。でもそれはパフォーマンス向上のためではなく、脆弱性の修正パッチ等々を適用するためです。

9. Windows UIの細かい最適化

アニメーション表示をやめるとか、定番のように各種サイトで解析されているやつです。

最近のPCのスペックならば誤差程度の影響しか無いです。強いて言えば、古いOS、ハードウェアと組み合わせたときにたまに問題になる程度です。Windows UIの細かい最適化が必要になるようなPCは買い替えることなどを検討したほうが良いでしょう。

10. 電源の不具合の確認

絶対ないとは言えませんが、不安定な電圧変動でパフォーマンスが悪くなるということはありえないと思います。動作に影響を与えるくらい電圧変動がおかしくなった場合は、普通システムはハングアップして止まるか、突然電源が切れます。

というか、そもそも普通の人は電源に不具合があるかどうかなど判定できないと思います。

11. 再起動してみる

とりあえずこれで治ることも正直なところ多いのですが、パフォーマンスが悪化するには理由があるので、その理由を追求しないことには根本的な処置になりません。

まとめ

  • パフォーマンスモニタの待ちキュー長さ、CPU利用率、メモリ利用率、カーネル時間などで問題の切り分けを
  • 古いPC、格安PCを使っているなら第一の選択肢は買い替え
  • SSDと大容量メモリ(ブラウジングだけでもできれば6GB以上を)は基本的人権
  • 「パソコン 遅い 対策」などで出てくる記事の9割は役に立たない

という感じです。

私は金がなかったので長年低スペックなPCを快適に使おうと努力し、就職してからはクソみたいなスペックのPCにクソみたいなアンチウィルスソフトを入れて開発をやらせられ、普通の人よりはパフォーマンスという点において苦労してきたと思っていますが、私の20年弱のコンピュータ歴を一言で言うならば、「遅けりゃ札束で殴れ。新しいハイスペックマシンを買え」です。以上、ご査収ください。