Hiệu năng Linux cho lập trình viên
Sê-ri 50 phần đo tầng hệ điều hành, giải thích vì sao nhiều kết quả ở các sê-ri trước lại như thế.
23/50 phần đã đăng
Linux
1
Bốn tài nguyên và cách nhận ra cái nào đang nghẽn
Nghẽn đĩa cho CPU rảnh 3%. Nhìn qua tưởng CPU đang bận, thực ra 94% là ngồi chờ.
01/09/2026
· 5 phút đọc
2
Đọc load average cho đúng
Tải đĩa thuần đẩy load từ 8,8 lên 12,88 trong khi CPU người dùng chỉ 1%. Và load vẫn 12,65 khi máy đã rảnh hoàn toàn.
01/09/2026
· 5 phút đọc
3
top, htop và những gì chúng không nói
Một tiến trình hiện VIRT 2 GB và RES 107 MB. Ánh xạ 2 GB, chạm vào 100 MB — và VIRT không đổi dù chạm bao nhiêu.
01/09/2026
· 6 phút đọc
4
Thời gian người dùng, hệ thống và chờ I/O
Cùng một lượng I/O, iowait đi từ 35% xuống 4% chỉ vì CPU bận. Thấp không có nghĩa là không nghẽn đĩa.
01/09/2026
· 5 phút đọc
5
Chuyển ngữ cảnh
Hai tiến trình trên cùng một nhân: 0,63 µs. Trên hai nhân khác nhau: 12,4 µs. Và luồng không rẻ hơn tiến trình.
01/09/2026
· 5 phút đọc
6
Bộ lập lịch CFS
nice không có tác dụng gì cho tới khi tôi ghim hai tiến trình vào cùng một nhân. Rồi tỉ lệ thành 98,7 trên 1,3.
01/09/2026
· 5 phút đọc
7
Độ ưu tiên và nice
SCHED_BATCH không hạ ưu tiên chút nào. SCHED_IDLE hạ mạnh gấp bốn lần nice 19. Và thời gian thực dừng đúng ở 95%.
01/09/2026
· 5 phút đọc
8
Ái lực CPU và NUMA
Nhảy giữa các nhân làm chậm hai lần với tập 1 MB, và không ảnh hưởng gì với tập 256 MB.
01/09/2026
· 5 phút đọc
9
Bộ nhớ đệm CPU
Cùng một lần truy cập RAM tốn 156 ns hoặc 5 ns, tuỳ vào việc CPU có đoán được địa chỉ tiếp theo hay không.
01/09/2026
· 6 phút đọc
10
Bộ nhớ ảo và trang
Lỗi trang nhẹ tốn 990 ns, gấp 90 lần một lần chạm bình thường. Và bộ đếm lỗi trang nặng nói dối.
01/09/2026
· 5 phút đọc
11
RSS, VSZ, PSS
Hai thí nghiệm cho RSS giống hệt nhau — 4.105 MB — trong khi bộ nhớ thật tiêu tốn chênh nhau 8 lần.
01/09/2026
· 5 phút đọc
12
Bộ đệm trang
Đọc ngẫu nhiên qua bộ đệm trang nhanh gấp 15 lần đi thẳng xuống NVMe, và RAM 'hết' không phải là vấn đề.
01/09/2026
· 5 phút đọc
13
Ghi bẩn và writeback
dd báo ghi xong sau 0,15 giây ở 3,6 GB/s. Dữ liệu vẫn nằm nguyên trong RAM thêm 5 đến 10 giây nữa.
01/09/2026
· 5 phút đọc
14
fsync tốn bao nhiêu
686 IOPS trên ext4 đủ rào chắn, 8.523 khi tắt rào chắn, 750.000 trên tmpfs. Cùng một lời gọi hệ thống.
01/09/2026
· 5 phút đọc
15
Swap: cứu hay giết
Vượt giới hạn bộ nhớ một chút làm giá mỗi trang nhảy từ 0,01 lên 4,82 µs. Gần 500 lần, không có bậc trung gian.
01/09/2026
· 6 phút đọc
16
OOM killer chọn nạn nhân
Tiến trình làm tràn giới hạn sống sót và giữ trọn 300 MB nó xin. Kẻ bị giết là một tiến trình khác.
01/09/2026
· 5 phút đọc
17
Huge page: lợi và giá
Trang lớn làm nhanh 1,8 lần với vùng 64 MB, và làm một chương trình dùng 256 byte chiếm 447 MB.
01/09/2026
· 6 phút đọc
18
malloc và phân mảnh
Chương trình giải phóng sạch 400.000 khối, và hệ điều hành vẫn thấy nó chiếm 410 MB.
01/09/2026
· 6 phút đọc
19
Đọc tuần tự so với ngẫu nhiên
Trên ổ thể rắn, hai kiểu đọc cho cùng một con số. Thứ thật sự quyết định là độ sâu hàng đợi.
01/09/2026
· 6 phút đọc
20
Bộ lập lịch I/O
Chín lần đo, ba bộ lập lịch, không cái nào tách ra khỏi nhiễu. Nút thật sự có tác dụng nằm chỗ khác.
01/09/2026
· 6 phút đọc
21
Kích thước khối và căn chỉnh
Đọc 512 byte tốn đúng bằng đọc 16 KB. Còn căn chỉnh sai với O_DIRECT thì không chậm — nó hỏng hẳn.
01/09/2026
· 6 phút đọc
22
Hệ tệp: ext4, xfs, btrfs
Bốn phép đo, bốn thứ hạng khác nhau. Và lần đo đầu tiên của tôi cho một kết luận sai hoàn toàn.
01/09/2026
· 6 phút đọc
23
Liên kết cứng, liên kết mềm, inode
ext4 báo hết ổ đĩa khi vẫn còn 71% dung lượng. Và tôi mất một vòng đo vì stat không đi theo liên kết.
01/09/2026
· 6 phút đọc
Còn 27 phần nữa sẽ lần lượt được đăng.