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.