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
Mạng 03/09/2026 10 phút

Mạng 100 Mbps mà web vẫn ì ạch: tôi suýt viết 'băng thông không quan trọng' — rồi một file 5MB bác ngay

Trang 40 tài nguyên nhỏ: qua 10 mbit là thời gian chững ~520ms, nhưng RTT kéo nó tăng tuyến tính. Một file 5MB thì ngược hẳn — gấp đôi băng thông là gần nửa thời gian. Cái nào là nút thắt hoàn toàn tùy hình dạng tải, và một câu châm ngôn nghe rất kêu chỉ đúng một nửa. Đo thật bằng netem.

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

Tấm ảnh logo của bạn đang cõng theo 147 byte cookie mà nó chẳng bao giờ đọc tới

Mỗi cookie bạn đặt được đính vào MỌI request tới miền — kể cả ảnh và CSS không dùng nó. Một kho cookie 147 byte khiêm tốn nhân với 30 request thành ~4,4 KB tải lên mỗi lần xem trang, và một ngày đẹp trời cookie phình quá trần header có thể làm chết cả trang với đúng một người dùng. Đo thật.

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

'fork nhờ COW nên gần như miễn phí' — nửa đúng nửa nguy: fork 1GB vẫn tốn gấp 50 lần fork 1MB

fork() không sao chép dữ liệu nhờ copy-on-write (fork 1GB 1,6ms so với memcpy 490ms, nhanh hơn 310 lần), nhưng nó vẫn tốn O(bộ nhớ) vì phải sao chép bảng trang ngay: 33us ở 1MB lên 1613us ở 1GB. Và trên đường đo, gcc -O2 lặng lẽ xóa mất phép memcpy cho ra 0 giây. Đo thật.

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

Hai vòng lặp giống hệt về số phép — một cái chậm hơn 452 lần

Hai vòng lặp làm đúng cùng số phép load và cộng, cùng O(n) — đếm phép thì tưởng cùng tốc độ. Nhưng đo ra duyệt ngẫu nhiên chậm 452 lần duyệt tuần tự trên mảng 256 MB. Chi phí thật không nằm ở phép cộng mà ở truy cập bộ nhớ: cache và prefetch. Big-O mù hoàn toàn trước điều đó. Tôi đo bằng C.

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

kill -9 mà tiến trình vẫn trơ ra: chữ 'D' trong ps giải thích tất cả — và load average không nhảy như tôi tưởng

Tôi dựng từng trạng thái R/S/D/Z/T rồi đọc /proc: một dd ghi đồng bộ nằm trong D (ngủ không-ngắt-được, kill -9 cũng phải chờ) tới 72% thời gian. Rồi liếc load average tưởng nó vọt lên, nhưng nó đứng im — vì là trung bình trượt 1/5/15 phút, phản ứng chậm. Đo thật.