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

Khi 'perf' báo Operation not permitted mà vẫn đo được branch-miss

Người ta bảo muốn biết cache-miss hay branch-miss thật thì phải có perf và bộ đếm phần cứng. Máy tôi đo thì perf còn chẳng chạy — VM khóa luôn PMU. Vậy mà chỉ với một cái đồng hồ và một thí nghiệm đổi đúng một biến, branch-miss vẫn hiện ra rõ mồn một, chậm gần 7 lần.

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

Benchmark của bạn đang nói dối: bốn cách bạn tự lừa mình khi đo tốc độ

Viết một vòng lặp, bọc đồng hồ hai đầu, chia cho số phần tử — nghe là xong. Nhưng cùng một đoạn code, tôi đo được 0 nano-giây (nhanh vô hạn), rồi 0,57, rồi 2,62 ns, tùy vào những cái bẫy mà trình biên dịch giăng sau lưng. Chỉ một cách đo là ra con số thật.

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

Đo, đừng đoán — điều duy nhất tôi muốn bạn giữ lại

Khép lại sê-ri 45 bài đo kiến trúc máy tính. Nếu quên hết mọi con số, chỉ cần nhớ một câu: đừng tin trực giác về hiệu năng, hãy viết một phép đo và chạy nó trên chính máy mình. Vì cùng một thao tác có thể nhanh chậm khác nhau chục đến nghìn lần, và mỗi cỗ máy lại một khác.

Mạng 02/09/2026 8 phút

Gửi 1 byte, có 67 byte chạy trên dây — 98,51% là bao bì, và sách vẽ header TCP sai 12 byte

Mỗi gói TCP/IP trên Ethernet gánh khoảng 66 byte header cố định, không đổi dù ruột là 1 byte hay 1448. Với gói nhỏ, header nuốt gần hết băng thông. Đo thật từng byte bằng tcpdump — kèm sự thật header TCP không phải 20 byte như sách vẽ, và cú offload suýt giấu mất gói quan trọng nhất.

Mạng 02/09/2026 9 phút

Cùng một IP đích, đổi prefix một chữ số là nó lật từ 'hàng xóm' thành 'người xa lạ' — tôi hỏi thẳng nhân Linux

Subnet mask, chứ không phải bản thân địa chỉ, mới vẽ ra biên mạng con. Cùng một IP có thể trên-link (ARP thẳng) hay ngoài-link (qua router) tùy prefix. Đo thật bằng ip route get, kèm sự thật: nhân KHÔNG cấm gán .0 và .255 — đó chỉ là quy ước.