Comportamiento de la caché de reescritura del controlador Raid

Comportamiento de la caché de reescritura del controlador Raid

Estoy tratando de entender cómo es posible que la memoria caché de reescritura en un controlador raid pueda seguir generando beneficios mientras se escribe un enorme conjunto de datos aleatorios.Primero, permítanme decir que entiendo cómo funciona una caché de reescritura.: el sistema operativo completa una E/S en una escritura cuando los datos llegan a la memoria caché del controlador en lugar del medio subyacente más lento, y luego el controlador escribe los datos en el medio tan rápido como se pueden escribir. Siendo ese el caso,Si está escribiendo datos muy rápidamente más rápido de lo que el medio de respaldo puede escribirlos, esperaría arruinar el caché del controlador y la ganancia de rendimiento de tener una escritura diferida desaparecería, y terminaría con un rendimiento equivalente a un configuración de escritura directa?

Lo que describí anteriormente es lo que esperaría, pero no es lo que estoy viendo. El servidor respaldado por caché de reescritura tiene consistentemente al menos 4 veces más IOPS y rendimiento, y lo sostiene; en comparación con un servidor idéntico que puse en modo de escritura directa. ¿Alguna idea sobre cómo explicar este comportamiento?

Y sí, estoy escribiendo datos más que suficientes para saturar el caché del sistema de archivos, y lo estoy escribiendo muy rápidamente.

Respuesta1

La caché de reescritura permite que el sistema operativo organice mejor los datos antes de escribirlos, lo que aumenta el rendimiento. Si realiza muchas escrituras relativamente pequeñas, simplemente juntar los datos de varias escrituras consecutivas y escribirlos en el medio de una sola vez mejorará significativamente el rendimiento.

En menor medida, la caché de reescritura puede ayudar al sistema operativo a igualar el tamaño del clúster durante las escrituras. Por ejemplo, si escribe 10000 bytes a la vez y el tamaño del clúster es 8192 bytes, el almacenamiento en caché evitará que el sistema operativo escriba 1808 bytes en un clúster parcialmente lleno (lo que requeriría leer el clúster primero).

información relacionada