Ajuste del rendimiento de la sincronización de archivos
Hay varias formas de mejorar la sincronización de archivos.
Las E/S de archivo JFS que no son secuenciales se acumulan en la memoria hasta que se cumplen determinadas condiciones:
- La lista libre se reduce a minfree y se debe producir una sustitución de página.
- El daemon de syncd vacía las páginas a intervalos planificados regularmente.
- Se emite el mandato sync .
- La grabación diferida aleatoria vacía las páginas sucias una vez que se alcanza el umbral de grabación diferida aleatoria.
Si se acumulan muchas páginas antes de que se produzca una de estas condiciones, cuando el daemon de syncd vacía las páginas, se obtiene el bloqueo de i-node y se mantiene hasta que todas las páginas sucias se hayan grabado en el disco. Durante este tiempo, las hebras que intentan acceder a ese archivo se bloquean, porque no está disponible el bloqueo de i-node. El mandato fuser también está bloqueado para el archivo, porque el mandato fuser necesita el bloqueo de inode para proporcionar la información necesaria. Recuerde que el daemon de syncd actualmente vacía todas las páginas sucias de un archivo, pero archivo por archivo. En sistemas en los que se modifica una gran cantidad de memoria y un gran número de páginas, pueden producirse picos altos de E/S cuando el daemon de syncd vacía las páginas.
AIX® tiene una opción ajustable denominada sync_release_ilock. El mandato ioo con la opción -o sync_release_ilock= 1 permite liberar el bloqueo de i-node mientras se vacían las páginas sucias de ese archivo. Como resultado, puede mejorar el tiempo de respuesta al acceder a este archivo durante una llamada de sync().
Este efecto de bloqueo también se puede minimizar aumentando la frecuencia de sincronizaciones en el daemon de syncd. Cambie /sbin/rc.boot donde se inicia el daemon de syncd. A continuación, rearranque el sistema para que se apliquen los cambios. Para el sistema actual, detenga el daemon de syncd y reinícielo con el nuevo valor de segundos.
Una tercera forma de ajustar este comportamiento es activando la escritura aleatoria detrás utilizando el mandato ioo (consulte Escritura secuencial y aleatoria detrás del ajuste de rendimiento).
Ajustables de sincronización de JFS2
j2_syncPageCount: limita el número de páginas modificadas previstas para grabarse mediante sincronización en un pase para un archivo. Cuando se establece este ajustable, el sistema de archivos graba el número especificado de páginas sin bloquear la E/S al resto del archivo. La llamada de sincronización se repite en la operación de grabación hasta que se graban todas las páginas modificadas.j2_syncPageLimit: sustituye al parámetroj2_syncPageCountcuando se alcanza un umbral. Utilice este parámetro para asegurarse de que la operación de sincronización se haya completado para un archivo. Los ajustables se mantienen de la manera estándar.
Los ajustables se manipulan mediante el mandato ioo.
Los ajustables j2_syncPageCount y j2_syncPageLimit se añaden a la lista de valores que están controlados por el mandatoioo.
–o para visualizar o cambiar el valor, y para ver la opción de ayuda utilice el distintivo –h.# ioo –h j2_syncPageCountEstablece el número máximo de páginas modificadas de un archivo que graba en disco la llamada del sistema de sincronización en una única operación.Valores: Valor predeterminado: 0 Rango: 0-65536
Tipo: Dinámico
Unidad: páginas de 4 KB
Ajuste: Cuando se ejecuta una aplicación que utiliza el almacenamiento en memoria caché del sistema de archivos y realiza un gran número de grabaciones aleatorias, es necesario ajustar este valor para evitar retrasos prolongados de aplicación durante las operaciones de sincronización. Los valores deben estar comprendidos en el rango de 256 a 1024. El valor predeterminado es cero, que da como resultado el comportamiento de sincronización normal de grabar todas las páginas sucias en una sola llamada. Si se establecen valores pequeños para los ajustables, se producen tiempos de sincronización más largos y retrasos más cortos en el tiempo de respuesta de la aplicación. Si se establecen valores más grandes, los retrasos de tiempo de respuesta son más largos y los tiempos de sincronización son más cortos.
# ioo –h j2_syncPageLimitEstablece el número máximo de veces que la llamada del sistema de sincronización utiliza j2_syncPageCount, para limitar las páginas que se graban para mejorar el rendimiento de la operación de sincronización.Valores: Valor predeterminado: 256 Rango: 16-65536
Tipo: Dinámico
Unidad: Numérico
Ajuste: Se establece cuando se establece j2_syncPageCount y se debe aumentar, si el efecto del cambio de j2_syncPageCount es insuficiente. Los valores aceptables están en el rango de 250 a 8000. j2_syncPageLimit no tiene ningún efecto si j2_syncPageCount es 0.
Este ajustable debe establecerse cuando se establece j2_syncPageCount y se debe aumentar, de forma que el efecto del cambio dej2_syncPageCount no reduzca el tiempo de respuesta de la aplicación.
Los valores deben estar comprendidos en el rango de 1 a 8000. El valor óptimo para estos ajustables depende del tamaño de la memoria y del ancho de banda de E/S. Un punto de partida neutral es establecer ambos ajustables en 256.
Simultaneidad y periodo de sincronización de JFS2
La sincronización del sistema de archivos está gestionada por el daemon de sincronización (syncd). Utilice los parámetros ajustables JFS2 para permitir que el sistema de archivos maneje la sincronización sin utilizar syncd.
El manejador de sincronización de JFS2 propaga el proceso de sincronización de modo que todos los datos de la memoria caché no se graben en el disco al mismo tiempo. La sincronización se realiza en un único sistema de archivos cada vez. Cada sistema de archivos está programado para iniciar la siguiente operación de sincronización una vez que finalice la operación anterior. También puede aumentar el número de hebras que manejan la operación de sincronización cuando se deben procesar varios sistemas de archivos.
Utilice los siguientes parámetros ajustables para la sincronización del sistema de archivos JFS2:
- j2_syncByVFS:
- Especifica el uso del manejador de sincronización de JFS2 y establece el intervalo entre la operación de sincronización de cada sistema de archivos.
- j2_syncConcurrency:
- Establece el número de hebras que manejan la sincronización del sistema de archivos. Este valor indica el número de sistemas de archivos en los que se debe realizar simultáneamente la operación de sincronización. Solo una hebra de sincronización realiza la operación de sincronización en un sistema de archivos individual.
El mandato ioo gestiona los parámetros ajustables de E/S. Consulte la documentación del mandato ioo para obtener más información.
# ioo –h j2_syncByVFS
Objeto: Especifica el número de segundos que se debe esperar entre llamadas del sistema para sincronizar un sistema de archivos JFS2. Este valor sustituye al valor especificado por el mandato syncd.
Valores: Valor predeterminado: 0, Rango: 0-86400
Tipo: Dinámico.
Unidades: Segundos.
Ajuste: Este valor indica el número de segundos entre iteraciones del proceso de sincronización. El manejador de sincronización de JFS2 hasta el tiempo especificado por el parámetro ajustable j2_syncByVFS antes de iniciar llamadas a la subrutina syncvfs para sistemas de archivos JFS2. Un valor de 0 indica que se debe utilizar el proceso syncd normal. Un valor distinto de cero altera temporalmente el tiempo especificado en el mandato syncd y hace que se utilice el manejador de sincronización de archivos específico de JFS2.
# ioo –h j2_syncConcurrency
Objeto: Establece el número de hebras que se van a utilizar para las operaciones de sincronización de JFS2.
Valores: Valor predeterminado: 1, Rango: 1-128.
Tipo: Dinámico.
Unidad: Numérico.
Ajuste: El daemon de sincronización inicia operaciones de sincronización simultáneamente para el número de sistemas de archivos establecidos en el parámetro ajustable j2_syncConcurrency. Este valor solo es efectivo cuando el parámetro ajustable j2_syncByVFS no es cero.