Ядро не буферизует чтения и записи так, как вы думаете ... Оно поддерживает «кеш страниц», в котором хранятся страницы с диска. Вы не можете манипулировать его размером (ну, не напрямую, во всяком случае); ядро всегда будет использовать все доступной свободной памяти для кэша страниц.
Вам нужно объяснить, что вы действительно пытаетесь сделать. Если вам нужен контроль над тем, сколько данных ядро предварительно извлекает с диска, попробуйте выполнить поиск «linux readahead». (Подсказка: blockdev --setra XXX
)
Если вы хотите получить контроль над тем, как долго ядро будет хранить грязные страницы, прежде чем записывать их на диск, попробуйте выполнить поиск "linux dirty_ratio".
Определенное приложение может также полностью обойти кеш страниц с помощью O_DIRECT
, и оно может осуществлять некоторый контроль над ним, используя fsync
, sync_file_range
, posix_fadvise
и posix_madvise
. (O_DIRECT
и sync_file_range
относятся к Linux; остальные относятся к POSIX.)
Вы сможете задать лучший вопрос, если сначала ознакомитесь с подсистемой виртуальных машин Linux, особенно с кешем страниц.