Contents

Windowsで高いディスク使用量を引き起こすプロセスを見つけます

Contents

/images/high-100-disk-usage-in-windows.png

Windowsでは、特定の実行プロセスが重いディスクI/Oを生成し、他のアプリのパフォーマンスに影響を与える可能性があります。この記事では、ディスクサブシステムを大きくロードしているプロセスを特定するのに役立つ基本的なWindowsツールについて説明します。

現在のディスクの負荷を表示する最も簡単な方法は、タスクマネージャーを使用することです。 ctrl + shift + escを押し、パフォーマンスタブに移動し、物理ディスクのいずれかを選択します。スクリーンショットは、ディスクの1つが100%でロードされる状況の例を示しています。

/images/high-100-disk-usage-in-windows.png

プロセスタブで、どのプロセスが高いディスク使用を引き起こしているかを確認できます。 Windows 10および11の新しいタスクマネージャーには、RAMおよびCPU使用の標準列に加えて、ディスクロード用の新しい列を備えたプロセスタブが含まれています。ディスク列でプロセスを並べ替えます。上部には、最もディスクリソースを消費するプログラムの名前が表示されます。

/images/task-manager-disk-usage.png

より詳細な情報を取得するには、プロセスを右クリックして、詳細を選択してください。

便宜上、タスクマネージャーに追加の列を追加しましょう。プロセステーブルのヘッダーを右クリックして、「列を選択」を選択し、次を追加します。

  • i/oバイトを読みます

  • i/oバイトを書き込みます

*コマンドライン

これは、ディスク使用量プロファイルを理解し(プロセスが主に読み取り操作を実行しているか書き込み操作を実行しているかどうか)、プログラムの起動に使用されるコマンドラインを表示するのに役立ちます。この場合、実行中のPowerShellスクリプトがディスクに高い負荷を引き起こすことは明らかです( *.ps1)。

235295298667

ディスクの使用量が高いプロセスを特定しましたが、どのファイルが積極的に書かれているか、読み取られているかは不明のままです。組み込みのリソースモニターは、使用中のファイルを識別するのに役立ちます。 パフォーマンスタブから、または resmon.exeコマンドを使用して開くことができます。

/images/open-resource-monitor.png

ディスクタブに移動します。 I/Oアクティビティでプロセスを並べ替え、その隣のチェックボックスを有効にすることにより、ディスクロードが高いプロセスを選択します。

このプロセスで使用されるファイルのフィルタリングリストが、ディスクアクティビティセクションに表示されます。操作が最も多く、読み取り操作があるファイルを見つけます。これはあなたが探しているファイルです。

/images/view-processes-caused-high-disk-usage-in-resmon.png

MicrosoftのProcess Explorerツールを使用して、どのプロセスとスレッドがディスクに高い負荷をかけているかを特定することもできます。プロセスエクスプローラーは、ディスクの負荷に関する詳細情報を提供します。これにより、集中的なディスクアクティビティを担当する特定のプロセスとスレッドを特定し、使用するファイルとリソースを調べることができます。これにより、集中的なディスクアクティビティの原因となる特定のプロセスとスレッド、および使用しているファイルとリソースを特定できます。

デフォルトでは、Process Explorerは読み取り操作に関する情報を表示しません。 I/Oの読み取りバイトとI/O Writeバイト列を追加するには、IOタブに移動し、列を列を選択します。列を選択します。

/images/show-process-read-and-write-io-in-proc-explorer.png

I/Oでプロセスを並べ替えて、高いディスク負荷を引き起こすものを見つけます。 スレッドタブでは、集中的なI/Oを引き起こしている特定のプロセススレッドを見つけることもできます。

/images/process-explorer-view-disk-io.png

プロセスがシステムの特権の下で実行されている場合、タスクマネージャーまたはリソースモニターを使用してディスクに重い負荷を配置しているプロセスを識別することは困難です。このようなプロセスは、タスクマネージャーでは表示されない場合があります。

以下のスクリーンショットは、VMDKファイルを使用したシステムプロセスの例を示しています。コンテキストにより、これがVMwareワークステーション仮想マシンファイルであることが明らかになりましたが、これはプロセスの名前からは明らかではありません。

/images/resource-monitor-view-highly-used-files-.png

この例では、PID 4を使用したシステムプロセスです。これは標準のカーネルモードシステムプロセスです(このプロセスでもデバイスドライバーも実行されます)。プロセスモニター( procmon)ユーティリティは、カーネルレベルのプロセスを含むディスクI/Oアクティビティを示すため、システムプロセスによるディスク使用量を調査するのに適しています。

Procmonは、ファイルの使用アクティビティに関する情報を表示できます。 ツール

  • ファイルの概要を選択します。高度に使用されているファイルを選択し、ダブルクリックします。これにより、Procmonフィルターにファイルパスが追加されます。私の場合、高ディスクの負荷は「VMWare-VMX.exe」プロセス(プライマリVMwareワークステーションプロセスが仮想マシンの実行に責任がある)によって引き起こされます。

/images/view-used-files-of-system-process-with-process-mon.png

プロセスのディスクアクティビティに関する情報は、パフォーマンスカウンターから取得することもできます。次のPowerShellコマンドは、パフォーマンスカウンターによって報告されているように、リアルタイムでディスクアクティビティによる上位10プロセスをリストします。

get-counter '\ process(*)\ io data bytes/sec' | Select-Object-ExpandProperty CounterSamples | sort-object-property cookedvalue-dessending | select-object instancename、cookedvalue-first 10

/images/powershell-query-performance-counters-by-disk-usa.png

高ディスクI/Oアクティビティを備えた上位10のプロセスが表示されます。 SysinternalsのハンドルCLIツールを使用して、特定のプロセスが使用しているファイルを確認してください。

handle.exe-p

このコマンドは、指定されたプロセスのすべての開いたファイル記述子(PIDで識別されます)を表示します。

/images/handle-exe-view-open-files-by-pid.png

ハンドルツールを使用してWindowsでロックされたファイルをリリースする例を示します。

どのプロセスが高いディスクロードを生成するかを特定するのに役立つ主要な管理ツールを確認しました。

*÷ソースリンク:

、Windowsでロックされたファイルをリリースし、