Necesito configurar un sistema de almacenamiento en memoria para alrededor de 10 GB de datos, que consta de muchos archivos individuales (imágenes) de 100 kb. Habrá muchas lecturas y escrituras bastante periódicas (agregar nuevos archivos, eliminar algunos viejos).
Ahora, sé que tmpfs se comporta como un sistema de archivos normal para el que puede, por ejemplo, verificar el espacio libre / usado con df , que es una buena característica. Sin embargo, estoy interesado si ramfs ofrecería algunas ventajas con respecto a la velocidad de las operaciones de E / S. Sé que no puedo controlar el tamaño de la memoria consumida cuando uso ramfs y que mi sistema puede bloquearse si consume completamente la RAM libre, pero eso no será un problema en este escenario.
En resumen, me interesa:
- Rendimiento inteligente, que es más rápido: ¿ ramfs o tmpfs (y posiblemente por qué)?
- ¿Cuándo tmpfs usa el espacio de intercambio? ¿Mueve los datos ya guardados para intercambiar (para liberar RAM para otros programas que se ejecutan actualmente) o solo datos nuevos si en ese momento no queda RAM libre?
fuente
Respuestas:
Mi recomendación:
Mida y observe la actividad de la vida real en condiciones normales.
Es poco probable que esos archivos sean TODOS necesarios y se sirvan desde la memoria caché en todo momento. Pero hay una buena herramienta llamada vmtouch que puede decirte qué hay en el caché en un momento dado. También puede usarlo para bloquear ciertos directorios o archivos en la memoria caché. Entonces, vea cómo se ven las cosas después de un uso regular. Usar tmpfs y ramfs no es necesario para esta situación.
Ver: http://hoytech.com/vmtouch/
Creo que te sorprenderá ver que los archivos más activos probablemente ya residan en la memoria caché.
En cuanto a tmpfs versus ramfs, no hay una diferencia de rendimiento apreciable. Hay diferencias operacionales. Un caso de uso de la vida real es Oracle, donde se utilizó ramfs para permitir que Oracle gestione los datos en la RAM sin el riesgo de que se intercambien. Los datos tmpfs se pueden intercambiar bajo presión de memoria. También hay diferencias en cambiar el tamaño y modificar la configuración sobre la marcha.
fuente
No pienses demasiado en esto. Coloque suficiente RAM en su sistema y deje que el caché de disco del núcleo se encargue de las cosas por usted. De esta forma, obtiene el beneficio de las lecturas que provienen directamente de la memoria, al tiempo que puede conservar datos en el disco.
fuente
1) Referencia de rendimiento.
Usando esta página como referencia, hice una comparación de E / S entre tmpfs y ramfs, y los resultados son que es bastante idéntico en términos de rendimiento:
2) Según esta página , tmpfs usa swap y ramfs no usa swap.
fuente
Si tiene una cantidad suficiente de RAM instalada para alojar los diversos búferes del núcleo, las aplicaciones se apilan y apilan, la memoria caché normal del sistema de archivos y todos los archivos que intenta colocar
ramfs
nunca deben ser más lentos,tmpfs
ya que no habrá riesgo de E / S física por diseño. Las E / S físicas son, sin duda, la principal causa de la degradación del rendimiento en esa área.Sin embargo, si no tiene esa cantidad de RAM instalada, el uso
ramfs
podría y probablemente será más lento quetmpfs
cuando este último usa la heurística de memoria virtual para decidir qué debería estar mejor en el disco (es decir, en el área de intercambio) frente a lo que debería estar en la RAM mientras que contmpfs
, los datos de su sistema de archivos están atascados en la RAM, lo que podría ser un desperdicio de recursos.Para responder a su segunda pregunta, sí,
tmpfs
moverá los datos antiguos primero al área de intercambio, no a la última "activa".fuente