Supongo que la mejor respuesta es que depende. En mi experiencia, hay muchos factores que intervienen en la elección de algoritmos de almacenamiento en caché.
Factores a considerar
- Balance de lectura / escritura. (¿Qué porcentaje de accesos son lecturas vs escrituras?)
- Cantidad de caché.
- Tipo de medios detrás del 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 (Esto entra en elegir el tamaño de página)
- Qué caros son las lecturas y las escrituras.
Una vez que considera todos los factores diferentes, necesita encontrar un algoritmo de caché que maneje mejor. Por ejemplo, supongamos que tiene una aplicación donde hay muchas escrituras, algunas reescrituras, lecturas de datos escritos recientemente y algún tipo de medio giratorio. En este caso, desearía una especie de algoritmo de almacenamiento en 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 datos y la LRU mantendrá los datos de acceso frecuente siempre en caché.
Supongamos que tiene discos SSD, que tienen un tiempo de acceso muy rápido, es posible que desee adaptar su elección al algoritmo LRU, ya que los accesos a disco son relativamente económicos.
Así que realmente 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
Perfile su sistema. Esto generalmente implica agregar código para mantener estadísticas para los accesos a la memoria. Al hacer un perfil puede ver qué factores son más importantes para usted.
En el pasado, agregué código para rastrear todos los accesos a la memoria durante un período de tiempo. Luego busco patrones. Busco relecturas, reescrituras, acceso secuencial, acceso aleatorio, etc.
Una vez que haya identificado las cosas importantes, debe observar todos los diferentes tipos de algoritmos de almacenamiento en caché para ver cuál maneja qué cosas son las mejores.