2012-05-08 11 views
7

¿Alguien me puede explicar cuál es la diferencia entre FSDirectory y MMapDirectory? Quiero calentar mi caché. Leí que esto podría ser útil, pero no pude encontrar cómo esto será útil para calentar el caché. Explícame si tienes alguna idea. Incluso los indicadores son bienvenidos.diferencia entre FSDirectory y MMap Directory?

La documentación de Lucene dice que MMap usa la memoria virtual para acelerar la búsqueda de los índices.

¿Cómo se logra el speedp y lo que sucede si mis índices son grandes, así que no van a caber en mi memoria virtual>

+0

Obtuve la primera parte :) Dado que los índices están disponibles en la memoria virtual, la búsqueda será más rápida. Ayúdame a descubrir la segunda parte de la pregunta – ganesshkumar

Respuesta

7

MMapDirectory es una de las subclases concretas de la clase abstracta FSDirectory . Utiliza archivos mapeados en memoria para acceder a la información en el índice.

Las otras opciones son SimpleFSDirectory y NIOFSDirectory, que usan métodos diferentes. Debería echarle un vistazo al documentation for FSDirectory para una breve explicación de los tres. Como verá allí, FSDirectory.open(File) intenta elegir la mejor implementación para su entorno.

En mi propia experiencia, no he notado ninguna diferencia significativa en el rendimiento entre NIOFSDirectory y MMapFSDirectory, pero debe hacer algunas pruebas de rendimiento con sus propios datos y configuración de hardware.

En caso de que termine usando MMapFSDirectory, la memoria virtual y el tamaño del índice solo podrían ser un problema en una máquina de 32 bits (unless your indexes are larger than 2^48 bit = 32TB).

+0

que he hecho con este proyecto y el impacto de MMapDirectory es notable. Notará la diferencia si el tamaño del archivo es enorme. Estoy cargando un archivo que no cabe en la memoria. – ganesshkumar

1

Si sus índices no caben en la memoria virtual, es probable que sea mejor utilizar FSDirectory. El problema es que usar MMapDirectory cuando no cabe en la memoria virtual es equivalente a usar FSDirectory y usar el algoritmo de almacenamiento en caché del sistema operativo (es probable que el algoritmo de almacenamiento en caché del sistema operativo sea mejor de lo que se puede codificar manualmente). ('Equivalente' porque en ambos casos, solo partes del índice estarán en la memoria física a la vez.)

Pero como dice 'martin' anteriormente, debe realizar algunas pruebas de rendimiento propias.