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

Huge page không 'luôn nhanh hơn': vùng nhỏ chỉ 1,13 lần, và mỗi page fault khựng 40µs

Tưởng bật huge page thì luôn nhanh hơn, một tinh chỉnh miễn phí? Tôi đo: nó chỉ giúp khi TLB là nút thắt — vùng 0,3MB vừa TLB chỉ nhanh 1,13 lần, phải tới 67MB vượt TLB mới thắng 1,66 lần. Và có mặt trái: mỗi page fault huge phải zero cả 2MB, khựng ~40µs — 105 lần một fault thường.

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

write() báo thành công không nghĩa dữ liệu đã trên đĩa — mất điện là mất, và test không bắt được

Tưởng write() xong là dữ liệu đã an toàn trên đĩa? Tôi đo: write() chỉ copy vào page cache (RAM) rồi trả về ngay — nhanh 7 lần so với ép lên đĩa bằng fsync, nhưng dữ liệu chưa bền, mất điện trước write-back là mất sạch. 'Đã ghi' và 'đã bền' là hai chuyện khác nhau.

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

Gom 256 ghi rồi fsync một lần: nhanh 125 lần mà vẫn bền — 'an toàn hay nhanh' là câu hỏi sai

Tưởng phải chọn giữa an toàn (fsync mỗi ghi) và nhanh (không fsync)? Tôi đo: gom 256 ghi rồi fsync một lần cho 194 nghìn ghi/giây — nhanh 125 lần fsync-mỗi-ghi — mà vẫn bền. Chi phí fsync tính theo mỗi lần gọi, không theo lượng byte, nên group commit phá thế lưỡng nan.