Red de conocimiento informático - Aprendizaje de código fuente - ¿Cuál es la razón por la que no se puede escribir en la caché?

¿Cuál es la razón por la que no se puede escribir en la caché?

Debido a las diferentes situaciones de carga de E/S, la configuración predeterminada del sistema de archivos en los sistemas Linux es generalmente moderada, lo que enfatiza la aplicabilidad universal. Sin embargo, en determinadas aplicaciones, esta configuración a menudo no puede lograr un rendimiento de E/S óptimo. Por lo tanto, si la aplicación tiene altos requisitos de rendimiento de E/S, además de utilizar hardware de mayor rendimiento (como discos, tarjetas HBA, CPU, MEM, etc.), también podemos realizar ajustes de rendimiento en el sistema de archivos para obtener mayores requisitos. Mejora del rendimiento de E/S. En general, el trabajo se puede realizar principalmente desde tres aspectos:

1. Parámetros relacionados con el disco de ajuste

2 Parámetros de ajuste del propio sistema de archivos

3. Ajuste de parámetros de montaje (montaje) del sistema de archivos

Por supuesto, las condiciones de carga son diferentes y es necesario combinar el análisis teórico con suficientes pruebas y experimentos para obtener parámetros razonables. A continuación se toma el sistema de archivos EXT3 en un disco SAS (SCSI conectado en serie) como ejemplo para brindar un método general para optimizar el rendimiento de los sistemas de archivos Linux. Realice los ajustes adecuados según su propia situación y no los aplique mecánicamente.

1. Parámetros relacionados con el disco

1.1 Modo de caché: habilitar el modo WCE=1 (activar caché de escritura), RCD=0 (desactivar caché de lectura)

sdparm -s WCE=1, RCD=0 -S /dev/sdb

1.2 Algoritmo de programación de E/S de Linux

Después de los experimentos, en condiciones de carga pesada, el método de programación de fechas límite es más eficaz para cargas squidI/O tiene un mejor rendimiento. Los otros tres son noop (fifo), ya que cfq. noop se usa principalmente en sistemas de almacenamiento SAN/RAID, ya que se usa principalmente para lectura y escritura secuencial de archivos grandes, y cfq es adecuado para aplicaciones de escritorio.

echo fecha límite > /sys/block/sdb/queue/scheduler

1.3 parámetros de programación de fecha límite

Para redhat linux, se recomienda read_expire = 1/ 2 write_expire, para cargas de E/S de archivos pequeños grandes y frecuentes, se debe utilizar el más pequeño de los dos. Es necesario obtener valores más apropiados mediante pruebas experimentales.

echo 500 > /sys/block/sdb/queue/iosched/read_expire

echo 1000 > /sys/block/sdb/queue/iosched/write_expire

1.4 lectura anticipada Número de sectores de lectura anticipada

La lectura anticipada es un medio eficaz para mejorar el rendimiento del disco. Actualmente es más eficaz para lecturas secuenciales y aprovecha principalmente las características de localidad de los datos. Por ejemplo, en mi sistema, el rendimiento de lectura de 256 sectores mediante configuraciones experimentales es mejor.

blockdev --setra 256 /dev/sdb

2. Parámetros del sistema de archivos EXT3

2.1 tamaño de bloque = 4096 (4 KB)

mkfs.ext3 -b especifica que los bloques de datos grandes desperdiciarán una cierta cantidad de espacio, pero mejorarán el rendimiento de E/S. El tamaño del bloque del sistema de archivos EXT3 puede ser 1 KB, 2 KB, 4 KB.

2.2 tamaño del inodo

Este es un concepto lógico, es decir, cuánto espacio físico ocupa el archivo correspondiente a un inodo. La especificación mkfs.ext3 -i se puede establecer mediante el tamaño promedio de los archivos del sistema de archivos, lo que puede reducir el direccionamiento del disco y el tiempo de operación de los metadatos.

2.3 bloque reservado

mkfs.ext3 -m especificación, el valor predeterminado es 5%, este valor se puede ajustar a un tamaño menor para aumentar el espacio de almacenamiento disponible.

2.4 desactivar el diario

Para aplicaciones que no tienen altos requisitos de seguridad de datos (como el caché web), la función de registro se puede desactivar para mejorar el rendimiento de E/S.

tune2fs -O^has_journal /dev/sdb

3. parámetros de montaje

3.1 noatime, nodirtime

Acceder a directorios de archivos, no La modificación de la metainformación del archivo de acceso puede mejorar eficazmente el rendimiento en cargas frecuentes de archivos pequeños.

3.2 async

El modo de E/S asíncrono mejora el rendimiento de escritura.

3.3 datos=escritura reescrita (si es diario)

En el modo de registro, habilitar el mecanismo de reescritura puede mejorar el rendimiento de la escritura. La secuencia de escritura de datos ya no está protegida, lo que puede causar inconsistencia en los datos del sistema de archivos. Los datos importantes deben usarse con precaución.

3.4 barrier=0 (si es un diario)

Barrier=1 puede garantizar que el sistema de archivos escriba el registro de confirmación después de que los datos del registro se escriban en el disco, pero afecta el rendimiento. Úselo con precaución al aplicar datos importantes, ya que puede causar daños a los datos.