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

Tối ưu NUMA trên máy 1 node = tối ưu hư vô: đo topology trước đã

Tưởng cứ dùng numactl là tối ưu, và malloc quyết định trang RAM nằm ở đâu? Tôi đo topology thật: môi trường này 0 NUMA node nên hiệu ứng remote/local không quan sát được — và bài học lớn nhất là đo topology trước; còn trên máy nhiều node, first-touch (không phải malloc) mới quyết định.

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

printf không phải một syscall mỗi lần: đệm stdio nhanh hơn 116 lần

Tưởng mỗi putc/fprintf là một syscall, và stdout luôn được đệm như nhau? Tôi đo thử: stdio đệm trong user-space nên có đệm nhanh hơn không đệm 116 lần (10 triệu write() vs 2442); và mặc định đệm khác nhau tùy stdout là file, pipe hay terminal — thứ quyết định cả tốc độ lẫn output có mất khi crash.

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

Nén xong lại phình thêm 316 byte, và mức 9 y hệt mức 6

Cùng zlib, tỉ lệ nén nhảy từ 514 lần (dữ liệu lặp) xuống 2,66 lần (văn bản) xuống dưới 1 với byte ngẫu nhiên — 8 MB phình thành 8.000.316 byte vì không gì nén được hỗn loạn. Mức 9 cho tỉ lệ đúng bằng mức 6, còn lzma chặt hơn nhưng chậm 23 lần. Nén là thuộc tính của dữ liệu, không phải công cụ. Tôi đo.

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

mmap 'nhanh gấp 5 lần read' là do tôi đo ẩu — đo công bằng chỉ 1,7 lần (nhưng ngẫu nhiên thắng 12,8 lần)

Tưởng mmap luôn nhanh hơn read 5 lần vì tránh copy? Con số 5 lần đó là do đo không công bằng — mmap chỉ chạm 1 byte mỗi trang. Cho cả hai chạm hết dữ liệu, mmap chỉ nhanh 1,7 lần khi đọc tuần tự; nhưng ở truy cập ngẫu nhiên mmap thắng lớn 12,8 lần vì không syscall mỗi lần.

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.