Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows 10

CPU สูงโดย Process Ntoskrnl.exe (System) ใน Windows 10

บนคอมพิวเตอร์ที่เพิ่งติดตั้ง Windows 10 ใหม่ ผู้ใช้ร้องเรียนว่าค้างตลอดและทำงานช้า Task Manager แสดงว่า CPU ประมาณ 50% ถูกใช้โดย Process System (ntoskrnl.exe) บทความนี้จะอธิบายวิธีวินิจฉัย High CPU utilization โดย Process ต่างๆ และหา Windows Component หรือ System Driver ที่เป็นสาเหตุ

CPU สูงโดย Process Ntoskrnl.exe (System) ใน Windows 10

สถานการณ์ที่ System process ใช้ CPU มากกว่าครึ่งหนึ่งของทรัพยากรระบบ ไม่ใช่เรื่องปกติ Ntoskrnl.exe คือ Executable ของ OS Kernel เป็น Core system process OS Kernel รัน System drivers ของอุปกรณ์ ซึ่งน่าจะเป็นแหล่งปัญหา (ไม่ได้ Driver ทุกตัวถูกทดสอบอย่างเหมาะสมโดยผู้ผลิตฮาร์ดแวร์)

โดยทั่วไป ปัญหา Memory leak ใน Code ของ Driver และการใช้ CPU, Memory หรือ Disk resources สูง จะปรากฏหลังติดตั้งฮาร์ดแวร์ใหม่, Driver version ใหม่ (รวมถึง Automatic driver updates ซึ่งสามารถปิดได้) หรือหลัง Windows Update

เคล็ดลับ ในบางกรณี High CPU และ Memory load อาจเกิดจาก Process ชื่อ Compressed Memory

ใช้ Process Explorer ระบุ Driver ที่กิน CPU

ใช้ Tool ฟรี Process Explorer ดาวน์โหลดและรันเป็น Administrator

หา System ในรายการ Process คลิกขวา → Properties

ไปแท็บ Threads เรียงลำดับ Modules ที่โหลดโดย Kernel ตามอัตราการใช้ CPU (คอลัมน์ CPU) ในคอลัมน์ Start Address จะแสดงชื่อ Component หรือ Driver ที่ก่อให้เกิด Load สูง (Screenshot ด้านล่างไม่ได้มาจากระบบที่มีปัญหา ในกรณีของผมคือ Process ntoskrnl.exe)

ใช้ Kernrate.exe (Kernrate Viewer)

ยังสามารถใช้ Tool ฟรีของ Microsoft kernrate.exe (Kernrate Viewer) Tool นี้เป็นส่วนหนึ่งของ WDK (Windows Device Kit) หลังติดตั้ง WDK จะหา Tool ได้ที่โฟลเดอร์ ...\Tools\Other\amd64

รัน kernrate.exe โดยไม่มีพารามิเตอร์ รอรวบรวมข้อมูล 10-15 นาที แล้วหยุด Tool ด้วย Ctrl-C ดูรายการ Modules ในส่วน Result for Kernel Mode

ในตัวอย่าง Module b57nd60x ก่อให้เกิด High CPU usage ใช้ Google หรือ Tool Sigcheck (ดูตัวอย่างการใช้ Sigcheck หา Driver files ที่เกี่ยวข้องกับ Module) จะพบว่าปัญหาเกิดจาก Broadcom NetXtream Gigabit Ethernet NDIS6.0 Driver

ใช้ Windows Performance Toolkit (WPT) วิเคราะห์ CPU ระหว่างบูท

สามารถวิเคราะห์ CPU usage ระหว่าง System Boot ด้วย Windows Performance Toolkit (WPT) ติดตั้ง WPT และรัน Data collection ใน Windows Performance Recorder (First level triangle + CPU usage → Start) แบบกราฟิก

หรือเริ่มเก็บข้อมูลด้วยคำสั่ง:

xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl

เคล็ดลับ วิธีนี้แนะนำถ้าหลังบูทระบบค้างและทำงานไม่ได้เลย บทความเกี่ยวกับวิธีวินิจฉัย Slow Windows boot อาจมีประโยชน์ด้วย

บันทึกไฟล์และเปิดใน Windows Performance Analyzer (WPA) ขยาย System process stack ในตัวอย่างนี้เห็นว่า Driver athrx.sys (Atheros Wireless Network Adapter) ก่อให้เกิด High CPU load

พบ Driver ที่เป็นปัญหาแล้ว ต่อไปทำอย่างไร?

เพื่อแก้ปัญหา: ติดตั้ง Driver เวอร์ชันใหม่กว่า (หรือเก่ากว่า) หรือ Disable (ถอด) ฮาร์ดแวร์ออก หากปัญหายังคงอยู่กับ Driver ทุกเวอร์ชัน Driver ที่อัปเดตแล้วสามารถ Stress-test เพิ่มเติมด้วย Driver Verifier ได้