Me encuentro con un problema de rendimiento máximo aquí y necesito algunos consejos sobre cómo ajustar mis mandos. Estamos ejecutando un servidor de archivos de 10 Gbit para la distribución de copias de seguridad. Es una configuración S-ATA2 de dos discos en un controlador LSI MegaRAID. El servidor también tiene 24 gig de memoria.
Tenemos la necesidad de reflejar nuestra última copia de seguridad cargada con el máximo rendimiento.
El RAID0 para nuestras copias de seguridad "activas" nos da alrededor de 260 MB / seg de escritura y 275 MB / seg de lectura. Un tmpfs probado con un tamaño de 20 GB nos da alrededor de 1 GB / seg. Este tipo de rendimiento es lo que necesitamos.
Ahora, ¿cómo puedo ajustar el subsistema de memoria virtual de Linux para almacenar en caché los últimos archivos cargados durante el mayor tiempo posible en la memoria sin escribirlos en el disco (o incluso mejor: escribir en el disco Y mantenerlos en la memoria)?
Configuré los siguientes sistemas, pero no nos dan el rendimiento que esperamos:
# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000
En teoría, esto debería darnos 16 GB para el almacenamiento en caché de E / S y esperar algunos minutos hasta que se escriba en el disco. Aún así, cuando comparo el servidor, no veo ningún efecto en la escritura, el rendimiento no aumenta.
Se necesita ayuda o consejo.
Respuestas:
Por el aspecto de las variables que ha establecido, parece que le preocupa principalmente el rendimiento de escritura y no le importan las posibles pérdidas de datos debido a cortes de energía.
Solo obtendrá la opción de escritura diferida y el uso de un caché de reescritura con operaciones de escritura asincrónicas. Las operaciones de escritura síncrona requieren comprometerse en el disco y nunca se escribirán de manera diferida. Su sistema de archivos puede estar causando frecuentes descargas de páginas y escrituras sincrónicas (generalmente debido al registro diario, especialmente con ext3 en modo datos = diario). Además, incluso los enjuagues de la página "en segundo plano" interferirán con las lecturas sin caché y las escrituras sincrónicas , lo que los ralentizará.
En general, debe tomar algunas métricas para ver qué está sucediendo: ¿ve su proceso de copia en estado "D" esperando que el trabajo de E / S se realice mediante pdflush? ¿Ves actividad de escritura sincrónica en tus discos?
Si todo lo demás falla, puede optar por configurar un sistema de archivos tmpfs explícito donde copie sus copias de seguridad y simplemente sincronice los datos con sus discos después del hecho, incluso automáticamente usando inotify
Para el almacenamiento en caché de lectura, las cosas son significativamente más simples: existe la
fadvise
utilidad fcoretools que tiene el--willneed
parámetro para aconsejar al núcleo que cargue el contenido del archivo en la memoria caché del búfer.Editar:
Esto no habría influido mucho en su escenario de prueba, pero hay una idea errónea en su comprensión. El parámetro dirty_ratio no es un porcentaje de la memoria total de su sistema, sino más bien de la memoria libre de su sistema .
Hay un artículo sobre Ajuste para cargas de escritura pesada con información más detallada.
fuente
O simplemente obtenga más discos ... La configuración de la matriz de unidades que tiene no es compatible con todo lo que necesita. Este es un caso en el que la solución debe ser rediseñada para satisfacer sus necesidades reales. Entiendo que esto es solo una copia de seguridad, pero tiene sentido evitar una solución incorrecta.
fuente
El uso de la memoria caché puede implicar la pérdida de datos, ya que si algo sale mal, los datos que están en la memoria y no se guardan en los discos se perderán.
Dicho esto, hay que hacer ajustes a nivel de sistema de archivos.
Por ejemplo, si estaba usando ext4, podría probar la opción de montaje:
barrera = 0
Eso: "deshabilita el uso de barreras de escritura en el código jbd. Las barreras de escritura imponen el orden adecuado en el disco de las confirmaciones de diario, lo que hace que las memorias caché de escritura de discos volátiles sean seguras de usar, con alguna penalización de rendimiento. Si sus discos están respaldados por batería de una manera u otro, deshabilitar barreras puede mejorar el rendimiento de manera segura. Las opciones de montaje "barrera" y "nobarrier" también se pueden usar para habilitar o deshabilitar barreras, para mantener la coherencia con otras opciones de montaje ext4 ".
Más en: http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt
fuente