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
Hệ điều hành 03/09/2026 8 phút

File 0 byte mà cat ra cả trăm ký tự, và CPU của tôi mãi bằng 0: hai điều /proc dạy tôi về chữ 'self'

/proc không phải file trên đĩa — nhân sinh nội dung tại chỗ mỗi lần đọc (nên stat báo 0 byte). Tôi đọc /proc/self/stat để xem CPU mình tăng, mãi được 0/0: self là kẻ đang đọc, không phải chương trình tôi nghĩ. Bốn trạng thái R/S/D/Z và cách chẩn đoán không cần cài gì.

Hệ điều hành 03/09/2026 8 phút

nproc báo 10 lõi, container chỉ cho tôi 2: vì sao app 'chậm' giữa lúc máy chủ rảnh chán

Container thấy 10 lõi nhưng cgroup chỉ cho dùng 2: 8 luồng bận chỉ đạt 4 giây-lõi thay vì 16, bị đóng băng 20/21 chu kỳ. nproc vẫn nói dối là 10. App 'chậm' dù host rảnh là bị throttle — chẩn đoán bằng cpu.stat chứ không bằng nproc/top, và đặt thread pool theo quota cgroup.

Cơ sở dữ liệu 03/09/2026 10 phút

WHERE diem <> 7 nuốt mất 200.000 hàng: cái bẫy NULL mà mọi lập trình viên SQL đều vấp

Viết WHERE diem <> 7 để lấy mọi hàng không phải 7, đợi 990000, đo ra 790000 — 200000 hàng NULL biến mất lặng lẽ. NULL không phải giá trị, so sánh với nó ra 'unknown' và WHERE loại sạch. NOT IN với một NULL trả 0 hàng, AVG bỏ NULL, và hàng toàn NULL còn nhỏ hơn trên đĩa. Logic ba trạng thái của SQL, đo tận nơi.

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

Một hàm ba phép nhân, gcc rút thành đúng một con số nạp sẵn — nếu tôi cho nó biết đầu vào

Ai cũng biết compiler tính sẵn 2+3 thành 5. Tôi đo xem nó đi xa tới đâu: cùng một hàm ba phép nhân, khi đầu vào là hằng 100 thì gcc gấp toàn bộ thành một literal 64-bit (5 lệnh, 0 phép nhân, 0 ns); khi đầu vào từ volatile thì phải tính đủ (22 lệnh, 3 phép nhân, 0,99 ns). Ranh giới nằm ở một câu hỏi.

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

45 phần đo hệ điều hành, gói lại: thang độ trễ 36.000 lần và 4 cái bẫy trực giác

Tổng kết 45 phần đo thật hệ điều hành trong container Linux: một thang độ trễ trải ~36.000 lần (từ 0,25ns đọc RAM tuần tự tới 9µs đánh thức luồng), và bốn mẫu trực giác-sai lặp đi lặp lại — chi phí per-thao-tác, cái đắt là phải ngủ, cấp phát lười, đoán được hơn nhanh thô.