Red de conocimiento informático - Material del sitio web - Cómo utilizar los contadores de rendimiento de Windows para probar su disco duro

Cómo utilizar los contadores de rendimiento de Windows para probar su disco duro

Contadores de rendimiento de Windows: disco de análisis de rendimiento del disco

Disco físico:

Tamaño de E/S único

Promedio de bytes de disco/lectura

Promedio de bytes de disco/escritura

Tiempo de respuesta de E/S

Promedio de segundos de disco/lectura

Promedio de segundos de disco/escritura

p>

IOPS

Lecturas de disco/seg

Escrituras de disco/seg

Transferencias de disco/seg

Rendimiento de E/S

DiskBytes/seg

DiskRead Bytes/seg

DiskWrite Bytes/seg

El disco tiene dos parámetros importantes: tiempo de búsqueda y latencia de rotación.

El recuento de E/S normal es: ①1000/(Tiempo de búsqueda+latencia de rotación)*0,75, lo cual es normal dentro de este rango. Cuando el recuento de E/S supera el 85%, básicamente se considera que hay un cuello de botella de E/S. Teóricamente, el recuento de lecturas aleatorias del disco es 125 y el recuento de lecturas secuenciales es 225. Para archivos de datos, es lectura y escritura aleatoria, y para archivos de registro, es lectura y escritura secuencial. Por lo tanto, se recomienda almacenar los archivos de datos en RAID5 y los archivos de registro en RAID10 o RAID1.

Adjunto:

15000 RPM: 150 IOPS aleatorios

10000 RPM: 110 IOPS aleatorios

5400 RPM: 50 IOPS aleatorios p>

Lo siguiente asume algunos valores del objeto de rendimiento del disco físico observado en RAID5 con 4 discos duros:

Longitud promedio de DiskQueue 12 Longitud de cola

Prom. DiskSec /Read .035 El tiempo que lleva leer datos, ms

Avg. DiskSec/Write .045 El tiempo que lleva escribir datos, ms

DiskReads/sec 320 El cantidad de datos leídos por segundo

DiskWrites/seg 100 Cantidad de datos escritos por segundo

Longitud promedio de DiskQueue, 12/4=3, no se recomienda la cola promedio de cada disco. exceder 2.

El promedio de segundos de disco/lectura generalmente no debe exceder los 11 ~ 15 ms.

Generalmente se recomienda que el promedio de segundos de disco/escritura sea inferior a 12 ms.

De los resultados anteriores, vemos que la capacidad de E/S del disco en sí cumple con nuestros requisitos. La razón es que hay una gran cantidad de solicitudes que hacen que la cola espere. de su declaración SQL Causado por una gran cantidad de escaneos de tablas.

Después de la optimización, si aún no se pueden cumplir los requisitos, la siguiente fórmula puede ayudarle a calcular cuántos discos duros se pueden usar para cumplir dichos requisitos de simultaneidad:

Raid 0 - E/S por disco = (lee +escrituras) / número de discos

Raid 1 - E/S por disco = [lecturas +(2 * escrituras)] / 2

Raid 5 - E/S por disco = [lecturas +(4 * escrituras)] / número de discos

Raid 10 -- E/S por disco = [lecturas +(2 * escrituras)] / número de discos

El resultado que obtenemos es: (32400)/4=180. En este momento, puede obtener el valor de E/S normal del disco de acuerdo con la fórmula ①. Supongamos que el recuento de E/S normal es ahora 125, para lograr este resultado: 720/125=5,76. Es decir, se necesitan 6 discos para cumplir dichos requisitos.

Pero las lecturas de disco/segundo y las escrituras de disco/segundo anteriores son difíciles de estimar correctamente. Por lo tanto, sólo podemos estimar un valor promedio cuando el sistema está relativamente ocupado y utilizarlo como base para la fórmula de cálculo. Otra es que es difícil obtener de los clientes los valores de los parámetros de tiempo de búsqueda y latencia de rotación, que solo se pueden calcular utilizando el valor teórico de 125.

