Hệ thống 22/09/2026 7 phút

Load average thực sự nghĩa là gì: ba số 1/5/15 phút, và vì sao load cao không phải lúc nào cũng là CPU

Ai cũng thấy 'load average: 3.54, 1.34, 0.49' mà ít người đọc đúng. Nó không phải %CPU — mà là số tiến trình trung bình đang chạy HOẶC chờ I/O. Bài này chạy thật: 4 tiến trình CPU-bound làm load 1-phút leo từ 0.11 lên ~4; rồi 6 tiến trình dd kẹt ở D-state (chờ đĩa, gần 0% CPU) vẫn đẩy load lên — chứng minh load khác CPU. Và cách so load với số core để biết máy có quá tải không.

Hệ thống 22/09/2026 6 phút

Latency và percentile p99: vì sao "trung bình 0.1ms" vẫn có khách phải chờ 6ms

Báo cáo 'latency trung bình 0.133ms' nghe tuyệt — nhưng nó nói dối về trải nghiệm thật. Bài này đo thật 100.000 thao tác: p50 chỉ 0.003ms, mà p99 lên tới 6.121ms — mean giấu đuôi 46 lần, và 98% request thực ra nhanh hơn cả con số trung bình. Cách tính p50/p95/p99 bằng sort + nearest-rank, và vì sao SLO phải dùng percentile chứ không phải mean.

Hệ thống 22/09/2026 7 phút

Profiling CPU: tìm đúng hàm nóng (và đúng dòng) thay vì tối ưu theo cảm giác

Bạn đoán hàm A chậm, tối ưu cả ngày, hóa ra thủ phạm là hàm B. Profiler chấm dứt việc đoán mò: nó lấy mẫu stack định kỳ và chỉ ra hàm nào thực sự ngốn CPU bằng số. Bài này thử perf thật (bị container chặn — báo trung thực) rồi dùng Go pprof: hàm nóng chiếm 75.79% CPU, và pprof -list chỉ đúng dòng 17 ngốn 710ms. Bài cuối loạt Debug, kèm tổng kết 12 phần.

Linux 01/09/2026 8 phút

Một hệ thống nghẽn đĩa hiện CPU rảnh 3% — nhìn nhanh tưởng CPU đang bận, thực ra 94% thời gian đó nó ngồi không chờ đĩa trả lời

Mở đầu sê-ri 50 phần về hiệu năng Linux. Bốn kiểu nghẽn — CPU, đĩa, bộ nhớ, chuyển ngữ cảnh — trông giống nhau nếu chỉ nhìn một con số, và cái này giả trang thành cái kia. Đo thật cả bốn: nghẽn đĩa cho CPU rảnh 3% (nhưng 94% là chờ), nghẽn khoá đẩy chuyển ngữ cảnh lên 964.760 lần/giây. Một quy trình sáu bước đọc vmstat để không mua nhầm CPU cho một máy nghẽn đĩa.

Linux 01/09/2026 8 phút

Tải đĩa thuần đẩy load average từ 8,8 lên 12,88 trong khi CPU người dùng chỉ 1% — và load vẫn hiện 12,65 khi máy đã rảnh hoàn toàn

Ba con số uptime trả về gần như ai cũng đọc sai theo hai kiểu. Thứ nhất: Linux đếm cả tiến trình đợi đĩa, nên load cao không có nghĩa CPU bận — đo được load tăng 4 đơn vị trong khi CPU rảnh 45%. Thứ hai: chúng là trung bình trượt 1/5/15 phút, nói vừa rồi thế nào chứ không nói bây giờ — load còn 12,65 trên máy đã tắt sạch tải. Load để thấy xu hướng, không để chẩn đoán tức thời.

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.