Linux 01/09/2026 8 phút

malloc 512 MB xong trong 0,1 mili giây và cấp đúng 0 byte — bộ nhớ thật chỉ xuất hiện khi bạn chạm vào, và lần chạm đầu đắt gấp 90 lần lần sau

mmap 512 MB trả về tức thì với 2 lỗi trang, vì nhân chỉ ghi vào sổ 'vùng này hợp lệ'. Bộ nhớ thật đến từng trang một khi bạn chạm: lỗi trang nhẹ tốn 990 ns so với 11 ns lần sau — 90 lần, và đây là lý do tiến trình vừa khởi động luôn chậm hơn. Cộng thêm hai bất ngờ: nạp sẵn nhanh hơn nạp lười 2,5 lần, và bộ đếm lỗi trang nặng nói dối.

Linux 01/09/2026 8 phút

Hai tiến trình cho RSS giống hệt nhau — 4.105 MB — nhưng một bên tốn 526 MB thật, bên kia 4.050 MB; RSS không sai, nó trả lời một câu hỏi khác câu bạn đang hỏi

Khi cần biết một nhóm tiến trình ăn bao nhiêu RAM, RSS là con số sai — và nó sai theo cách nguy hiểm: hai thí nghiệm khác nhau đúng một dòng (con đọc vs con ghi) cho RSS y hệt trong khi bộ nhớ thật chênh 8 lần. Lý do là copy-on-write của fork, và con số cộng-lại-được là PSS. Đây là vì sao cộng RSS của các worker prefork luôn vượt xa RAM máy.

Linux 01/09/2026 8 phút

Đọc ngẫu nhiên qua bộ đệm trang nhanh gấp 15 lần đi thẳng xuống NVMe — và một máy chủ khoẻ mạnh luôn có RAM trống gần bằng 0, đó là điều đúng đắn chứ không phải triệu chứng

Bộ đệm trang là thứ làm 'available' khác 'free'. Đo thật: cùng lần đọc 4 KB ngẫu nhiên, qua bộ đệm 425.874 IOPS còn O_DIRECT chỉ 28.655 — 15 lần. Và bộ đệm ăn thêm nửa gigabyte trong khi RAM khả dụng gần như không đổi, vì trang bộ đệm sạch vứt đi lúc nào cũng được. RAM trống là RAM lãng phí. Cộng thêm một sai lầm đo lường: drop_caches không chạm tới máy chủ bên dưới.

Linux 01/09/2026 8 phút

dd báo ghi xong 512 MB sau 0,15 giây ở 3,6 GB/s — năm giây sau, toàn bộ dữ liệu vẫn nằm nguyên trong RAM và chưa một byte nào chạm đĩa

Ở chiều ghi, lời hứa 'đã xong' của nhân là lời hứa suông cho tới khi dữ liệu thật sự xuống đĩa. Đo thật: dd trả về tức thì trong khi 512 MB còn kẹt trong page cache 5–10 giây nữa — cúp điện lúc đó là mất sạch dù ứng dụng đã được báo thành công. Đây cũng là lý do đo tốc độ ghi bằng một lần ghi ngắn không fsync chỉ đo tốc độ của RAM, và luôn cho con số đẹp đến khó tin.

Linux 01/09/2026 7 phút

Cùng một lời gọi fsync, cùng một ổ đĩa: 750.000 IOPS trên RAM, 686 khi bắt nó thật sự bền — hơn một nghìn lần chênh nhau, và bạn chọn được mình đứng đâu

fsync là chỗ trả tiền cho lời hứa của write. Tôi đo nó trên bốn đích đến (tmpfs, ext4 tắt/bật rào chắn, overlay container) và thấy khoảng cách nghìn lần; rồi cho thấy một đòn bẩy trong tay ứng dụng — dồn ghi trước khi fsync — kéo thông lượng lên 79 lần. Đây là cùng cơ chế commit theo nhóm mà mọi cơ sở dữ liệu đều dùng.

Linux 01/09/2026 8 phút

Vượt giới hạn bộ nhớ đúng 17% làm giá mỗi trang nhảy từ 0,01 lên 4,82 µs — gần 500 lần, không có bậc trung gian; và cái bẫy thật của swap là nó giữ tiến trình sống thoi thóp thay vì cho chết hẳn

Có nên tắt swap không — câu này được tranh cãi nhiều hơn được đo. Đo thật: không swap thì vượt giới hạn là bị giết ngay; có swap thì tiến trình sống, health check vẫn 200, dashboard vẫn xanh, mà mỗi yêu cầu chậm 500 lần. Không cảnh báo nhị phân nào bắt được trạng thái đó. Đây là lý do Kubernetes mặc định đòi tắt swap — và vì sao vẫn nên giữ nó với swappiness thấp.