共用方式為


高 CPU 使用量疑難解答指引

本文可協助您識別持續高CPU使用量的原因。 請記住,您可以預期 CPU 使用量會隨著進程或應用程式提供要求而增加。 不過,如果您持續看到長時間的CPU使用量維持在較高層級(80% 或更高),系統或應用程式的效能將會受到影響。 因此,請務必了解持續高CPU使用量的原因,以便盡可能更正問題。

疑難排解工具

工作管理員

使用任務管理員來檢視CPU耗用量,以協助識別造成高CPU使用量的進程或應用程式:

  1. 選取 [ 開始],輸入 工作,然後在搜尋結果中選取 [任務管理器 ]。
  2. [ 任務管理員] 視窗預設為 [ 行程 ] 索引標籤。如果您在 [ 名稱 ] 資料列中看到單一進程名稱清單,您可以展開群組進程的任何實例。
  3. 選取 CPU 資料行標頭,依 CPU 使用量排序列表。 請確定標頭上出現的箭號指向向下,以將數據從最高到最低 CPU 耗用量排序。

如果進程可以停止,或可以停用相關的服務,請停止進程或服務。 然後,檢查這是否減輕問題。

資源監視器

使用資源監視器來檢視 CPU 耗用量:

  1. 選取 [ 開始],輸入 resmon,然後從搜尋結果中選取 [資源監視器 ]。

  2. 在 [資源監視器] 視窗中,選取 [CPU] 索引標籤。

    注意

    您可能必須最大化視窗才能看到所有資料。

  3. 選取 [ 平均 CPU] 資料行標頭,依整體 CPU 使用量來排序列表。 請確定標頭上出現的箭號指向向下,以將數據從最高到最低 CPU 耗用量排序。

如果任何進程對您的環境顯示高於預期的耗用量速率,當您嘗試判斷問題的原因時,請先考慮這些最上層進程。

處理序總管

[ 行程 總管] 工具提供您計算機上目前正在執行之進程的完整概觀,包括叫用進程的人員詳細數據,以及其耗用的系統資源總數。

如果您要驗證作業系統相關程式(例如 System),請遵循下列步驟:

  1. 以系統管理員身分執行進程總管。
  2. 以滑鼠右鍵按兩下進程,選取 [屬性],然後選取 [ 線程] 索引卷 標。
  3. 選取耗用高 CPU 的線程,然後選取 [堆棧 ] 以檢視正在執行的函式。

注意

若要取得更好的堆疊信息結果,請在進程總管中設定符號。 若要這樣做,請遵循下列步驟:

  1. 安裝 適用於 Windows 的偵錯工具。
  2. 以系統管理員身分執行進程總管。
  3. 選取 [ 選項] 功能表,然後選取 [ 設定符號]。
  4. 將Dbghelp.dll路徑變更為 C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll,然後選取 [ 確定]。

常見的疑難排解案例

本節介紹使用高 CPU 使用量的不同進程案例。

唯一命名的單一Microsoft程式

  1. 收集效能監視器記錄。 使用 1 秒到 5 秒的快照間隔。
  2. 在發生高 CPU 使用量時收集 Windows Performance Recorder (WPR) 記錄檔。

    注意

    請勿讓此記錄檔長時間執行,因為檔案成長很快。 您應該只需要執行記錄幾分鐘(三到五個),才能擷取高 CPU 使用量。

  3. 回報的高 CPU 使用量期間,執行 ProcDump 工具兩次。 將運行時間隔開幾分鐘的空間。

Svchost 程式

如果 svchost 進程耗用高 CPU 使用量,而 svchost 進程包含多個服務,您必須中斷每個服務以在自己的 svchost 進程中執行,以判斷哪個服務造成高 CPU 使用量。 若要如此做,請執行下列步驟:

  1. 開啟提高權限的命令提示字元視窗。

  2. 如果每個服務是共用的 svchost 程式,請將其分成自己的 svchost 進程。 若要這樣做,請執行下列命令:

    sc config <service name> type= own
    

    注意

    在此命令中,將服務名稱>取代<為實際的服務名稱。

  3. 重新啟動服務

  4. 在命令提示字元中,執行 tasklist /svc 以確認服務正在自己的 svchost 進程中執行。

    重要

    問題解決之後,您必須返回步驟 2,並還原您所做的工作。

    若要這樣做,請將 取代sc config <service name> type= ownsc config <service name> type= share為 命令中的 。 然後重新啟動服務。

  5. 將每個服務分成自己的 svchost 程式之後,您現在必須識別哪個服務正在推動 CPU 使用量,或耗用高 CPU 使用量。

  6. 收集效能監視器記錄。 使用 1 秒到 5 秒的快照間隔。

  7. 記錄冒犯 Svchost 程式的 PID。

  8. 發生問題時收集 WPR 記錄檔。

  9. 在回報的高 CPU 使用量期間執行 ProcDump 兩次。 將運行時間隔開幾分鐘的空間。

多個具有相同名稱的進程實例

進程的數個實例可以共用相同的名稱。 例如,在遠端桌面通訊協定 (RDP) 伺服器上explorer.exe進程可能會發生此問題。

若要針對此問題進行疑難解答,請遵循下列步驟:

  1. 收集效能監視器記錄。 使用 1 秒到 5 秒的快照間隔。

  2. 發生問題時收集 WPR 記錄檔。

  3. 在回報的高 CPU 使用量期間執行 ProcDump 兩次。 將運行時間隔開幾分鐘的空間。

  4. 執行下列命令來記錄違規程式的 PID:

    tasklist /v /fo csv >Running_Process.txt

第三方應用程式程式

如果第三個進程被識別為問題的原因,您必須連絡應用程式廠商,以瞭解個別進程為何導致計算機上的 CPU 使用量偏高。

資料收集

發生問題之前

您可以使用偵錯診斷 2.0 版本來進一步針對此問題進行疑難解答。 若要使用此工具,請遵循下列步驟。

  1. 安裝偵 錯診斷工具 v2 Update 2

    重要

    在您安裝 2.0 版本之前,請先卸載所有其他版本的偵錯診斷工具。

  2. 選取 [開始],輸入性能監視器,然後按鼠右鍵 效能監視器 以系統管理員身分執行。

  3. 使用 效能監視器 收集性能計數器記錄並啟動記錄。

發生問題時

  1. 開啟 DebugDiag 2 集合
  2. 選取 [ 行程 ] 索引卷標,以滑鼠右鍵按鍵按鍵對應至適當應用程式集區的背景工作進程,然後選取 [ 建立完整使用者傾印]。
  3. 當 CPU 使用量偏高時重複步驟 2 三次。
  4. 停止 效能監視器記錄。
  5. 使用 DebugDiag 壓縮數據。 若要這樣做,請選取 [工具>建立遞增封包檔案]。

建議您保留您收集的資訊,以防您必須連絡 Microsoft 支援服務。