Prólogo

Como administrador de bases de datos, prestar atención al rendimiento del sistema es una de las tareas más importantes en la vida diaria, sin embargo, en todos los aspectos del rendimiento en los que nos centramos. , El rendimiento de IO es el más importante. Es un dolor de cabeza, frente a varios parámetros desconocidos y una terminología novedosa y deslumbrante, junto con el engaño de los fabricantes de almacenamiento, que siempre nos hace sentir como si estuviéramos en las nubes. Esta serie de artículos intenta resumir de manera integral varios conceptos relacionados con el almacenamiento en disco a partir de los conceptos básicos, para que todos puedan tener una comprensión más completa de los conceptos básicos relacionados con el rendimiento de IO y el monitoreo y ajuste del rendimiento de IO.

En esta parte, primero abandonamos varios sistemas de almacenamiento con estructuras complejas y estudiamos directamente los problemas de rendimiento de un solo disco para comprender los diversos indicadores que miden el rendimiento del sistema IO y la relación entre ellos.

Varios conceptos básicos

Antes de estudiar el rendimiento del disco, primero debemos comprender la estructura y el principio de funcionamiento del disco. Sin embargo, no repetiré la explicación aquí. Para obtener información sobre la estructura y el principio de funcionamiento del disco duro, puede consultar las entradas relevantes en Wikipedia: Unidad de disco duro (inglés) y Unidad de disco duro (chino).

Operaciones de lectura/escritura IO (lectura/escritura IO)

El disco se utiliza para acceder a los datos, por lo que cuando se trata de operaciones IO, hay dos tipos. Las operaciones correspondientes son escriba operaciones de IO al almacenar datos y lea operaciones de IO al recuperar datos.

Operación de IO única

Cuando el controlador que controla el disco recibe un comando de operación de IO de lectura del sistema operativo, el controlador emitirá un comando de lectura de datos al disco y simultáneamente pasará el dirección del bloque de datos que se leerá en el disco, y luego el disco pasará los datos leídos al controlador, y el controlador los devolverá al sistema operativo para completar una operación de escritura IO de manera similar, una operación de escritura IO de manera similar; el controlador recibe la instrucción de operación de escritura IO y los datos que se van a escribir, y los pasa al disco. Una vez completada la escritura de datos, el disco devuelve el resultado de la operación al controlador y luego el controlador lo devuelve al sistema operativo. , complete una operación de escritura IO. Una única operación IO se refiere a completar una operación de escritura IO o lectura IO.

Acceso aleatorio (Acceso aleatorio) y Acceso continuo (Acceso secuencial)

El acceso aleatorio se refiere a la dirección del sector proporcionada por este IO y el sector proporcionado por el último IO La diferencia de dirección es relativamente grande, por lo que el cabezal magnético necesita realizar un movimiento relativamente grande entre dos operaciones IO para reiniciar la lectura/escritura de datos.

Por el contrario, si la dirección del sector proporcionada por el IO actual es consistente o cercana a la dirección del sector donde terminó el último IO, el jefe puede iniciar rápidamente la operación de IO. Estas operaciones de IO múltiples se denominan acceso continuo. Por lo tanto, aunque se emiten dos operaciones IO adyacentes al mismo tiempo, si sus direcciones de sector solicitadas son muy diferentes, solo se las puede llamar acceso aleatorio en lugar de acceso continuo.

Modo IO secuencial (modo cola)/modo IO concurrente (modo ráfaga)

El controlador de disco puede emitir una serie de comandos IO al grupo de discos al mismo tiempo. solo se puede ejecutar Cuando se usa un comando IO, se llama IO secuencial cuando el grupo de discos puede ejecutar múltiples comandos IO al mismo tiempo, se llama IO concurrente. La E/S concurrente solo puede ocurrir en un grupo de discos compuesto por varios discos, y un solo disco solo puede procesar un comando de E/S a la vez.

