- Los parámetros predeterminados de ZFS están configurados como un punto medio entre acceso secuencial y acceso aleatorio
- Si se conocen con claridad las características de la carga de trabajo, es posible aplicar ajustes más agresivos
- Explicación de la diferencia entre acceso secuencial y acceso aleatorio
- En los HDD, por el movimiento del cabezal, el rendimiento del acceso aleatorio puede ser decenas o incluso cientos de veces más lento que el acceso secuencial
- En los SSD, aunque el acceso aleatorio ha mejorado mucho, el acceso secuencial sigue siendo más eficiente
- Las cargas de trabajo que leen archivos grandes en orden tienen una fuerte tendencia al acceso secuencial
- Las cargas de trabajo que leen con frecuencia muchos archivos pequeños tienden fuertemente al acceso aleatorio
- Introducción a métodos para analizar la carga de trabajo
- Inferencia lógica basada en el código o la estructura
- Cálculo del tamaño promedio de IO con base en el rendimiento (
bps) + cantidad de IO por segundo (iops)
- Análisis de la distribución del tamaño de IO con
zpool iostat -r
- Interpretación de
zpool iostat -r
ind: tamaño de cada solicitud lógica individual
agg: tamaño del IO real que se ejecutó tras la fusión
- Si
agg es mayor que ind, significa que la fusión de IO adyacentes está ocurriendo correctamente
- Resultados del análisis de la carga de trabajo de ejemplo
- Proporción de lecturas síncronas de aproximadamente 76%
- Más de 99% de las lecturas son de 32KiB o menos
- Las escrituras asíncronas también muestran una alta proporción de IO pequeños
- En general, es una carga de trabajo con una tendencia muy marcada al acceso aleatorio
zfs_prefetch_disable
- ZFS carga por adelantado bloques adyacentes en ARC cuando detecta un patrón de acceso secuencial
- En cargas de trabajo de acceso aleatorio, la tasa de aciertos de la lectura anticipada puede ser baja y solo aumentar IO innecesarios
- Es posible medir la eficiencia de la lectura anticipada con base en
arc_summary
- Si la tasa de aciertos es baja, se puede considerar
zfs_prefetch_disable
recordsize
- El valor predeterminado es 128K
- En la carga de trabajo de ejemplo, como la mayoría de los IO son de 32KiB o menos, se puede considerar un
recordsize más pequeño
- Selección del valor óptimo
- Es importante decidirlo con base en benchmarks
- Para bases de datos como MySQL/Postgres, ya existen muchos casos de ajuste validados
- En general, suele usarse un
recordsize similar al tamaño de página de la base de datos
Aún no hay comentarios.