Отключение упреждающего чтения с помощью hdparm или POSIX_FADV_RANDOM

Отключение упреждающего чтения с помощью hdparm или POSIX_FADV_RANDOM

В документации ядра Linux совет POSIX_FADV_RANDOM, похоже, отключает readahead. Но когда я отключаю Readhead с помощью (sudo hdparm -A 0 /dev/sdb), я получаю огромное падение производительности; также заметил, что read(2) разделяется каждые 512k и действует как отдельные вызовы (не уверен в причине, возможно, дело в максимальном секторе на запрос).

Так какая опция действительно отключает опережающее чтение? Отключает ли POSIX_FADV_RANDOM также кэширование ОС, или мне следует добавить POSIX_FADV_DONTNEED.

решение1

POSIX_FADV_RANDOMотключает опережающее чтение, выполняемое драйвером файловой системы ядра. Он советует слою файловой системы не читать больше, чем было запрошено. Опережающее чтение выполняется на уровне файла: слой файловой системы может извлекать дополнительные данные из того же файла, но он не будет делать этого (много), если вы укажете POSIX_FADV_RANDOM.

hdparm -A 0отключил опережающее чтение, выполняемое самим диском. Он сообщает диску, что при чтении сектора он не должен сохранять следующие несколько секторов в своем внутреннем кэше.

Оба отключают опережающее чтение, но на другом уровне системы.

POSIX_FADV_RANDOMотключает только предварительную выборку. Установите регион, POSIX_FADV_DONTNEEDесли вы не хотите, чтобы он был кэширован (или хотите, чтобы он был удален из кэша).

Связанный контент