La mayoría de los sistemas Linux que administro tienen controladores RAID de hardware de características (principalmente HP Smart Array ). Todos están ejecutando RHEL o CentOS.
Estoy buscando ajustables del mundo real para ayudar a optimizar el rendimiento de las configuraciones que incorporan controladores RAID de hardware con discos SAS (Smart Array, Perc, LSI, etc.) y caché con respaldo de batería o flash. Suponga RAID 1 + 0 y múltiples ejes (4+ discos).
Paso una cantidad considerable de tiempo ajustando la configuración de red de Linux para aplicaciones de comercio financiero y de baja latencia. Pero muchas de esas opciones están bien documentadas (cambiar las memorias intermedias de envío / recepción, modificar la configuración de la ventana TCP, etc.). ¿Qué están haciendo los ingenieros en el lado del almacenamiento?
Históricamente, he realizado cambios en el elevador de programación de E / S , y recientemente he optado por deadline
y los noop
programadores para mejorar el rendimiento dentro de mis aplicaciones. A medida que las versiones de RHEL han progresado, también he notado que los valores predeterminados compilados para los dispositivos de bloque SCSI y CCISS también han cambiado. Esto ha tenido un impacto en la configuración recomendada del subsistema de almacenamiento a lo largo del tiempo. Sin embargo, ha pasado un tiempo desde que vi recomendaciones claras. Y sé que los valores predeterminados del sistema operativo no son óptimos. Por ejemplo, parece que el búfer de lectura anticipada predeterminado de 128 kb es extremadamente pequeño para una implementación en hardware de clase de servidor.
Los siguientes artículos exploran el impacto en el rendimiento de cambiar la memoria caché de lectura anticipada y los valores nr_requests en las colas de bloque.
http://zackreed.me/articles/54-hp-smart-array-p410-controller-tuning
http://www.overclock.net/t/515068/tuning-a-hp-smart-array-p400-with -linux-why-tuning-really-matters
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
Por ejemplo, estos son cambios sugeridos para un controlador HP Smart Array RAID:
echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
¿Qué más se puede ajustar de manera confiable para mejorar el rendimiento del almacenamiento?
Estoy buscando específicamente las opciones sysctl y sysfs en escenarios de producción.