Đồng thời và song song: đo thật

Sê-ri 45 bài đo thật về lập trình đồng thời và song song bằng C/pthreads/atomic trong container: chi phí luồng, khóa, atomic, false sharing, scaling — mỗi bài một phép đo, một đo hớ, một sơ đồ.

7/45 phần đã đăng Giải thuật
1 Luồng và tiến trình: chi phí tạo Tưởng tạo luồng gần như miễn phí, và fork đắt gấp trăm lần thread. Đo ra cả hai đều sai: tạo+join một luồng rỗng mất ~47µs, fork+waitpid ~82µs — fork chỉ 1,8 lần thread nhờ copy-on-write. Không cái nào miễn phí. Đo thật. 03/09/2026 · 7 phút đọc 2 Đo chi phí chuyển ngữ cảnh Tưởng chuyển ngữ cảnh gần như tức thì, và giữa tiến trình đắt hơn hẳn giữa luồng vì xả TLB. Đo ra: mỗi lần chuyển ~8,5µs (không tức thì), và tiến trình bằng luồng (~1,0x) nhờ TLB gắn nhãn ASID. Đo thật. 03/09/2026 · 7 phút đọc 3 Mutex và chi phí khóa Tưởng khóa luôn đắt, hoặc mutex tranh chấp thì mỗi thao tác tốn ~8,5µs vì luồng phải ngủ. Đo ra tinh tế hơn: không tranh chấp chỉ 3,3ns (futex), tranh chấp CS ngắn ~25ns (spin), chỉ CS dài mới ngủ. Cái đắt là tranh chấp. Đo thật. 03/09/2026 · 7 phút đọc 4 Atomic và CAS Tưởng atomic miễn phí, lock-free nên không bị tranh chấp, luôn nhanh hơn mutex nhiều lần. Đo ra cả ba đều lệch: fetch_add tranh chấp vẫn chậm 10 lần vì cache nảy, và vòng CAS 8 luồng còn chậm hơn cả mutex. Đo thật. 03/09/2026 · 7 phút đọc 5 False sharing Tưởng hai biến khác nhau, mỗi luồng ghi biến riêng thì không ảnh hưởng nhau. Đo ra chúng làm nhau chậm 2 lần ở 8 luồng vì nằm chung một dòng cache — false sharing. Căn lề 64B tách dòng thì nhanh gấp đôi. Đo thật. 03/09/2026 · 7 phút đọc 6 Contention và scaling Tưởng thêm luồng luôn nhanh hơn, song song scale tuyến tính. Đo ra hai đường cong trái ngược: workload độc lập scale tới ~số lõi (4,86x), workload tranh chấp scale ÂM — 16 luồng chỉ bằng 6% một luồng. Đo thật. 03/09/2026 · 7 phút đọc 7 Spinlock vs mutex Tưởng spinlock luôn nhanh hơn mutex vì không vào nhân. Đo ra có điều kiện: ở tranh chấp thấp spinlock nhanh 1,7 lần, nhưng đông luồng hoặc quá số lõi thì spinlock đốt CPU và chậm hơn mutex 7-36 lần. Không có cái luôn thắng. Đo thật. 03/09/2026 · 7 phút đọc

Còn 38 phần nữa sẽ lần lượt được đăng.