Mecanismo de lectura y escritura de archivos de Linux

01. Conceptos básicos

Cache

La caché es un componente que se usa para reducir el tiempo promedio requerido para que los dispositivos de alta velocidad accedan a los dispositivos de baja velocidad . La lectura y escritura de archivos implica la memoria de la computadora y los discos. La velocidad de operación de la memoria es mucho más rápida que la de los discos. Si llama a leer y escribir cada vez que manipule directamente el disco, por un lado, la velocidad será limitada, por un lado, también reducirá la vida útil del disco, por lo que si se trata de una operación de lectura o escritura en el disco, el sistema operativo caché los datos primero.

Caché de página

Page Cache (Page Cache) es un búfer entre la memoria y los archivos . En realidad, es un área de memoria. Todas las E / S de archivos (incluidos los archivos de red) interactúan directamente con la caché de página. El sistema operativo utiliza una serie de estructuras de datos., Como inodo, address_space, struct page, darse cuenta del nivel de asignación de un archivo a la página. En gran medida, la optimización de la lectura y escritura de archivos es la optimización del uso de la caché de página.

Página sucia

La caché de la página corresponde a un área en el archivo. Si el contenido de la caché de la página y el área del archivo correspondiente son inconsistentes, la caché de la página se denomina página sucia ( página sucia). Modificando la caché de página o creando una nueva caché de página, siempre que el disco no se vacíe, se generarán páginas sucias.

Inserte la descripción de la imagen aquí

[root@ufo130 ~]# cat /proc/meminfo | grep -E '^Cached|^Dirty'

Inserte la descripción de la imagen aquí

Algunos parámetros que pueden cambiar el comportamiento de escritura diferida del sistema operativo de páginas sucias

[root@ufo130 ~]# sysctl -a 2>/dev/null | grep dirty
vm.dirty_background_ratio = 5
vm.dirty_background_bytes = 0
vm.dirty_ratio = 10
vm.dirty_bytes = 0
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000
  • vm.dirty_background_ratio es el porcentaje de páginas sucias que la memoria puede llenar.Cuando el tamaño total de las páginas sucias alcanza esta proporción, el proceso en segundo plano del sistema comenzará a descargar las páginas sucias en el disco ( vm.dirty_background_bytes es similar, pero lo establece el número de bytes)

  • vm.dirty_ratio es un límite absoluto para datos sucios y el porcentaje de datos sucios en la memoria no puede exceder este valor. Si los datos sucios exceden esta cantidad, las nuevas solicitudes de E / S se bloquearán hasta que los datos sucios se escriban en el disco

  • vm.dirty_writeback_centisecs especifica la frecuencia con la que se escriben los datos sucios, en centésimas de segundo

  • vm.dirty_expire_centisecs especifica el tiempo que los datos sucios pueden sobrevivir, en centésimas de segundo. Por ejemplo, se establece en 30 segundos. Cuando el sistema operativo escribe de nuevo, si los datos sucios están en la memoria durante más de 30 segundos, ser escrito de nuevo al disco

  • Estos parámetros pueden ser sudo sysctl -w vm.dirty_background_ratio 5 = tales comandos para modificar los privilegios de root requeridos, pueden ser ejecutados en el usuario root echo 5> / proc / sys / vm / dirty_background_ratio modificado

02. Proceso de lectura y escritura de archivos

Con el concepto de caché de página y páginas sucias, veamos el proceso de lectura y escritura de archivos

Leer archivo

  • El usuario inicia la operación de lectura
  • Caché de la página de búsqueda del sistema operativo
  • Si se pierde, se genera una excepción de error de página, luego se crea una caché de página y la página correspondiente se lee del disco para llenar la caché de página.
  • Si llega, el contenido a leer se devuelve directamente desde la caché de la página.
  • Llamada de lectura de usuario completada

Escribir archivo

  • Operación de escritura iniciada por el usuario
  • Caché de la página de búsqueda del sistema operativo
  • Si se omite, se generará una excepción de error de página, luego se crea una caché de página y el contenido pasado por el usuario se escribe en la caché de página.
  • Si llega, el contenido pasado por el usuario se escribe directamente en la caché de la página.
  • Llamada de escritura del usuario completada
  • Las páginas se vuelven páginas sucias después de ser modificadas, el sistema operativo tiene dos mecanismos para volver a escribir las páginas sucias en el disco
  • El usuario llama manualmente a fsync ()
  • El proceso pdflush escribe periódicamente las páginas sucias en el disco

Existe una relación correspondiente entre la memoria caché de la página y el archivo de disco. Esta relación la mantiene el sistema operativo. Las operaciones de lectura y escritura en la memoria caché de la página se completan en modo kernel, que es transparente para los usuarios.

03. Ideas de optimización para lectura y escritura de archivos

Los diferentes esquemas de optimización son adecuados para diferentes escenarios de uso, como el tamaño del archivo, la frecuencia de lectura y escritura, etc. Aquí no consideramos el esquema de modificación de los parámetros del sistema. Modificar los parámetros del sistema siempre tiene ganancias y pérdidas. Debe elegir un equilibrio punto, que está relacionado con el negocio. El grado es demasiado alto, por ejemplo, si se requiere una fuerte consistencia de datos, si se tolera la pérdida de datos, etc. La idea de optimización tiene las siguientes dos consideraciones.

  • Maximice el uso del almacenamiento en caché de páginas

  • Reducir la cantidad de llamadas a la API del sistema

El primer punto es fácil de entender, intente hacer que cada operación de IO llegue al caché de la página, que será mucho más rápido que operar el disco. La API del sistema mencionada en el segundo punto es principalmente de lectura y escritura, porque la llamada al sistema ingresará al modo kernel desde el modo de usuario., Y algunos van acompañados de la copia de datos de la memoria, por lo que reducir las llamadas al sistema en algunos escenarios también mejorará el rendimiento.

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/113060602
Recomendado
Clasificación