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
Backend 01/09/2026 7 phút

Một tập 512 số nguyên trong Redis tốn 2,6 byte mỗi số — thêm đúng một phần tử nữa là nhảy lên 48,2 byte, gấp 18,6 lần

Đo bốn kiểu tập hợp của Redis và tìm ra ba vách đá bộ nhớ rơi ở đúng một phần tử. Gom nhiều giá trị vào một Hash/Set rẻ hơn nhiều khoá riêng 2,3–2,8 lần vì phụ trội 64 byte mỗi khoá biến mất. Nhưng vượt ngưỡng listpack/intset là bộ nhớ mỗi phần tử nhảy 2,3–18,6 lần chỉ vì một phần tử. Và LINDEX có hình chữ V: chậm nhất ở giữa list, không phải ở cuối.

Linux 01/09/2026 10 phút

Đổi trình biên dịch, không đổi một ký tự mã nguồn, băng thông bộ nhớ đo được nhảy 1,68 lần — vì 'băng thông của máy này' không tồn tại

Bài chốt sê-ri Linux: mười con số nền của một máy đủ để ước lượng gần như mọi quyết định hiệu năng, một danh sách kiểm rút từ chính những lần tôi đo sai, và một phát hiện — chạy cùng một file nguồn bằng gcc rồi clang, con số đọc bộ nhớ tuần tự đi mất một phần ba, chứng minh rằng băng thông là của một *cặp* (máy + đoạn mã đọc nó), không phải của riêng cái máy.

DevOps 01/09/2026 7 phút

Sáu mươi phép đo Kubernetes gom thành một danh sách kiểm trước khi lên production — cùng ba lần tôi công bố sai rồi tự phát hiện lúc chạy lại

Sáu mươi phần, mỗi phần một phép đo trên cụm dựng bằng kind rồi xoá đi, gom lại thành thứ dùng được: mười con số đáng nhớ nhất, ba dạng lỗi lặp lại nhiều nhất, một danh sách kiểm trước khi lên chạy thật mà mỗi dòng dẫn về một phép đo cụ thể, và ba lần tôi viết sai rồi phải sửa. Bài học còn lại không phải sáu mươi mẹo, mà một thói quen: đo trước khi tin, kể cả tài liệu chính thức.

Linux 01/09/2026 9 phút

Một lần tra tên mất 24 giây trong pod Kubernetes — thêm đúng một dấu chấm ở cuối tên, còn 1,2 mili giây; hai mươi nghìn lần nhanh hơn chỉ bằng một ký tự

getaddrinfo trên IP mất 2,2 µs; trên một tên không tồn tại mất 1.046 lần thế. Rồi cấu hình ndots:5 mặc định của Kubernetes biến một lần tra thành sáu câu hỏi, và trong môi trường tôi đo, năm câu đầu im lặng chờ hết hạn — cộng lại 24 giây. Dấu chấm cuối bảo trình phân giải 'đây là tên tuyệt đối, đừng đoán'. Cộng thêm cái bẫy JVM cache DNS vĩnh viễn.

Linux 01/09/2026 9 phút

Bốn loại không gian tên cộng lại chỉ tốn 93 µs — riêng cái mạng ngốn 540 µs, gấp gần sáu lần cả bốn cái kia; và tháo nó ra còn lâu hơn dựng nó lên

Không phải mọi vách ngăn trong container đều đắt ngang nhau. Đổi tên máy, đánh số lại bảng tiến trình gần như miễn phí; nhưng dựng riêng một ngăn xếp mạng — bảng định tuyến, netfilter, veth — tốn 540 µs mỗi lần tạo và 1,7 lần thông lượng mỗi gói tin. Nếu tác vụ không cần cách ly mạng, đừng trả cái giá đó.

Linux 01/09/2026 9 phút

Mở kết nối mới rồi hỏi một câu tốn đúng hai vòng khứ hồi — hỏi cùng câu đó trên kết nối có sẵn tốn một; giữa hai châu lục, khác biệt là 21 mili giây mỗi lần gọi

'Dùng bể kết nối' là lời khuyên ai cũng biết — bài này đo nó đáng bao nhiêu, bằng đơn vị duy nhất mang đi được: vòng khứ hồi. Đo thật cho ba con số rơi đúng vào bội số nguyên của RTT. Trên máy local nó chỉ tiết kiệm một phần tư mili giây, nên không đánh giá nổi ở đó; trong sản phẩm khác vùng, một dịch vụ gọi 20 lượt xuống DB cộng thêm 420 ms chỉ vì không tái dùng kết nối.