Deshabilitar la lectura anticipada con hdparm o POSIX_FADV_RANDOM

Deshabilitar la lectura anticipada con hdparm o POSIX_FADV_RANDOM

Del documento del kernel de Linux, el consejo POSIX_FADV_RANDOM parece deshabilitar la lectura anticipada. Pero cuando desactivo Readhead usando (sudo hdparm -A 0 /dev/sdb) obtengo una gran degradación en el rendimiento; También noté que read(2) parece dividirse cada 512k y actúa como llamadas separadas (no estoy seguro del motivo, puede ser el sector máximo por solicitud).

Entonces, ¿qué opción realmente desactiva la lectura anticipada? ¿POSIX_FADV_RANDOM también deshabilita el almacenamiento en caché del sistema operativo, o debo agregar un POSIX_FADV_DONTNEED.

Respuesta1

POSIX_FADV_RANDOMdeshabilita la lectura anticipada realizada por el controlador del sistema de archivos del kernel. Aconseja a la capa del sistema de archivos que no lea más de lo solicitado. La lectura anticipada se realiza a nivel de archivo: la capa del sistema de archivos puede recuperar datos adicionales del mismo archivo, pero no lo hará (muchos) si especifica POSIX_FADV_RANDOM.

hdparm -A 0lectura anticipada deshabilitada realizada por el propio disco. Le informa al disco que cuando lee un sector, no debe almacenar los siguientes sectores en su caché interna.

Ambos desactivan la lectura anticipada, pero en una capa diferente del sistema.

POSIX_FADV_RANDOMsólo desactiva la captación previa. Configure una región POSIX_FADV_DONTNEEDsi no desea que se almacene en caché (o desea que se elimine de la caché).

información relacionada