fix linux readahead

This commit is contained in:
lizzie 2026-04-14 20:42:06 +00:00
parent d9d7c81e9d
commit 02af016c4d

View file

@ -10,6 +10,7 @@
#include "common/bit_util.h"
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs_types.h"
#ifdef ANDROID
#include "common/fs/fs_android.h"
#endif
@ -301,7 +302,13 @@ static int PlatformMapReadOnly(IOFile& io, const char* path) {
close(io.mmap_fd);
io.mmap_fd = -1;
} else {
posix_madvise(io.mmap_base, io.mmap_size, POSIX_MADV_WILLNEED);
// For small files it is acceptable to use a full readahead
// See https://github.com/torvalds/linux/blob/e80d033851b3bc94c3d254ac66660ddd0a49d72c/include/linux/pagemap.h#L1392
if (st.st_size >= 256_MiB) {
posix_madvise(io.mmap_base, io.mmap_size, POSIX_MADV_RANDOM);
} else {
posix_madvise(io.mmap_base, io.mmap_size, POSIX_MADV_SEQUENTIAL);
}
}
}
return io.mmap_fd;