velocidad transferencia secuencial saber mide medir iops escritura elegir duro disco como aleatorio acceso memory-management operating-system disk virtual-memory ssd

memory-management - secuencial - ssd velocidad de transferencia



Diferencia entre escritura secuencial y escritura aleatoria (1)

Cuando las personas hablan de escrituras secuenciales y aleatorias en un archivo, generalmente establecen una distinción entre la escritura sin búsquedas intermedias ("secuenciales"), frente a un patrón de búsqueda-escritura-búsqueda-escritura-búsqueda-escritura, etc. ( "aleatorio").

La distinción es muy importante en los sistemas tradicionales basados ​​en disco, donde cada búsqueda de disco tomará alrededor de 10 ms. La escritura secuencial de datos en ese mismo disco requiere aproximadamente 30 ms por MB. Entonces, si escribe secuencialmente 100MB de datos en un disco, tomará alrededor de 3 segundos. Pero si realiza 100 escrituras aleatorias de 1MB cada una, tomará un total de 4 segundos (3 segundos para la escritura real, y 10ms * 100 == 1 segundo para todas las búsquedas).

A medida que cada escritura aleatoria se reduce, paga más y más de una penalización para el disco que busca. En el caso extremo en que realice 100 millones de escrituras aleatorias de 1 byte, seguirá generando 3 segundos para todas las escrituras reales, ¡pero ahora tendría 11,57 días de trabajo por hacer! Entonces, claramente, el grado en el que sus escrituras son secuenciales frente a aleatorias puede afectar el tiempo que lleva realizar su tarea.

La situación es un poco diferente cuando se trata de flash. Con flash, no tiene una cabeza física de disco que deba moverse. (Aquí es de donde proviene el costo de búsqueda de 10 ms para un disco tradicional). Sin embargo, los dispositivos flash tienden a tener tamaños de página grandes (el tamaño de página "típico" más pequeño es de alrededor de 512 bytes según la wikipedia , y los tamaños de página 4K parecen ser comunes también). Por lo tanto, si escribe un número pequeño de bytes, el flash aún tiene una sobrecarga, ya que debe leer una página completa, modificar los bytes que está escribiendo y luego escribir de nuevo la página completa. No conozco los números característicos del flash en la parte superior de mi cabeza. Pero la regla de oro es que en flash si cada una de sus escrituras es generalmente comparable en tamaño al tamaño de página del dispositivo, entonces no verá mucha diferencia de rendimiento entre las escrituras secuenciales y aleatorias. Si cada una de sus escrituras es pequeña en comparación con el tamaño de página del dispositivo, verá cierta sobrecarga al hacer escrituras aleatorias.

Ahora, para todo lo anterior, es cierto que en la capa de aplicación se oculta mucho de usted. Hay capas en el kernel, controlador de disco / flash, etc. que podrían, por ejemplo, intercalar búsquedas no obvias en el medio de su escritura "secuencial". Pero en la mayoría de los casos, escribir "se ve" secuencialmente en la capa de aplicación (sin búsquedas, muchas E / S continuas) tendrá un rendimiento de escritura secuencial mientras que la escritura que "se ve" al azar en la capa de aplicación tendrá (generalmente peor) rendimiento de escritura aleatoria.

¿Cuál es la diferencia entre la escritura secuencial y la escritura aleatoria en caso de: - 1) Sistemas basados ​​en disco 2) Sistemas basados ​​en SSD [Dispositivo Flash]

Cuando la aplicación escribe algo y la información / datos necesitan ser modificados en el disco, ¿cómo sabemos si es una escritura secuencial o una escritura aleatoria? Hasta este punto, una escritura no puede distinguirse como "secuencial" o "aleatoria" .La escritura solo se almacena en el búfer y luego se aplica al disco cuando limpiamos el búfer.

Por favor, corríjame si estoy equivocado.