El tamaño de un solo IO (IO ChunkSize)

Las personas que están familiarizadas con las bases de datos tendrán este concepto, es decir, el almacenamiento de la base de datos tiene un tamaño de bloque básico (Tamaño de bloque), ya sea SQL Server u Oracle, el tamaño de bloque predeterminado es 8 KB, es decir, cada lectura y escritura en la base de datos es en unidades de 8 k. Entonces, ¿qué pasará con la lectura y escritura única de tamaño fijo de 8k emitida por la aplicación de base de datos en el nivel de escritura en el disco? Es decir, ¿cuál es el tamaño de los datos en una sola operación de IO para leer y escribir en el disco? ¿Es también un valor fijo? La respuesta no es segura. En primer lugar, el sistema operativo introduce el caché del sistema de archivos (File System Cache) para mejorar el rendimiento de IO. El sistema primero colocará múltiples solicitudes de IO en el caché de acuerdo con los datos solicitados y luego las enviará al. disco a la vez, es decir, las operaciones de lectura de múltiples bloques de datos de 8K emitidos por la base de datos se pueden procesar en una IO de lectura de disco. Algunos sistemas de almacenamiento también proporcionan caché. Después de recibir solicitudes de IO del sistema operativo, fusionarán las solicitudes de IO de múltiples sistemas operativos en uno para su procesamiento. Ya sea el almacenamiento en caché a nivel del sistema operativo o el almacenamiento en caché a nivel del controlador de disco, solo hay un propósito: mejorar la eficiencia de la lectura y escritura de datos. Por lo tanto, el tamaño de cada operación de IO individual es diferente y depende principalmente del juicio del sistema sobre la eficiencia de lectura y escritura de datos.

Cuando el tamaño de una operación IO es relativamente pequeño, la llamamos operación IO pequeña, como 1K, 4K, 8K, cuando la cantidad de datos en una operación IO es grande, se llama; una operación IO grande, por ejemplo, 32K, 64K o incluso mayor.

Cuando hablamos de tamaño de bloque (Block Size), solemos entrar en contacto con múltiples conceptos similares, como por ejemplo la unidad de gestión de datos más pequeña de la base de datos que mencionamos anteriormente, que Oralce llama Es un bloque. (Bloque), el tamaño es generalmente de 8K, SQL Server lo llama página (Página), el tamaño general también es de 8k. En el sistema de archivos, también podemos encontrar un bloque del sistema de archivos. En muchos sistemas Linux actuales, es 4K (puede verlo a través de /usr/bin/time -v). base de datos/ Las páginas son las mismas y todas están diseñadas para facilitar la gestión de datos. Pero cuando se trata del tamaño de un solo IO, no está directamente relacionado con el tamaño de estos bloques. En inglés, el tamaño de un solo IO generalmente se llama IO Chunk Size, no IO Block Size.

IOPS (IO por segundo)

IOPS, el número de operaciones de IO realizadas por el sistema IO por segundo, es un parámetro importante que se utiliza para medir la capacidad de IO del sistema. Para un sistema IO compuesto por un solo disco, no es difícil calcular sus IOPS. Siempre que sepamos el tiempo que tarda el sistema en completar una IO, podemos calcular los IOPS del sistema.

Ahora calculemos los IOPS del disco. Supongamos que la velocidad de rotación del disco (velocidad de rotación) es de 15 000 rpm, el tiempo de búsqueda promedio es de 5 ms y la velocidad de transferencia máxima es de 40 MB/s (aquí, la). Las velocidades de lectura y escritura se consideran iguales, la diferencia real será relativamente grande).

