Trên một máy tính mới cài Windows 10, người dùng phàn nàn về treo liên tục và làm việc chậm. Task Manager cho thấy khoảng 50% tài nguyên CPU được dùng bởi tiến trình System (ntoskrnl.exe). Bài này mô tả các phương pháp chẩn đoán chính của việc sử dụng CPU cao bởi các tiến trình khác nhau và cách tìm ra thành phần Windows hoặc driver hệ thống gây vấn đề.

Tình trạng tiến trình System tiêu thụ hơn nửa tài nguyên CPU không bình thường. Ntoskrnl.exe là file thực thi của kernel OS. Đây là tiến trình hệ thống cốt lõi. Kernel OS chạy driver thiết bị hệ thống, có khả năng là nguồn gốc vấn đề (không phải mọi driver đều được kiểm tra đúng bởi nhà phát triển phần cứng).
Thông thường, vấn đề rò rỉ trong code driver và sử dụng cao CPU, bộ nhớ hoặc tài nguyên đĩa xuất hiện sau khi cài phần cứng mới, phiên bản driver mới (kể cả cập nhật driver tự động, có thể tắt) hoặc sau cập nhật Windows.
Mẹo. Trong một số trường hợp, tải cao CPU và bộ nhớ có thể do tiến trình Compressed Memory.
Sử dụng Process Explorer xác định driver gây lỗi
Để hiểu driver hoặc module nào gây sử dụng CPU cao, dùng công cụ miễn phí Process Explorer. Tải về và chạy với quyền admin.
Tìm System trong danh sách tiến trình chạy, click chuột phải và mở Properties.

Chuyển tab Threads. Sắp xếp danh sách module được load bởi kernel theo tỷ lệ sử dụng CPU (cột CPU). Ở cột Start Address, tên thành phần hoặc driver gây tải cao được hiển thị (chụp màn hình dưới không phải từ hệ thống bị lỗi, trong trường hợp tôi là tiến trình ntoskrnl.exe).

Sử dụng Kernrate Viewer
Để tìm driver gây tải CPU cao, cũng có thể dùng công cụ Microsoft miễn phí kernrate.exe (Kernrate Viewer). Công cụ là một phần của WDK (Windows Device Kit). Sau khi cài WDK, tìm công cụ trong thư mục …\Tools\Other\amd64.
Chạy kernrate.exe không tham số và chờ thu thập dữ liệu (10-15 phút), sau đó dừng công cụ bằng Ctrl-C. Xem danh sách module ở mục Result for Kernel Mode.

Như bạn thấy, trong ví dụ module b57nd60x gây sử dụng CPU cao. Dùng Google hoặc công cụ Sigcheck (xem ví dụ dùng Sigcheck phát hiện file driver liên quan đến module), bạn xác định được vấn đề do driver Broadcom NetXtream Gigabit Ethernet NDIS6.0 Driver.
Phân tích dùng Windows Performance Toolkit
Bạn cũng có thể phân tích sử dụng CPU khi boot hệ thống dùng Windows Performance Toolkit (WPT). Phải cài WPT và chạy thu thập dữ liệu trong console đồ họa Windows Performance Recorder (First level triangle + CPU usage → Start).

Hoặc bắt đầu thu thập dữ liệu phân tích bằng lệnh:
xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl
Mẹo. Phương pháp này khuyến nghị dùng nếu sau boot hệ thống treo và không thể làm việc. Bài về phương pháp chẩn đoán boot Windows chậm cũng có thể hữu ích.
Lưu file và mở trong Windows Performance Analyzer (WPA). Mở rộng stack tiến trình System. Trong ví dụ này, bạn thấy driver athrx.sys (Atheros Wireless Network Adapter) gây tải CPU cao.

Vậy driver gây lỗi đã xác định. Tiếp theo làm gì?
Để giải quyết, cài phiên bản driver mới hơn (hoặc cũ hơn), hoặc hoàn toàn tắt (ngắt kết nối) phần cứng nếu vấn đề vẫn tồn tại với mọi phiên bản driver. Driver cập nhật có thể stress-test thêm bằng Driver Verifier.