Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2300 bài viết · Website
Giải thuật 03/09/2026 9 phút

SCHED_FIFO không làm code nhanh hơn — nó cắt jitter 3ms xuống 12µs

Tưởng đặt luồng vào lịch thời gian thực thì nó chạy nhanh hơn? Tôi đo: SCHED_FIFO không tăng tốc CPU một chút nào — nó cắt jitter độ trễ đánh thức dưới tải từ 3ms xuống 12µs (256 lần). Đổi lại, một luồng FIFO không block đói sạch mọi luồng thường, có thể treo cả máy.

Giải thuật 03/09/2026 8 phút

Đọc /proc trông như đọc file, nhưng đắt gấp 13 lần một syscall — đừng poll nó liên tục

Tưởng /proc rẻ như đọc một biến nên poll thoải mái? Tôi đo: mỗi lần đọc /proc/self/stat tốn 1342ns — 13 lần một syscall, hàng nghìn lần một đọc biến — vì /proc là filesystem ảo, mỗi lần đọc là 3 syscall cộng nhân sinh text tươi, không hề được cache, rồi bạn còn phải parse.

Giải thuật 03/09/2026 8 phút

Pipe đạt 9 GB/s — nhưng ghi từng byte chỉ 6 MB/s, và khối 64KB lại CHẬM hơn 4KB

Tưởng pipe chậm, và khối càng to throughput càng cao? Tôi đo: pipe đạt 9,17 GB/s với khối 4KB nhưng ghi từng byte chỉ 6 MB/s (mỗi byte một syscall), và khối 64KB (bằng cả bộ đệm) lại chậm hơn 4KB ba lần. Độ trễ round-trip 17,7µs vì mỗi bàn giao hai bên ngủ/thức — không phải vì pipe chậm.

Giải thuật 03/09/2026 8 phút

Đo thời lượng bằng đồng hồ tường là bug chực chờ — dùng nhầm clock, kết quả ra số âm

Tưởng lấy giờ luôn cùng giá, và clock nào cũng đo thời lượng được? Tôi đo: chi phí chênh ~10 lần (COARSE 3ns thô, vDSO 13ns mịn, CPU-time 140ns phải vào nhân), và CLOCK_REALTIME có thể nhảy (NTP chỉnh giờ) cho ra thời lượng âm — đo khoảng thời gian phải dùng CLOCK_MONOTONIC.