Pregunta

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

Cuando la aplicación escribe algo y es necesario modificar la información/datos en el disco, ¿cómo sabemos si se trata de una escritura secuencial o aleatoria? Hasta este punto, una escritura no se puede distinguir como "secuencial" o "aleatoria" La escritura simplemente se almacena en el búfer y luego se aplica al disco cuando vaciamos el búfer.

Por favor, corríjame si estoy equivocado.

¿Fue útil?

Solución

Cuando la gente habla de secuencial vs aleatorio escribe en un archivo, generalmente hacen una distinción entre escritura sin búsquedas intermedias ("secuencial") y escritura sin búsquedas intermedias ("secuencial").un patrón de buscar-escribir-buscar-escribir-buscar-escribir, etc.("aleatorio").

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

A medida que cada escritura aleatoria se hace más pequeña, usted paga una penalización cada vez mayor por las búsquedas en el disco.En el caso extremo en el que realice 100 millones de escrituras aleatorias de 1 byte, aún obtendrá 3 segundos netos para todas las escrituras reales, pero ahora tendrá 11,57 días ¡Vale la pena intentar hacerlo!Claramente, el grado en que sus escrituras son secuenciales vs.el azar realmente puede afectar el tiempo que lleva realizar su tarea.

La situación es un poco diferente cuando se trata de flash.Con flash, no tienes un cabezal de disco físico que debas mover.(De aquí 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 Wikipedia, y los tamaños de página 4K también parecen ser comunes).Entonces, si está escribiendo una pequeña cantidad de bytes, Flash todavía tiene una sobrecarga en el sentido de que debe leer una página completa, modificar los bytes que está escribiendo y luego volver a escribir la página completa.No conozco los números característicos del destello que tengo en la cabeza.Pero la regla general 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 aleatorias y secuenciales.Si cada una de sus escrituras es pequeña en comparación con el tamaño de la página del dispositivo, verá cierta sobrecarga al realizar escrituras aleatorias.

Ahora bien, por todo lo anterior, es cierto que en la capa de aplicación hay muchas cosas que se le ocultan.Hay capas en el kernel, disco/controlador flash, etc.eso podría, por ejemplo, intercalar búsquedas no obvias en medio de su escritura "secuencial".Pero en la mayoría de los casos, la escritura que "parece" secuencial en la capa de aplicación (sin búsquedas, muchas E/S continuas) tendrá un rendimiento de escritura secuencial, mientras que la escritura que "parece" aleatoria en la capa de aplicación tendrá (generalmente peor) rendimiento de escritura aleatoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top