web-dev-qa-db-ja.com

Windows:ディスクの大量使用の原因を特定する方法

Perfmonの「PhysicalDisk \%Idle Time」を使用して、ディスクが頻繁に使用されている時期を判断しています。問題は、ディスクを使用していたものを絞り込むための最良/最速の方法は何ですか?

私は次のperfmonカウンターを知っていますが、それぞれに問題があります。

  • Memory\Pages/sec:ディスク使用量がページングによるものである場合に役立ちます。それ以外の場合は役に立ちません。
  • Process\IO Data Bytes/sec:非ディスクIOも(ネットワークなど)を含む)、perfmonセットアップ後に開始されたプロセスを含まない、プロセスをそれらのプロセスと一致させるのに時間がかかる場合がありますperfmonid。

Resource Monitorの[ディスク]タブには非常に役立つ情報が表示されますが、残念ながら履歴ログは提供されません。たとえば、「%IdleTime」が午前10時に20秒間0だった理由はわかりません。

私が求めている情報は次のとおりです。

  1. どのプロセスがディスクを最も使用していましたか?
  2. 彼らはどのファイルにアクセスしていましたか?
3
Jon

[〜#〜] pal [〜#〜] をインストールし、1日実行して、キャプチャしたデータを分析します。

4
joeqwerty

MicrosoftのsysinternalsのProcessMonitorはこれをリアルタイムで実行しますが、必要な限り実行したままにすることもできます。設定を保存することもでき、プログラム全体を簡単にスクリプト化できます。

http://technet.Microsoft.com/en-us/sysinternals/bb896645

上部に5つのボタンがあり、ファイルキャビネットのように見えるボタン以外はすべてオフにします。 (ファイルシステムアクセス)

リスト内のプログラム名を右クリックして、その項目を除外するようにプログラムに指示すると、DLLHostなどのシステムプロセスを無視できます。

ドライブにアクセスするすべてのプログラムは、すぐにこのリストに表示されます。

幸運を。!

または、スケジュールされたタスクで次のバッチファイルを使用して、しばらくログに記録してから閉じます。

set Delaytime=3

start Procmon.exe /quiet /accepteula /minimized /backingfile log.pml

ping 127.0.0.1 -n %Delaytime% -w 1000 > NUL

start Procmon.exe /quiet /accepteula /minimized /terminate

Delaytimeをログに記録する秒数に変更し、後でlog.pmlを開きます。

4
eldorel