Para un disco, una operación IO completa se realiza de esta manera: cuando el controlador emite un comando de operación IO al disco, el brazo impulsor (ActuatorArm) del disco abandona el rellano con el cabezal de lectura y escritura. (Head Area (LandingZone, ubicada en el área sin datos en el círculo interior), se mueve justo encima de la pista (Track) donde se encuentra el bloque de datos inicial a operar. Este proceso se llama búsqueda (Seeking). y el tiempo correspondiente consumido se llama tiempo de búsqueda (SeekTime); pero los datos no se pueden leer inmediatamente después de encontrar la pista correspondiente. En este momento, el cabezal magnético tiene que esperar hasta que el plato del disco (Platter) gire hasta el sector (. Sector) donde se encuentra el bloque de datos inicial cae directamente sobre el cabezal de lectura y escritura. Comienza a leer los datos, y el tiempo que pasa esperando que el disco gire a un sector operable se llama retraso rotacional (RotationalDelay); el cabezal continúa leyendo / escribiendo el bloque de datos correspondiente hasta que se completan todos los datos requeridos para esta operación IO. Este proceso se llama transferencia de datos (DataTransfer), y el tiempo correspondiente se llama tiempo de transferencia (TransferTime). Después de completar estos tres pasos, se completa una operación IO.

Cuando miramos los folletos de los fabricantes de discos duros, a menudo podemos ver tres parámetros, a saber, el tiempo de búsqueda promedio, la velocidad de rotación del disco y la velocidad máxima de transmisión. Estos tres parámetros se pueden proporcionar para cronometrar los tres anteriores. pasos.

El primer tiempo de búsqueda, considerando que los datos que se leen y escriben pueden estar en cualquier pista del disco, puede estar en el círculo más interno del disco (el tiempo de búsqueda es el más corto), o Puede estar en el medio del disco. El círculo más externo (el tiempo de búsqueda más largo), por lo que en el cálculo solo consideramos el tiempo de búsqueda promedio, que es el tiempo de búsqueda promedio indicado en los parámetros del disco. Aquí usamos los 5 ms. Actualmente el disco duro de 10krmp más grande.

El segundo retraso de rotación es el mismo que el direccionamiento. Cuando el cabezal está posicionado en la pista, puede estar justo encima del sector a leer o escribir. En este momento, se puede leer inmediatamente sin más. Los datos se escriben, pero en el peor de los casos, el disco necesita girar un círculo completo antes de que el cabezal pueda leer los datos, por lo que aquí también consideramos el retraso de rotación promedio para un disco de 10 krpm, que es (60 s/15 k). *(1/ 2) = 2ms.

El tercer tiempo de transmisión, los parámetros del disco nos proporcionan la velocidad máxima de transmisión. Por supuesto, es muy difícil lograr esta velocidad, pero esta velocidad es la velocidad de lectura y escritura pura del disco. Entonces, dado el tamaño de una única IO, sabemos cuánto tiempo necesita dedicar el disco a la transferencia de datos. Este tiempo es el tamaño de IOChunk / velocidad de transferencia máxima.

Ahora podemos obtener la fórmula para calcular el tiempo de IO único:

Tiempo de IO = Tiempo de búsqueda + 60 segundos/Velocidad de rotación/2 + Tamaño del fragmento de IO/Velocidad de transferencia

Entonces podemos calcular IOPS de esta manera

IOPS = 1/Tiempo IO = 1/(Tiempo de búsqueda + 60 segundos/Velocidad de rotación/2 + Tamaño de IOChunk/Velocidad de transferencia)

Para diferentes tamaños de E/S dados podemos obtener la siguiente serie de datos

4K (1/7,1 ms = 140 IOPS)

5 ms + (60 s/15000 RPM/2) + 4 K/40 MB = 5 + 2 + 0,1 = 7,1

8k (1/7,2 ms = 139 IOPS)

5ms + (60seg/15000RPM/2) + 8K/40MB = 5 + 2 + 0,2 = 7,2

16K (1/7,4 ms = 135 IOPS)

5ms + (60seg/15000RPM/2) + 16K/40MB = 5 + 2 + 0,4 = 7,4

32K (1/7,8 ms = 128 IOPS)

5ms + (60seg/15000RPM/2) + 32K/40MB = 5 + 2 + 0,8 = 7,8

64K (1/8,6 ms = 116 IOPS)

5ms + (60seg/15000RPM/2) + 64K/40MB = 5 + 2 + 1,6 = 8,6

Se puede ver desde Los datos anteriores indican que cuando una sola IO es más pequeña, una sola IO lleva menos tiempo y las IOPS correspondientes son mayores.

Todos nuestros datos anteriores se obtienen bajo una suposición relativamente ideal. La situación ideal aquí es que el disco toma un tamaño promedio de tiempo de búsqueda y un retraso de rotación promedio. Esta suposición en realidad está más en línea con. Lectura y escritura aleatorias en nuestra situación real. En la lectura y escritura aleatorias, el tiempo de direccionamiento y el retraso de rotación de cada operación IO no se pueden ignorar. La existencia de estos dos tiempos también limita el tamaño de IOPS.

Ahora consideramos una operación de lectura y escritura secuencial relativamente extrema, como leer un archivo grande cuyo almacenamiento se distribuye continuamente en el disco. Debido a que la distribución del almacenamiento del archivo es continua, el cabezal del disco no continúa leyendo después de completar una IO de lectura. Se requiere una nueva operación y no se requiere retraso de rotación. En este caso, podemos lograr un valor de IOPS grande, de la siguiente manera

4K (1/0,1 ms = 10000 IOPS)

. 0ms + 0ms + 4K/40MB = 0,1

8k (1/0,2 ms = 5000 IOPS)

0ms + 0ms + 8K/40MB = 0,2

16K (1/0,4 ms = 2500 IOPS)

0 ms + 0 ms + 16 K/40 MB = 0,4

32 K (1/0,8 ms = 1250 IOPS)

0 ms + 0 ms + 32 K/40 MB = 0,8

64 K (1/1,6 ms = 625 IOPS)

0 ms + 0 ms + 64 K/40 MB = 1,6

Comparado con En el primer conjunto de datos, la brecha es muy grande, por lo que cuando queremos usar IOPS para medir el rendimiento de un sistema IO, debemos explicar claramente las IOPS en qué condiciones, es decir, debemos explicar el método de lectura y escritura y el tamaño de una sola IO Por supuesto, en la práctica, especialmente en los sistemas OLTP, la lectura y escritura aleatoria de pequeñas IO es la más convincente.

Velocidad de Transferencia/Rendimiento

La velocidad de transferencia de la que estamos hablando (otro término común es rendimiento) no es la máxima indicada en el disco. La velocidad de transferencia, o velocidad de transferencia ideal,. es la cantidad de datos que fluyen a través del bus del sistema del disco cuando el disco se utiliza realmente. Con los datos de IOPS, podemos calcular fácilmente la velocidad de transferencia correspondiente

Velocidad de transferencia = IOPS * Tamaño del fragmento de IO

Sigue siendo el primer conjunto de IOPS anterior A partir de los datos, podemos obtenga la velocidad de transmisión correspondiente de la siguiente manera

4K: 140 * 4K = 560K / 40M = 1,36%

8K: 139 * 8K = 1112K / 40M = 2,71%

p >

16K: 135 * 16K = 2160K / 40M = 5,27%

32K: 116 * 32K = 3712K / 40M = 9,06%

Puedes ver la transmisión real La velocidad Es muy pequeño y la utilización del autobús también es muy pequeña.

Aquí hay que dejar claro un concepto, es decir, aunque utilizamos IOPS para calcular la velocidad de transmisión anterior, de hecho, la velocidad de transmisión y los IOPS no están directamente relacionados, sin almacenamiento en caché. Los factores determinantes son el método de acceso al sistema de disco y el tamaño de una única IO. Al realizar un acceso aleatorio al disco, podemos usar IOPS para medir el rendimiento de un sistema de disco. La velocidad de transmisión en este momento no será demasiado alta, pero cuando se accede al disco continuamente, el IOPS en este momento no tiene un valor de referencia; La velocidad de transferencia real está limitada por la velocidad de transferencia máxima del disco. Por lo tanto, en aplicaciones reales, IOPS solo se usará para medir el rendimiento de lectura y escritura aleatoria de IO pequeñas, y cuando sea necesario medir el rendimiento de lectura y escritura continua de IO grandes, se debe usar la velocidad de transmisión en lugar de IOPS. .

Tiempo de respuesta de IO (IOResponse Time)

Finalmente, centrémonos en el tiempo de respuesta de IO que puede describir directamente el rendimiento de IO.

El tiempo de respuesta de IO también se denomina latencia de IO (IOLatency). El tiempo de respuesta de IO es el tiempo desde que el kernel del sistema operativo emite un comando de IO de lectura o escritura hasta el kernel del sistema operativo que recibe la respuesta de IO. time, un tiempo de IO único solo se refiere al tiempo que se procesa la operación de IO dentro del disco, y el tiempo de respuesta de IO también incluye el tiempo de espera que pasa la operación de IO en la cola de espera de IO.

Para calcular el tiempo que pasan las operaciones IO en la cola de espera, existe un modelo de cola M/M/1 derivado de la Ley de Little que se puede seguir. Dado que el algoritmo del modelo de cola es relativamente complejo, I. Todavía no lo entiendo muy bien (si alguien domina mejor el modelo M/M/1, bienvenido a brindar orientación), aquí hay una lista de los resultados finales, basados ​​en los datos de IOPS calculados anteriormente:

Tamaño del fragmento de E/S de 8K (135 IOPS, 7,2 ms)

135 => 240,0 ms

105 => 29,5 ms

75 => 15,7 ms

45 => 10,6 ms

Tamaño de fragmento de E/S de 64 KB (116 IOPS, 8,6 ms)

135 => Sin respuesta...

105 => 88,6 ms

75 => 24,6 ms

45 => 14,6 ms

Como se puede ver en los datos anteriores, como el valor real El IOPS del sistema se acerca. Según el valor máximo teórico, el tiempo de respuesta de IO crecerá de forma no lineal. Cuanto más se acerque al valor máximo, mayor será el tiempo de respuesta y será mucho más largo de lo esperado. En términos generales, existe un valor guía del 70% en aplicaciones reales, es decir, en la cola de lectura y escritura de IO, cuando el tamaño de la cola es inferior al 70% del IOPS máximo, el tiempo de respuesta de IO aumentará. Relativamente hablando, es más aceptable decir que una vez que supera el 70%, el tiempo de respuesta aumentará dramáticamente. Por lo tanto, cuando la presión IO de un sistema excede el 70% de la presión máxima tolerable, se deben considerar ajustes o actualizaciones. .

Además, me gustaría agregar que este valor guía del 70% también se aplica al tiempo de respuesta de la CPU. Esto también se ha demostrado en la práctica una vez que la CPU supera el 70%, el sistema se volverá insoportablemente lento. Cosas muy interesantes.

A partir del cálculo del artículo anterior, podemos ver que un disco de velocidad de 15k tiene solo alrededor de 140 IOPS con acceso aleatorio de lectura y escritura, pero en aplicaciones reales podemos ver que existen muchos sistemas de almacenamiento con estándares. 5000 IOPS o incluso más. ¿Cómo surgió un sistema de almacenamiento con un IOPS tan grande? Esto se debe al uso de diversas tecnologías de almacenamiento. Entre estas tecnologías de almacenamiento, las más utilizadas son la memoria caché (Caché) y la matriz redundante de discos (RAID). Este artículo analizará el almacenamiento en caché y las matrices de discos para mejorar el rendimiento de E/S del almacenamiento. .

Caché (Caché)

Entre los diversos productos de almacenamiento disponibles actualmente, el orden de más rápido a más lento debe ser memoria > memoria flash > disco > cinta. Esto significa que cuanto más rápido sea. que el precio es más alto Aunque se dice que la memoria flash tiene un buen impulso de desarrollo, todavía no puede popularizarse debido a problemas de precio, por lo que sigue siendo una era en la que los discos son los reyes. En comparación con la velocidad de la CPU y la memoria, la velocidad del disco es sin duda el mayor cuello de botella en los sistemas informáticos. Por lo tanto, cuando se deben utilizar discos y se desea mejorar el rendimiento, a la gente se le ocurre la idea de incorporar una memoria de alta velocidad en el disco. para guardar datos. Los datos a los que se accede con frecuencia son una solución de compromiso para mejorar la eficiencia de lectura y escritura. Esta memoria integrada se llama caché.

Hablando de caché, esto ahora se usa en todas partes, desde las aplicaciones de la capa superior hasta la capa del sistema operativo, el controlador de disco, así como dentro de la CPU y dentro de un solo disco, todo. Estos cachés existen para el mismo propósito, que es mejorar la eficiencia de la ejecución del sistema.

Por supuesto, aquí solo nos preocupamos por los cachés relacionados con el rendimiento de IO. Varios cachés directamente relacionados con el rendimiento de IO son el caché del sistema de archivos (FileSystem Cache), el caché del controlador de disco (DiskController Cache) y el caché de disco (DiskCache, también conocido como DiskBuffer). , pero la caché del sistema de archivos no se tendrá en cuenta al calcular el rendimiento de un sistema de disco, por lo que nos centraremos en la caché del controlador de disco y la caché del disco.

Ya sea caché del controlador o caché del disco, sus funciones se dividen principalmente en tres partes: almacenamiento en caché de datos, lectura anticipada (Read-ahead) y escritura posterior (Write-back).

Almacenamiento en caché de datos

En primer lugar, los datos leídos por el sistema se almacenarán en caché en el caché, de modo que la próxima vez que sea necesario volver a leer los mismos datos, no habrá Necesita acceder al disco. Simplemente obtenga los datos directamente del caché. Por supuesto, los datos usados ​​no se pueden conservar permanentemente en el caché. Los datos almacenados en caché generalmente se administran mediante el algoritmo LRU. El propósito es borrar del caché los datos que no se han utilizado durante mucho tiempo, mientras que aquellos a los que se accede con frecuencia siempre se pueden conservar. se conservarán en la memoria caché hasta que se borre la memoria caché.

Lectura anticipada

La lectura anticipada se refiere al uso del algoritmo de lectura anticipada para leer datos del disco en el caché por adelantado cuando no hay una solicitud de E/S del sistema, y ​​luego cuando el sistema emite un IO de lectura Al realizar la solicitud, verificará si los datos a leer existen en el caché. Si existe (es decir, un acierto), el resultado se devolverá directamente. Ya no es necesario direccionar, rotar, esperar y leer datos. Si no hay éxito, esta secuencia de operaciones puede ahorrar mucho tiempo y luego emitir un comando de lectura de disco real para obtener los datos requeridos.

La tasa de aciertos del caché tiene una gran relación con el tamaño del caché. En teoría, cuanto más grande es el caché, más datos se pueden almacenar en caché, por lo que, por supuesto, la tasa de aciertos será mayor. el caché no puede ser demasiado grande, después de todo, el costo está ahí. Si un sistema de almacenamiento de gran capacidad está equipado con un caché de lectura pequeño, el problema será mayor en este momento, porque la cantidad de datos en el caché pequeño es muy pequeña y la proporción es muy baja en comparación con todo el sistema de almacenamiento. , por lo que las lecturas aleatorias (en la mayoría de los casos de sistemas de bases de datos), la tasa de aciertos es naturalmente muy baja. Dicho caché no solo no mejora la eficiencia (porque la mayoría de las E/S de lectura tienen que leer el disco), sino que también se desperdiciará. coincidiendo con el caché cada vez.

Para realizar una operación de lectura de IO, la relación entre la cantidad de datos leídos existentes en el caché y todos los datos que se van a leer se denomina tasa de aciertos de caché (ReadCache Hit Radio). no utiliza caché Las lecturas de IO pequeñas y aleatorias pueden alcanzar 150 IOPS, y si su caché puede proporcionar una tasa de aciertos de caché del 10%, entonces sus IOPS en realidad pueden alcanzar 150/(1-10%) = 166.

Reescritura

En primer lugar, la parte del caché utilizada para la función de reescritura se denomina caché de escritura (WriteCache). En un conjunto de almacenamiento con el caché de escritura abierto, una serie de comandos de escritura IO emitidos por el sistema operativo no se ejecutarán uno por uno. Estos comandos de escritura IO se escribirán primero en el caché y luego se realizarán las modificaciones en el caché. modificarlo todo a la vez es equivalente a fusionar las mismas múltiples IO en una, fusionar múltiples IO pequeñas con operaciones continuas en una IO grande y convertir múltiples IO de escritura aleatoria en un conjunto de IO de escritura continua. lo que puede reducir el tiempo consumido por operaciones como el direccionamiento del disco y mejorar en gran medida la eficiencia de la escritura en el disco.

Aunque el caché de lectura obviamente puede mejorar la eficiencia, los problemas que trae también son más graves, porque el caché es el mismo que la memoria normal. Una vez eliminado el caché, se perderán todos los datos durante el funcionamiento. El sistema emite una escritura. Después de escribir el comando IO en el caché, se considera que se escribió correctamente, pero en realidad los datos no se escriben en el disco. Si se corta la energía en este momento, los datos en el caché se escribirán. perderse para siempre Esto debería usarse Se dice que es catastrófico. En la actualidad, la mejor manera de resolver este problema es equipar el caché con una batería para garantizar que los datos del caché se puedan conservar incluso después de que se apague el almacenamiento.

Al igual que la lectura, el caché de escritura también tiene una tasa de aciertos de caché de escritura (WriteCache Hit Radio). Sin embargo, a diferencia del acierto de caché de lectura, incluso si el caché acierta, la operación IO real no se puede eliminar. recién fusionado.

Además de las funciones anteriores, la caché del controlador y la caché del disco también desempeñan otras funciones. Por ejemplo, la caché del disco tiene la función de guardar la cola de comandos IO. Un solo disco solo puede procesar un comando IO. a la vez, pero puede recibir múltiples comandos IO. Estos comandos que ingresan al disco pero no se procesan se almacenan en la cola IO en el caché.

RAID (matriz redundante de discos económicos)

Si es administrador de bases de datos o tiene contacto frecuente con servidores, debe estar familiarizado con RAID. Como la solución de almacenamiento más barata, RAID tiene. ha sido popular durante mucho tiempo en el almacenamiento de servidores. Entre los distintos niveles de RAID, RAID10 y RAID5 (pero RAID5 básicamente ha llegado a su fin, RAID6 está en aumento, eche un vistazo aquí para comprender las razones) son los más utilizados. A continuación, hablaremos sobre el impacto de las matrices de discos en el rendimiento del disco a través de RAID0, RAID1, RAID5, RAID6 y RAID10. Por supuesto, debe estar familiarizado con la estructura y los principios de funcionamiento de cada nivel de RAID antes de leer el siguiente contenido. Así es, para que no se confunda, se recomienda consultar las siguientes entradas en wikipedia: RAID, niveles RAID estándar, niveles RAID anidados.