我注意到,從一段時間以來,我的系統一直凍結,這可能是由系統進程導致的高 CPU 使用率造成的。
我運行的所有應用程式都是 Skype、TeamSpeak 和 Chrome,因此它絕對不應該佔用那麼多 CPU。
您可以在下面的螢幕截圖中看到問題本身和正在運行的進程:
有時 CPU 使用率達到 90%,但平均使用率約為 40-65%。
我的電腦參數:
- Windows 8(客戶預覽版)
- 英特爾酷睿 i3 - 2350M
- 8GB 記憶體
我將不勝感激任何幫助嘗試!問候。
- 更新 -
正如下面的用戶發布了一個很好的答案,我注意到系統中消耗最多 CPU 的進程被稱為Arthurx.sys
,簡單的谷歌告訴它是一個TPLink 驅動程式(一個wifi 適配器,我大約2 週前買了!) drivers已從Windows MSDN安裝,但也嘗試從隨附的CD安裝驅動程序,但沒有幫助。從系統啟動開始,它僅使用大約 5% 的 CPU,但在工作 2-4 小時後,它會逐漸增長並達到 40-60% 的 CPU 使用率。
設備名稱:TPLink WN722N
答案1
介紹
「系統」進程的高 CPU 使用率通常是由硬體驅動程式問題(錯誤、舊版、不相容等)引起的。
系統進程載入(或託管)來自不同供應商的需要更高層級記憶體存取的多個硬體驅動程式。這就是為什麼診斷特定的罪魁禍首可能需要一些偵探工作,如下所述。
診斷問題
若要診斷 CPU 使用問題,您應該使用 Windows 事件追蹤 (ETW) 來擷取 CPU 採樣資料/設定檔。
為了捕獲數據,安裝 Windows 效能工具包,這是視窗軟體開發工具包。
Windows 10 WPT 可在 Windows 8/Server 2012、Windows 8.1/Server 2012R2 和 Windows 10/Server 2016 上使用。SDK/WPT(版本 15086)。
現在運行WPRUI.exe
,選擇First Level
,在資源下選擇CPU使用率並點擊開始。
現在捕獲 1 分鐘的 CPU 使用情況。 1分鐘後,點擊節省。
現在使用 Windows 效能分析器分析產生的 ETL 文件透過將圖表拖曳CPU Usage (sampled)
到analysis pane
並按圖中所示對列進行排序:
在 WPA 內部,載入調試符號並展開SYSTEM進程的Stack。在此演示中,CPU 使用率來自 nVIDIA 驅動程式。
在以下示範中,CPU 使用率來自 Realtek 網路卡驅動程式:
當您看到類似的電話時ntoskrnl.exe!維KeTrimWorkerThreadRoutine,ntoskrnl.exe!驗證者修剪內存,ntoskrnl.exe!驗證者離開關鍵區域,這表示您已啟用驅動程式驗證程式。這也會嚴重損害效能並導致系統使用率較高。禁用驅動程式驗證程式並重新啟動。
在此演示中,驅動程式iai2ce.sys
(Intel 串行 IO GPIO 控制器驅動程式)導致它:
在此範例中,CPU 使用率來自文件rtsuvc.sys
,該文件似乎是Realtek UVC webcam Driver
該演示顯示 Bitdefender 驅動程式ignis.sys
在以下範例中,CPU 使用率是由 Broadcom 網路驅動程式引起的bcmwl664.sys
當你將ntoskrnl.exe!MiZeroWorkerPages
其視為原因時,事情就變得更加棘手。這意味著核心在再次使用記憶體之前將記憶體清除的函數會導致 CPU 使用率過高:
沒有真正的方法來檢測哪個進程導致它,但我知道如果您在 Chrome 中啟用了硬體加速,Chrome 可能會導致它。因此,如果您看到此內容並使用 Chrome,請關閉 Chrome 中的硬體加速。
當你看到那些ntoskrnl.exe!RtlpGenericRandomPatternWorker, ntoskrnl.exe!RtlpTestMemoryRandomUp來電
CPU 使用情況來自內核,用於測試記憶體問題 (memtest)。此使用是透過Windows 8.1/10的空閒維護任務觸發的。您可以使用任務排程程式來停用空閒任務。
在 Windows 10 中,該任務稱為 RunFullMemoryDiagnostics,位於Microsoft > Windows > 記憶體診斷 > RunFullMemoryDiagnostic。
在這種情況下,CPU使用率似乎來自Windows Server的Data Deduplication
Feature( ):dedup.sys!DdpPostCreate
本demo中CPU佔用是由WIFI卡驅動造成的athrx.sys
如果看到此內容,請搜尋驅動程式更新。
在下面的演示中,涉及到一個citrix驅動程式:
因此,請聯絡您的 IT 人員以了解如何解決 Citrix 問題。
在此演示中,該函數usbhub.sys!UsbhPortRecycle
導致 CPU 使用率:
將 USB2.0 連接埠更改為 1.1 速度或將 USB 隨身碟連接到其他 USB 2.0 連接埠對某些使用者有幫助。
在這種情況下,少量的系統使用來自 Acronis 驅動程式tdrpm251.sys
:
在此示範中,CPU 使用率ntoskrnl.exe!KeAcquireSpinLockRaiseToDpc
和ntoskrnl.exe!KeReleaseSpinLock
.
所以司機正在使用自旋鎖非常重。停用某些裝置/驅動程序,直到找到導致該問題的裝置/驅動程式。
在這種情況下,CPU使用率是由驅動程式引起的L1C62x64.sys
這是qualcomm atheros AR8171/8175 PCI-E gigabit Ethernet
司機。因此,如果您在堆疊中看到驅動程序,請更新該驅動程式。
這裡,CPU使用率來自掃描主機檔案(netbt.sys!DelayedScanLmHostFile)
確保您的主機檔案不太大以避免這種使用。
在本例中,CPU 使用率來自SRTSP64.SYS
symantec。
將您使用的 symantec 產品更新至最新版本。
這裡,CPU使用率來自AMD GPU驅動程式(atikmdag.sys)
如果您看到此信息,請訪問 AMD 網站並獲取適用於您的 AMD 卡的最新驅動程式。
其中,驅動程式 TMXPFlt.sys 和 VsapiNt.sys 導致 CPU 使用率較高。
據我所知,這些文件是趨勢科技 AV 套件的一部分。更新該工具或將其刪除。
在此範例中,CPU 使用率來自函數ntoskrnl.exe!MmGetPageFileInformation
此函數會取得有關頁面文件的資訊。
例程描述:此例程傳回有關目前活動分頁檔案的資訊。
停用頁面文件,重新啟動並再次啟用它,看看是否可以解決問題。另外,刪除英特爾服務(例如英特爾內容保護 HECI 服務)似乎為用戶修復了它。
在這裡,您可以看到驅動程式Netwtw04.sys
(Intel Wifi 驅動程式)呼叫該函數flushCompleteAllPendingFlushRequests
,這導致 CPU 使用率很高。
由於偵錯符號已加載,因此使用 Windows 內建驅動程式。只有在這裡我們才能獲得調試符號來查看帶有函數名稱的呼叫堆疊flushCompleteAllPendingFlushRequests
。
在這裡,你應該安裝英特爾的最新驅動程式要解決這個問題。
SYSTEM 使用最複雜的情況是呼叫堆疊中的 ACPI.sys 使用:
Line #, DPC/ISR, Module, Stack, Count, Process, Weight (in view) (ms), TimeStamp (s), % Weight
6, , , | |- ACPI.sys!ACPIWorkerThread, 40246, , 39.992,941063, , 4,13
7, , , | | ACPI.sys!RestartCtxtPassive, 40246, , 39.992,941063, , 4,13
8, , , | | ACPI.sys!InsertReadyQueue, 40246, , 39.992,941063, , 4,13
9, , , | | ACPI.sys!RunContext, 40246, , 39.992,941063, , 4,13
10, , , | | ntoskrnl.exe!KeReleaseSpinLock, 40246, , 39.992,941063, , 4,13
11, , , | | ntoskrnl.exe!KiDpcInterrupt, 40246, , 39.992,941063, , 4,13
12, , , | | ntoskrnl.exe!KiDispatchInterruptContinue, 40246, , 39.992,941063, , 4,13
13, , , | | ntoskrnl.exe!KxRetireDpcList, 40246, , 39.992,941063, , 4,13
14, , , | | ntoskrnl.exe!KiRetireDpcList, 40246, , 39.992,941063, , 4,13
15, , , | | |- ntoskrnl.exe!KiExecuteAllDpcs, 40198, , 39.945,173325, , 4,13
16, , , | | | |- ACPI.sys!ACPIInterruptDispatchEventDpc, 27565, , 27.408,930428, , 2,83
17, , , | | | | |- ACPI.sys!ACPIGpeEnableDisableEvents, 24525, , 24.384,921620, , 2,52
18, , , | | | | | ACPI.sys!ACPIWriteGpeEnableRegister, 24525, , 24.384,921620, , 2,52
19, , , | | | | | |- hal.dll!HalpAcpiPmRegisterWrite, 24421, , 24.281,015516, , 2,51
20, , , | | | | | | |- hal.dll!HalpAcpiPmRegisterWritePort, 24166, , 24.027,316013, , 2,48
這非常難以調試。在一個系統內部主題,我列出了一些建議:
- 確保 CPU 不會因 CPU 風扇中的灰塵而過熱
- 更新或重新刷新(相同的)BIOS/UEFI
- 載入預設 BIOS/UEFI 設定
- 確保電池沒有損壞,從筆記型電腦中取出電池或在裝置管理員中停用電池。
- 改變跳線 在硬碟盒上如果您已將 DVD/藍光光碟機替換為 Caddy,以便在舊 HDD 旁安裝 SSD
- 禁用某些設備據該用戶建議
- 如果您使用 Intel 晶片組,請嘗試安裝英特爾快速儲存技術 (RST)替換 Windows 中的標準 AHCI 驅動程式。這也是似乎有幫助。
- 使用者謝娜 想通了,即使用Process Hacker(以管理員身分啟動)暫停 ACPI.sys 問題的線程可以為他“修復”問題。因此,如果所有其他步驟都無法解決您的問題,請嘗試他的解決方法。
在以下演示中,igdkmd64.sys
Intel HD 630 版本 .4574 的 Intel HD 驅動程式導致了這個問題:
解決辦法是更新到驅動程式版本至少為 .4590。
以下情況,SYSTEM進程佔用CPU是由驅動程式造成的stdriverx64.sys
這似乎是一個音訊串流驅動程式。因此,如果您在 WPA 中看到此內容,請更新此軟體/驅動程式。
如果您看到 SYSTEM 的呼叫堆疊中呼叫的驅動程式risdxc64.sys
導致 CPU 使用率較高,請更新理光 PCIe SDXC/MMC 主機控制器如果沒有驅動程式更新修復它,請驅動程式或在裝置管理員中停用 SD 讀卡機。
許多聯想設備似乎都內建了該 SD 讀卡機。
用戶 @stevemidgley 展示了 CPU 使用率較高的新問題Wdf01000.sys!FxSystemWorkItem::_WorkItemThunk
在這裡您可以看到驅動程式 UDE.sys 導致它。
在符號中心
我可以看到它屬於調製解調器驅動程序,並且追蹤的 PNP 數據顯示Fibocom L850-GL
(LTE 調製解調器)作為可能的設備:
解決方法是在裝置管理員中停用調變解調器和 USB 複合裝置。
使用者@法賈爾提供了以下案例:
這裡cpu使用率很小,但是如果換成查看DPC/ISR使用率
您可以看到 avgNetHub.sys 驅動程式導致大量 DPC 使用
從名稱上看,該驅動程式是AVG防毒軟體的一部分。因此,如果您在追蹤中看到此情況,請更新軟體或將其刪除。
答案2
這可能是由系統載入的錯誤驅動程式或其他模組引起的。要查看系統進程的內部,您可以使用類似的工具流程瀏覽器。
下載並運行它,然後選擇系統進程,右鍵單擊並選擇屬性:
切換到“線程”選項卡(忽略提到符號的對話框):
這將顯示哪個檔案正在使用過多的 CPU 使用率,然後您可以嘗試從中診斷它。
然而,正如其他人在評論中所說,您確實需要盡快放棄預覽版本!
答案3
關於加載調試符號以添加到的註釋magicandre1981 的優秀答案:如果在Windows效能分析器中載入符號運作正常,勾選後跡線 > 載入符號你應該在頂部看到一個進度條載入符號它旁邊顯示檔名,需要幾分鐘才能完成。您還應該在診斷控制台中看到許多如下所示的行:
SYMSRV: File: Accessibility.ni.pdb
SYMSRV: Notifies the client application that a proxy has been detected.
SYMSRV: Connecting to the Server: http://msdl.microsoft.com/download/symbols.
SYMSRV: Successfully connected to the Server.
SYMSRV: Sending the information request to the server.
SYMSRV: Successfully sent the information request to the server.
SYMSRV: Waiting for the server to respond to a request.
SYMSRV: Successfully received a response from the server.
SYMSRV: Closing the connection to the Server.
SYMSRV: Successfully closed the connection to the Server.
SYMSRV: Get File Path: /download/symbols/Accessibility.ni.pdb/7B46178957827CDAB7EE4C86EDEE1DAE1/Accessibility.ni.pdb
如果您沒有看到其中任何一個,則載入偵錯符號可能不起作用,並且您將無法正確解釋追蹤。
就我而言,最初加載調試符號不起作用。我通過以下方式修復了它這些說明:
確定您使用的是 x86 還是 x64 版本的 Windows Performance Toolkit。
這在 x86 版本的 Windows 上很容易。在 x64 版本上,您可以檢查任務管理器中的 *32 標記。如果不存在,那麼您正在運行 x64 版本。
請注意,無論體系結構如何,WPT 始終安裝到 Program Files (x86)。
dbghelp.dll
將和檔案從正確的偵錯器目錄複製symsrv.dll
到 Windows Performance Toolkit 目錄。在我的系統上,相關目錄是:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
和C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit
重新啟動 Windows 效能分析器,以便選擇正確版本的 dbghelp.dll。
答案4
回答添加者@magicandre1981是解決任何問題的關鍵。我的案例沒有在那裡列出,但我在The most complicated case of SYSTEM usage is ACPI.sys usage in the callstack:
部分描述的堆疊中找到了類似的單字。就我而言,安裝Intel Rapid Storage
驅動程式很有幫助。我沒想到會發生這種情況,因為在沒有這個驅動程式並且沒有任何 CPU 問題的情況下,所有人都工作了很長時間。我把我的堆疊放在這裡,可能有人會透過類似的關鍵字找到這個答案。
Line #, Process, Stack, Count, Weight (in view) (ms), TimeStamp (s), % Weight
3, , [Root], 45104, 45,300.439000, , 16.21
4, , ntoskrnl.exe!KiStartSystemThread, 45104, 45,300.439000, , 16.21
5, , ntoskrnl.exe!PspSystemThreadStartup, 45104, 45,300.439000, , 16.21
6, , |- ntoskrnl.exe!SMKM_STORE_MGR<SM_TRAITS>::SmCompressCtxWorkerThread, 38830, 38,997.540000, , 13.95
7, , | |- ntoskrnl.exe!SMKM_STORE_MGR<SM_TRAITS>::SmCompressCtxProcessEntry, 38708, 38,874.943400, , 13.91
8, , | | |- ntoskrnl.exe!memcpy, 33888, 34,032.390100, , 12.18
9, , | | | |- ntoskrnl.exe!memcpy<itself>, 33655, 33,795.069100, , 12.09
10, , | | | |- ntoskrnl.exe!KiDpcInterrupt, 228, 232.331300, , 0.08
11, , | | | |- ntoskrnl.exe!KiInterruptDispatchNoLockNoEtw, 4, 3.989700, , 0.00
12, , | | | |- ntoskrnl.exe!KiInterruptDispatch, 1, 1.000000, , 0.00
13, , | | |- ntoskrnl.exe!RtlCompressBuffer, 2571, 2,585.541600, , 0.93
14, , | | |- ntoskrnl.exe!SMKM_STORE_MGR<SM_TRAITS>::SmCompressCtxProcessReadyQueue, 2015, 2,022.554900, , 0.72
15, , | | |- ntoskrnl.exe!MmBuildMdlForNonPagedPool, 129, 129.294600, , 0.05
16, , | | |- ntoskrnl.exe!SMKM_STORE_MGR<SM_TRAITS>::SmCompressCtxProcessEntry<itself>, 63, 62.901700, , 0.02
17, , | | |- ntoskrnl.exe!ExAcquireSpinLockExclusive, 31, 31.208200, , 0.01
18, , | | |- ntoskrnl.exe!MetroHash64::Hash, 10, 10.033100, , 0.00
19, , | | |- ntoskrnl.exe!KiDpcInterrupt, 1, 1.019200, , 0.00
20, , | |- ntoskrnl.exe!SMKM_STORE_MGR<SM_TRAITS>::SmCompressCtxWorkerThread<itself>, 78, 78.477100, , 0.03
21, , | |- ntoskrnl.exe!ExAcquireSpinLockExclusive, 39, 39.068100, , 0.01
22, , | |- ntoskrnl.exe!KeWaitForSingleObject, 5, 5.051400, , 0.00
23, , |- ntoskrnl.exe!SMKM_STORE<SM_TRAITS>::SmStWorkerThread, 5420, 5,445.923200, , 1.95
24, , |- ntoskrnl.exe!SmKmStoreHelperWorker, 495, 496.265200, , 0.18
25, , |- ntoskrnl.exe!SMKM_STORE<SM_TRAITS>::SmStReadThread, 359, 360.710600, , 0.13
26, , n/a, 16760, 16,773.871200, , 6.00
更新:不幸的是問題又回來了。重新啟動後,PC 工作正常一段時間,但隨後相同的堆疊出現相同的 CPU 洩漏