【Windows 10】Ntoskrnl.exeによるCPU・メモリ・ディスク使用率の異常上昇を解決する方法
Redditやその他のWindowsフォーラムでは、ntoskrnl.exeに関連するメモリリークについて多くのユーザーから報告が寄せられています。このシステムファイルによって、あるいはこれに関連して、RAMやCPUの使用率が大幅に上昇するという声が目立ちます。特に深刻なケースでは、メモリダンプに起因するBSOD(ブルースクリーン)が発生したという報告もあります。
本記事では、Windowsにおけるメモリ管理の仕組みとntoskrnl.exeの役割を解説し、なぜこのファイルが大量のメモリを消費するのか、その原因と具体的な解決策をご紹介します。
Ntoskrnl.exeとは?その役割は?
Windows 10は大規模なOSですが、どのようにしてメモリ操作を効率的に処理しているのでしょうか。その鍵を握るのがntoskrnl.exeというメモリハンドラーです。Ntoskrnl.exe(Windows NTオペレーティングシステムカーネルの略)は「カーネルイメージ」とも呼ばれ、Windows NTカーネル空間のカーネル層とエグゼクティブ層を提供するシステムアプリケーションファイルです。ハードウェア仮想化、プロセス管理、メモリ管理など、さまざまなシステムサービスを担当しており、システムの中核を担う存在です。キャッシュマネージャー、エグゼクティブ、カーネル、セキュリティ参照モニター、メモリマネージャー、スケジューラーなどが含まれています。
こうした重要な役割を担うため、Ntoskrnl.exeは厳重に保護されたシステムファイルとなっており、簡単には削除されたり破損したりしないようになっています。
メモリ管理の仕組み
メモリ管理は次のように動作します。まずタスクが実行プログラムとともにメモリ(RAM)へロードされます(フェッチ)。次にCPUがそれをデコードしてタスクを実行し、結果をメモリに記録します。記録された結果は、後からプログラムによってディスクに書き込まれることもあります。実行段階では、GPU、CPU、ディスク(HDD/SSD)、ネットワークデバイスなど、タスクの内容に応じて複数のデバイスへのアクセスが発生します。プログラムを閉じると、処理していたデータとともにメモリからアンロードされ、解放された領域は他のタスクが利用できるようになります。
Ntoskrnl.exeが大量のメモリ・CPU・ディスクを消費する原因
ntoskrnl.exeがメモリを管理しているのに、なぜメモリやCPUを大量に消費してしまうのでしょうか。主な原因は以下の通りです。深刻なケースの多くは、ハードウェアやマルウェアに起因するメモリリークが原因です。
原因1:Windows 10の新しい圧縮メモリ機能
Windows 10では、従来のOSとは異なり、メモリを積極的に消費する仕組みが組み込まれています。Microsoftはこれについて何度も説明を行っています。
Windows 10 Build 10525のリリース時に、Microsoftは次のように述べています。「Windows 10では、メモリマネージャーに『圧縮ストア』という新しい概念を追加しました。これは圧縮されたページのインメモリコレクションです。メモリマネージャーがメモリ不足を検知すると、未使用のページをディスクに書き込む代わりに圧縮します。これによりプロセスごとのメモリ使用量が削減され、Windows 10はより多くのアプリケーションを物理メモリに保持できるようになります。圧縮ストアはシステムプロセスのワーキングセット内に存在するため、他のプロセス用にメモリを確保する際に、システムプロセスのワーキングセットが大きくなります。これがタスクマネージャーにも表示され、以前のバージョンよりシステムプロセスのメモリ消費が多く見える理由です。」
つまり、大きなメモリ使用量はWindows 10の設計上の仕様であり、メモリリークと誤認されやすいのです。Windows 10はメモリを犠牲にして速度を得る設計になっています。ページをHDDに書き込む代わりに、RAM上で圧縮するのです。RAMから圧縮データを読み込む方が、HDDから読み込んでRAMに転送するよりも高速なため、Windows 10は以前のバージョンより高速に動作します。この仕組みは、Windowsが採用する以前からLinux OSに搭載されていたものです。開いているアプリケーションが増えるほどメモリ使用量が増加し、それに伴ってCPU使用率も上がります。
原因2:不良または古いデバイスドライバー
ネットワークカード、キーボード、グラフィックカードなどのデバイスとの通信において、ntoskrnl.exeはデバイスドライバーを介してデータの送受信を行います。受信したデータはRAMに書き込まれ、実行を待ちます。
デバイスドライバーに不具合がある場合、ドライバーが継続的にntoskrnl.exeのメモリハンドラーへデータを送り続け、メモリリークとして現れることがあります。また、不良ドライバーがntoskrnl.exeが所有するメモリ領域にデータを書き込んでしまうケースもあります。このデータがメモリに蓄積され続けてRAMを圧迫し、それらを処理するためにCPU使用率も上昇します。ページにディスクを使用していた旧バージョンのWindowsでは、ディスク容量が急速に満杯になることもあります。
この問題は、Windows 7や8.1からWindows 10へアップグレードしたユーザーに特に多く見られます。ドライバーがWindows 10と互換性がなく、メモリリークを引き起こす可能性があるためです。古い「Killer Network Drivers」がWindows 10でのメモリリークの原因になったという報告もあります。
原因3:マルウェアとウイルス
オンラインで配布されているシェアウェアやフリーウェアには注意が必要です。悪意のあるソフトウェアは、ntoskrnl.exeシステムファイルに意図的に組み込まれたり、このファイルの機能を乗っ取ったりしてメモリリークを引き起こすことがあります。実行ファイルのレジストリを改変する場合もあります。その結果、ntoskrnl.exeは正常に動作できなくなります。マルウェアはコンピューターに害を与えることを目的としているため、RAMへのデータ流入は許可しても流出を妨げます。ウイルスがntoskrnl.exeの所有するメモリ領域に活発に書き込みを行うケースもあります。これによりメモリが満杯になり、CPU使用率が急増します。HDDに保存されたページがストレージを圧迫することもあります。
ntoskrnl.exeがメモリの上限に達し、これ以上データを受け入れられない状態を検知すると、「パニック」状態に陥ります。状況を打開するため、すべてのWindowsファイルとともにメモリダンプを実行します。その結果がブルースクリーン(BSOD)です。メモリ領域への継続的な不正アクセスを検知した場合にも、同様の現象が発生します。
また、過度な動作によるCPUの過熱で、システムが突然シャットダウンすることもあります。CPUの焼損を防ぐため、コンピューターは冷却のためにシャットダウンするのです。
原因4:Ntoskrnl.exeシステムファイルの破損
Ntoskrnl.exeは厳重に保護されており、滅多にクラッシュしたり破損したりすることはありません。しかし、万一破損すると、ntoskrnl.exeは誤動作し、何をいつRAMに書き込むべきか、何をいつ解放すべきかを判断できなくなります。その結果、データやメモリページが蓄積され、CPUがこのメモリ領域の管理に多大な負荷をかけられることになります。同じ理由でHDDが満杯になる可能性もあります。
Windows 10でntoskrnl.exeによる過剰なメモリ使用を解決する方法
突然メモリリークが発生し始めた場合は、マルウェアやウイルスに感染している可能性があります。Windowsアップデート後や新しいデバイスの接続後にメモリリークが始まった場合は、不良または古いデバイスドライバーが原因かもしれません。
以下に、ntoskrnl.exeによる過剰なメモリ消費を解決する方法を紹介します。
事前準備:破損したシステムファイルの修復
まず、Restoroなどをダウンロードして実行し、破損・欠落しているシステムファイルのスキャンと復元を行ってください。以下の対処法を試す前に、すべてのシステムファイルが完全であることを確認することが重要です。
方法1:ドライバーを更新する
Windows 10にアップグレードした後は、グラフィックドライバーやネットワークドライバーがメモリリークの原因である可能性が高いです。特に「Killer Network Drivers」を使用しているPCでよく見られます。ドライバーを更新する手順:
- Windowsキーを押しながらRキーを押し、「hdwwiz.cpl」と入力してOKをクリック
- ドライバータブに移動し、「ドライバーの更新」をクリック
- インターネットから更新されたドライバーを自動検索してインストールするオプションを選択
- PCを再起動
方法2:マルウェア・スパイウェア対策ソフトでシステムをスキャンする
PCにマルウェアスキャナーを導入しておくのは良い習慣です。以下の手順でスキャンを実行しましょう。
- SpybotまたはMalwarebytesをダウンロード
- ソフトウェアをインストールしてスキャンを実行
- 検出された問題をすべて修復
- コンピューターを再起動
方法3:Runtime Brokerを無効化する
Redditでの議論によると、Runtime Brokerはメモリ最適化が不十分なため、CPUサイクルの大部分を消費することが多いシステムプロセスです。これがCPU使用率の高騰とメモリリークの原因となります。
Runtime Brokerを無効化する手順:
- スタートメニューから設定アプリを開く
- システム > 通知とアクションを開く
- 「Windowsに関するヒントを表示する」または「Windowsの使用中にヒント、トリック、候補を表示する」のチェックを外す
- PCを再起動
別の方法:
- メモ帳を開く
- 以下のキーをコピーしてメモ帳に貼り付け
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TimeBroker] "Start"=dword:00000003 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SysMain] "DisplayName"="Superfetch" "Start"=dword:00000003
- 「ファイル」から「名前を付けて保存」を選択
- 任意の名前で.reg形式として保存
- ファイルを管理者として実行し、レジストリの変更を承認
- PCを再起動
方法4:レジストリ設定を変更する
パフォーマンス向上のために編集できるレジストリ設定があります。以下の手順で調整してください。
- 「Windows」+「R」キーを同時に押す
- 「regedit」と入力して「Enter」を押す
- 以下のアドレスに移動
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Session Manager > Memory Management
- 右ペインの「ClearPageFileAtShutdown」レジストリをダブルクリック
- 「値のデータ」を「1」に変更して「OK」をクリック
- コンピューターを再起動し、問題が解決したか確認
常にマルウェア対策・スパイウェア対策ソフトを最新の状態に保ちましょう。また、デバイスドライバーの更新も定期的に確認してください。デバイスメーカーは問題の解決と機能向上のため、ドライバー定義を継続的に更新しています。上記の方法で解決しない場合は、「システムと圧縮メモリ」の対処法を試してみる価値があります。
-
Windows 10でWaasMedicSVC.exeのディスク使用率が高くなる問題を解決する方法
WindowsはPCをバグから保護し、問題を修正し、新しい機能を提供してくれます。バックグラウンドではさまざまなプロセスやサービスが常駐し、更新プログラムを確認することで、通常は快適なアップデート体験を実現しています。そのひとつが「Windows Update Medicサービス(WaasMedicSVC.exe)」です。このサービスはWindows Updateのコンポーネントを管理し、PCが最新の更新プログラムを確実に受け取れるようにする役割を担っています。 しかし、場合によってはWaasMedicSVC.exeがディスクやCPUに大きな負荷をかけ、PCの動作が遅くなるなどのトラブルを引き
-
Windows 10でSedlauncher.exeのディスク使用率が高くなる問題を解決する方法
MicrosoftはWindows 10 PCのバグや不具合を修正するために、さまざまな更新プログラムをリリースしています。しかし、これらの更新プログラムが原因で、PCの正常な動作に支障をきたすケースもあります。その代表例が、Windows 10の更新プログラム「KB4023057」です。この更新プログラムの適用後、「PCの動作が極端に遅くなった」という報告が多数寄せられました。調査の結果、原因はSedlauncher.exeというプログラムがディスク使用率の大部分を占有していたことにあると判明しました。 本記事では、REMPLフォルダに含まれるSedlauncherプロセスについての基本情報