mmap so với read
Đọc file chạm mọi byte: mmap và read bằng nhau (~3700 MB/s). Nhưng chạm thưa 1 byte/trang, mmap nhanh gấp 5 lần (190 vs 40 GB/s) — vì read phải chép cả file vào buffer. Đo thật.
Đọc file chạm mọi byte: mmap và read bằng nhau (~3700 MB/s). Nhưng chạm thưa 1 byte/trang, mmap nhanh gấp 5 lần (190 vs 40 GB/s) — vì read phải chép cả file vào buffer. Đo thật.
Đọc lạnh từ đĩa 93ms, đọc ấm từ cache 18ms — nhanh gấp 5 lần. Nhưng đo hớ: ghi file bằng dd đã nạp sẵn nó vào cache, nên 'lần đầu' của tôi vốn đã ấm. Phải drop_caches. Đo thật.
write() không fsync đạt ~984.000 ghi/giây — nhưng đó là tốc độ cache, dữ liệu chưa bền. Thêm fsync ép xuống đĩa: sụp còn ~2.578 ghi/giây (388us mỗi lần). Gộp fsync cứu lại tốc độ. Đo thật.
Ghi 300MB không fsync: Dirty nằm nguyên 300MB suốt 30 giây rồi mới về 0 — nhân đẩy trang bẩn xuống đĩa đúng mốc dirty_expire. Cửa sổ 30 giây đó là lý do phải fsync. Đo thật bằng /proc/meminfo.
Đọc tuần tự 6701 MB/s, ngẫu nhiên 295 MB/s. Nhưng đọc tuần tự mà TẮT readahead chỉ 134 MB/s — chậm 50 lần, dù không hề seek. Tuần tự nhanh vì readahead, không phải vì SSD không seek. Đo thật.
Chạm 200MB anon chỉ sinh 102 lỗi trang, không phải 51200 — vì trang lớn THP. Và đọc file lạnh từ đĩa chỉ đếm 1 major fault dù chậm gấp 27 lần cache — vì readahead. Đo thật bằng getrusage.