2009-08-24 22 views
6

en una caja de linux con mucha memoria (algunas funciones), necesito acceder aleatoriamente a un archivo grande lo más rápido posible.¿Se puede ejecutar 'cat' acelerando el acceso aleatorio del archivo subsiguiente en un cuadro de Linux?

Estaba pensando en hacer un cat myfile > /dev/null antes de acceder para que mis páginas de archivos vayan en la memoria de forma secuencial, por lo tanto más rápido que con un acceso aleatorio seco.

¿Tiene sentido este enfoque para usted?

Respuesta

4

Como dijeron los demás, deberá compararla en su caso particular.

Es muy posible que resulte en un aumento de rendimiento significativo sin embargo. En los medios rotativos tradicionales (es decir, un disco duro) el acceso secuencial (archivo cat>/dev/null/fadvise) es mucho más rápido que el acceso aleatorio.

4

Solo una forma de asegurarse de que vale la pena cualquier optimización (¿posiblemente prematura?): Hágalo referencia.

2

Teóricamente podría acelerar el acceso (especialmente si tiene acceso a casi todo desde el archivo), pero no apostaría a una gran diferencia.

El único enfoque realmente útil es compararlo para su caso específico.

7

Mientras se hace esto puede forzar el contenido del archivo en la memoria caché del sistema, es mejor usar posix_fadvise() (con el asesoramiento POSIX_FADV_WILLNEED) o la (bloqueo) readahead() llamada a hacer que el núcleo precache los datos que va a necesitar.

EDIT: También podría intentar usar el consejo POSIX_FADV_RANDOM desactivar readahead por completo. Hay un artículo con una explicación de uso decente aquí: Advising the Linux Kernel on File I/O

2

Si realmente quieres la velocidad, te recomiendo probar IO con memoria asignada en lugar de intentar hackear algo con cat. Por supuesto, depende del tamaño del archivo que está intentando tener acceso y el tipo de acceso que desea .. esto puede no ser posible ...

readahead es una buena llamada también ...

0

Hacer "cat" en un archivo grande puede traer los datos y sacar datos más valiosos de la caché; Esto no es lo que quieres.

Si el rendimiento es lo más importante para usted, de todos modos realizará pruebas de rendimiento (y pruebas de remojo, etc.), así que continúe haciéndolo y observe sus gráficos, figuras, etc.

Cuestiones relacionadas