Linux 01/09/2026 8 phút

Một tiến trình hiện VIRT 2 GB nhưng chỉ tốn 107 MB RAM — và cộng cột %CPU của mọi tiến trình ra 1.600% mà không phải lỗi: mỗi cột trong top trả lời một câu hỏi khác

top là công cụ ai cũng mở đầu tiên, và cột nào cũng có một cách đọc sai. VIRT là chỗ đã đặt trước, không phải RAM đang dùng; %CPU tính theo một nhân nên tổng có thể vượt 100% nhiều lần; và cả RES lẫn %MEM đều đếm trùng bộ nhớ dùng chung nên cộng lại luôn thổi phồng. Con số không trùng lặp là PSS — thứ top không hiện vì tính nó tốn kém.

Linux 01/09/2026 8 phút

Cùng một lượng đọc đĩa, iowait đi từ 35% xuống 4% chỉ vì tôi cho CPU thêm việc — chỉ số 'chờ I/O' thấp không hề chứng minh đĩa không nghẽn

Ba con số us, sy, wa có trong mọi công cụ đo Linux, và mỗi loại tải để lại một dấu vết riêng. Nhưng phép đo quan trọng nhất bài là chỗ wa nói dối: giữ nguyên tải đĩa, thêm 14 tiến trình tính toán, iowait tụt từ 35 xuống 4 trong khi số tiến trình bị chặn ở I/O không đổi một chút nào. Trên máy chủ đầy tải, wa gần như luôn thấp — đúng lúc cần nó nhất thì nó im.

Linux 01/09/2026 7 phút

nice không làm gì cả cho tới khi tôi ghim hai tiến trình vào cùng một nhân — rồi tỉ lệ nhảy thành 98,7 trên 1,3; đây là điều kiện không tài liệu nào nhấn mạnh

CFS chia CPU đều 1/N như nó hứa. Nhưng nice 19 — mức ưu tiên thấp nhất — vẫn nhận đúng một nửa CPU, cho tới khi ép cả hai tiến trình vào cùng một nhân; lúc đó tỉ lệ khớp chính xác bảng trọng số của CFS. Lý do: nice là trọng số trong MỘT hàng đợi chạy, và hai tiến trình ở hai nhân khác nhau không có gì để cân. Trên máy nhiều nhân, nice chỉ có tác dụng khi số tiến trình vượt số nhân.

Linux 01/09/2026 7 phút

SCHED_BATCH nghe như 'chạy khi rảnh' nhưng không nhường CPU một chút nào — còn SCHED_IDLE hạ ưu tiên mạnh gấp bốn lần nice 19, và thời gian thực dừng đúng ở 95%

Bốn cách đổi ưu tiên tiến trình, đo trong đúng điều kiện chúng có tác dụng (hai tiến trình cùng một nhân). Kết quả lật vài trực giác: BATCH vẫn 50/50 vì nó không đụng trọng số, IDLE xuống 0,3% vì nằm ở lớp riêng, và tiến trình thời gian thực bị nhân cố ý chặn ở 95% — tấm lưới duy nhất ngăn một vòng lặp FIFO treo cứng cả máy.

Linux 01/09/2026 8 phút

Nhảy giữa các nhân CPU làm chậm gấp đôi khi dữ liệu vừa bộ nhớ đệm — và không ảnh hưởng một chút nào khi dữ liệu vượt bộ nhớ đệm; đó là lý do 'ghim CPU cho nhanh' thường vô ích

Ghim tiến trình vào một nhân là lời khuyên tinh chỉnh quen thuộc, nhưng đo thật cho thấy nó chỉ đáng khi hai điều kiện cùng đúng. Với tập 1 MB vừa L2, nhảy nhân làm chậm 2,04 lần; với tập 256 MB thì 1,00 lần — vì lúc đó nhân nào cũng phải ra RAM. Bộ nhớ đệm L1/L2 thuộc về từng nhân, và bỏ nhân là bỏ lại toàn bộ cache đã nóng.