查找導致 Windows 上磁盤使用率較高的進程

Jacki

在 Windows 中,某些正在運行的進程可能會產生大量磁盤 I/O,可能會影響其他應用程序的性能。本文探討了基本的 Windows 工具,可幫助您識別對磁盤子系統負載過重的進程。

查看當前磁盤負載的最簡單方法是通過任務管理器。按Ctrl +Shift + Esc,轉到表現選項卡,然後選擇物理磁盤之一。該屏幕截圖顯示了其中一個磁盤加載率為 100% 的情況示例。

流程選項卡,您可以找出哪個進程導致磁盤使用率過高。 Windows 10 和 11 中的新任務管理器包括一個“進程”選項卡,除了 RAM 和 CPU 使用情況的標準列之外,還包含一個新的磁盤負載列。按以下順序對流程進行排序磁碟柱子。在頂部,您將看到消耗最多磁盤資源的程序的名稱。

要獲取更詳細的信息,請右鍵單擊該進程並選擇前往詳情

為了方便起見,我們向任務管理器添加其他列。右鍵單擊進程表的標題,選擇“選擇列”,然後添加以下內容:

  • I/O 讀取字節
  • I/O 寫入字節
  • 命令行

這將幫助您了解磁盤使用情況(進程是否主要執行讀取或寫入操作)並查看用於啟動程序的命令行。在這種情況下,很明顯,正在運行的 PowerShell 腳本會導致磁盤上出現高負載(*.PS1)。

我們確定了導致磁盤使用率較高的進程,但仍不清楚哪些文件正在被主動寫入或讀取。內置的資源監控器可以幫助識別正在使用的文件。您可以從“性能”選項卡或使用resmon.exe命令。

前往磁碟選項卡。按 I/O 活動對進程進行排序,並通過啟用旁邊的複選框來選擇導致高磁盤負載的進程。

另請閱讀:如何修復 Windows 10 系統 (ntoskrnl.exe) 進程的高 RAM 和 CPU 使用率

此進程使用的文件的過濾列表現在將顯示在磁盤活動部分。查找具有最多寫入和/或讀取操作的文件。這是您正在尋找的文件。

在此示例中,我使用磁盤速度在 Windows 中檢查磁盤性能的工具。

微軟的流程瀏覽器該工具還可用於識別哪些進程和線程對磁盤造成高負載。 Process Explorer 提供有關磁盤負載的詳細信息。這使您可以識別負責密集磁盤活動的特定進程和線程,並檢查它們使用的文件和資源。這使您可以識別負責密集磁盤活動的特定進程和線程,以及它們正在使用的文件和資源。

默認情況下,Process Explorer 不顯示有關讀寫操作的信息。要添加I/O 讀取字節I/O 寫入字節專欄,轉到進程IO選項卡並選擇看法->選擇列

按 I/O 對進程進行排序,以查找導致高磁盤負載的進程。在線程數選項卡中,您還可以找到導緻密集 I/O 的特定進程線程。

如果進程運行在以下環境下,則使用任務管理器或資源監視器可能很難識別對磁盤造成重負載的進程:系統特權。此類進程可能在任務管理器中不可見。

下面的屏幕截圖顯示了使用 VMDK 文件的 SYSTEM 進程的示例。上下文清楚表明這是一個VMware Workstation虛擬機文件,但從進程名稱來看這一點並不明顯。

在這個例子中,它是一個PID 4 的系統進程。這是一個標準的內核模式系統進程(設備驅動程序也在這個進程中運行)。這過程監控器(ProcMon) 實用程序更適合探索系統進程的磁盤使用情況,因為它顯示磁盤 I/O 活動,包括內核級進程的活動。

Procmon 可以顯示有關文件使用活動的信息。選擇工具->文件摘要。選擇常用的文件並雙擊它。這會將文件路徑添加到 Procmon 過濾器中。就我而言,我發現高磁盤負載是由以下原因引起的vmware-vmx.exe進程(VMware Workstation 主進程負責運行虛擬機)。

有關進程的磁盤活動的信息也可以從性能計數器獲取。以下 PowerShell 命令根據性能計數器的報告,實時列出磁盤活動排名前 10 的進程:

Get-Counter 'Process(*)IO Data Bytes/sec' | Select-Object -ExpandProperty CounterSamples | Sort-Object -Property CookedValue -Descending | Select-Object InstanceName, CookedValue -First 10

將顯示磁盤 I/O 活動最多的前 10 個進程。使用處理Sysinternals 的 CLI 工具可查看特定進程正在使用哪些文件:

handle.exe -p <ProcessNameOrPID>

此命令顯示指定進程(由其 PID 標識)的所有打開的文件描述符。

下面是在 Windows 上使用 Handle 工具釋放鎖定文件的示例。

我們回顧了主要的管理工具,這些工具可幫助確定哪些進程會產生高磁盤負載。