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

Thêm luồng CPU-bound làm chậm gấp 4 — 1843 lần bị tước CPU dù không luồng nào block

Tưởng context switch chỉ xảy ra khi luồng block, và sched_yield giúp chạy nhanh hơn? Tôi đo: workload CPU thuần không hề block vẫn bị tước CPU cưỡng bức (nivcsw 0→1843 khi luồng vượt số lõi), thời gian tăng gấp 2–4 lần — còn yield một mình chỉ là một syscall 150ns vô ích.

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

Syscall đắt hơn gọi hàm 139 lần — mà getpid gần như không làm gì

Tưởng gọi một lời gọi hệ thống cũng như gọi một hàm thường? Tôi đo thử: vượt ranh giới user→kernel tốn 103ns so với hàm user 0,74ns (139 lần) — và vDSO không vượt ranh giới chỉ 13ns, chứng tỏ chính cú vượt ranh giới là chi phí, không phải việc nhân làm. Nên giảm chi phí = vượt ít lần hơn.