Supongo que la mejor respuesta es que depende. En mi experiencia, hay muchos factores que intervienen en la elección de los algoritmos de almacenamiento en caché.
Factores a considerar
- Equilibrio de lectura / escritura. (¿Qué porcentaje de accesos son lecturas frente a escrituras)?
- Cantidad de caché.
- Tipo de medio detrás de la caché. (¿Son unidades SATA lentas o unidades SSD rápidas?)
- Hits vs Misses. (¿Con qué frecuencia se reescriben o releen las cosas?)
- Tamaño de acceso promedio (para elegir el tamaño de la página)
- ¿Qué tan caras son las lecturas y las escrituras?
Una vez que tenga en cuenta todos los diferentes factores, deberá encontrar un algoritmo de caché que lo maneje mejor. Por ejemplo, digamos que tiene una aplicación donde hay muchas escrituras, algunas reescrituras, lecturas de datos escritos recientemente y algún tipo de medio de giro. En este caso, querría una especie de algoritmo de caché híbrido. Para manejar los datos de escritura, es posible que desee algo como Wise order of Writes (WOW) y un algoritmo LRU para los datos que se han leído del disco. La razón de esto es que los accesos al disco son muy caros y el algoritmo WOW hará que sea más eficiente escribir los datos y la LRU mantendrá los datos a los que se accede con frecuencia siempre en caché.
Supongamos que tiene discos SSD, que tienen un tiempo de acceso muy rápido, es posible que desee orientar su elección hacia el algoritmo LRU, ya que los accesos a los discos son relativamente económicos.
En realidad, lo que quiero decir es que no hay una "mejor" respuesta. La mejor respuesta es conocer los factores que se aplican a usted y elegir el algoritmo que mejor los maneje.
Cómo encontrar el algoritmo para ti
Perfila tu sistema. Esto generalmente implica agregar código para mantener las estadísticas de los accesos a la memoria. Al perfilar puede ver qué factores son los más importantes para usted.
En el pasado, he agregado código para rastrear todos los accesos a la memoria durante un período de tiempo. Luego más tarde busco patrones. Busco re-lecturas, re-escrituras, acceso secuencial, acceso aleatorio, etc.
Una vez que haya identificado las cosas de importancia, debe observar todos los diferentes tipos de algoritmos de almacenamiento en caché para ver qué manejan qué cosas son las mejores.