Kỹ sư tạo ra Task Manager tiết lộ: Chỉ số CPU thực chất là một 'cáo phó' cho quá khứ
Dave Plummer, cha đẻ của Task Manager gốc, giải thích rằng chỉ số phần trăm CPU mà chúng ta thấy không phản ánh thời điểm thực mà là dữ liệu của quá khứ gần. Mặc dù cơ chế đo lường dựa trên thời gian hoạt động vẫn chính xác về mặt kỹ thuật, sự phức tạp của phần cứng hiện đại với tính năng thay đổi xung nhịp đã khiến con số này trở nên khó hiểu hơn đối với người dùng.

Windows luôn sở hữu một cổng thông tin đặc biệt để nhìn lại quá khứ gần: thanh đo mức sử dụng CPU trong Trình quản lý tác vụ (Task Manager).
Giao diện Task Manager trong Windows XP
"Con số CPU trong Task Manager thực chất là một cáo phó nhỏ di động cho quá khứ ngay lập tức," Dave Plummer, cựu kỹ sư của Microsoft và người viết phiên bản gốc của Task Manager, giải thích. "Nó không phản ánh những gì đang diễn ra ngay khoảnh khắc mắt bạn nhìn vào hàng số đó."
Plummer là người đã xây dựng phiên bản Task Manager đầu tiên, khi đó nó còn là một công cụ gọn gàng và chuyên dụng để tiêu diệt tiến trình, thay vì công cụ đồ sộ và thân thiện như ngày nay. Ông đã từng dẫn dắt người xem xem qua mã nguồn, thừa nhận rằng ông từng để lại số điện thoại trong các bình luận khi theo đuổi một lỗi lạ liên quan đến cách báo cáo số CPU.
Không có giá trị phép thuật nào cả
Vậy Task Manager báo cáo phần trăm CPU như thế nào? Câu trả lời khá phức tạp. Windows không có một giá trị sử dụng CPU phép thuật nào đang chờ để được đọc. Thay vào đó, Task Manager của Plummer hoạt động dựa trên bộ đếm thời gian (timer). Mỗi lần bộ đếm kích hoạt, mã sẽ yêu cầu nhân hệ điều hành (kernel) cung cấp thời gian thực thi tích lũy và so sánh nó với mẫu dữ liệu trước đó.
"Đối với một tiến trình riêng lẻ, phép toán cơ bản là thời gian CPU tích lũy hiện tại trừ đi thời gian CPU tích lũy trước đó. Điều đó cho bạn biết bao nhiêu CPU đã được tiêu thụ bởi tiến trình đó trong khoảng thời gian giữa các mẫu," ông nói.
"Phần trăm trên mỗi tiến trình chỉ là delta của tiến trình đó chia cho tổng delta."
Plummer đùa rằng nếu công thức này trông giống như thứ bạn viết khi bị nhốt trong văn phòng quá lâu với một cuốn sách của Petzold và nhiều cà phê, thì đó chính xác là sự thật. "Petzold" ở đây ám chỉ các cuốn sách lập trình kinh điển của Charles Petzold, vốn là người bạn đồng hành không thể thiếu của các lập trình viên Windows trong thập niên 90 và đầu những năm 2000.
Sự phức tạp của phần cứng hiện đại
Mặc dù giải pháp này rất tinh tế, nhưng nó có những nếp nhăn. Các điểm bất thường thỉnh thoảng trong báo cáo của nhân Windows có thể khiến tổng phần trăm không bằng 100, dẫn đến việc Plummer phải thêm nhiều câu kiểm tra (asserts) vào mã - và một yêu cầu liên hệ trực tiếp với ông nếu mức sử dụng CPU vượt quá con số đó.
Và sau đó là vấn đề của phần cứng hiện đại. Plummer cho biết: "Ngày xưa, kế toán thời gian của bộ lập lịch (scheduler) và thông lượng thực tế của bộ xử lý được liên kết chặt chẽ hơn nhiều vì xung nhịp CPU tương đối tĩnh. Tuy nhiên, trên các CPU hiện đại, phần cứng liên tục thay đổi số."
Một nhân (core) chủ động rảnh rỗi có thể bị giảm xung nhịp, đỗ (parked) hoặc chuyển sang trạng thái ngủ để tiết kiệm điện năng, và ngay lập tức khi công việc thực sự xuất hiện, nó có thể nhảy lên tần số cao hơn nhiều hoặc thậm chí vượt quá xung nhịp danh nghĩa nhờ tính năng Turbo.
Vì kế toán của Task Manager về cơ bản dựa trên thời gian, khối lượng công việc hoàn thành trong bất kỳ khoảng thời gian nào sẽ thay đổi rất nhiều tùy thuộc vào tần số mà mạch silicon đang hoạt động.
"Thang đo không sai, nhưng nó đang đo lường sự chiếm dụng (occupancy) hơn là năng suất (productivity). Nó được xây dựng cho một thời đại đơn giản hơn, trước khi việc chia tỷ lệ xung nhịp và tiết lưu (throttling) CPU trở thành tiêu chuẩn."
"Khi các con số [ngày nay] có vẻ hơi trơn trượt, không phải vì công cụ bị hỏng mà là vì phần cứng không còn đủ đơn giản để một phần trăm duy nhất có thể kể cho bạn nghe toàn bộ câu chuyện."
Plummer chia sẻ động lực chính của ông là phải tính toán cho mọi chu kỳ, đảm bảo mỗi chu kỳ được quy cho đúng "trung tâm chi phí" và sau đó xác định xem bao nhiêu công việc thực tế đã diễn ra trong cửa sổ thời gian đó. Điều đó dường như khá chính xác, và quan trọng hơn, nó "cảm thấy" đúng về mặt những gì máy móc đang làm.
Tuy nhiên, ông không thể bình luận về cách phiên bản Task Manager hiện tại thực hiện thủ thuật này, nói với chúng tôi: "Tôi biết cách tôi sẽ làm điều đó, nhưng tôi ghét phải giả định!"
Bài viết liên quan

Phần mềm
Từ Cuộc Chiến Bên Trong CopperheadOS Đến Sự Trỗi Dậy Của GrapheneOS: Huyền Thoại Bảo Mật Và Những Kẻ Thù Không Đội Trời Chung
21 tháng 4, 2026

Phần mềm
Thiết kế lại quy trình trích xuất bảng từ PDF ngân hàng: Một cách tiếp cận đa tầng với Java
21 tháng 4, 2026

Phần mềm
Adaptavist Group bị tấn công, nhóm ransomware khẳng định đánh cắp lượng dữ liệu khổng lồ
21 tháng 4, 2026
