Diferencia entre escritura secuencial y escritura aleatoria


¿ Cuál es la diferencia entre escritura secuencial y 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 necesita ser modificada en el disco, ¿cómo sabemos si se trata de una escritura secuencial o aleatoria write.As hasta este punto una escritura no puede ser distinguida como "secuencial" o "aleatoria".La escritura solo se almacena en búfer y luego se aplica al disco cuando limpiaremos el búfer.

Por favor corrígeme si me equivoco.

Author: Kaizen, 2010-01-20

1 answers

Cuando la gente habla de secuencial vs aleatorio escribe en un archivo, generalmente están haciendo una distinción entre escribir sin búsquedas intermedias ("secuencial"), vs.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 tomará alrededor de 10 ms. La escritura secuencial de datos en ese mismo disco toma alrededor de 30 ms por MB. Así que si escribe secuencialmente 100MB de datos a un disco, tomará alrededor de 3 segundos. Pero si haces 100 escrituras aleatorias de 1MB cada una, eso tomará un total de 4 segundos (3 segundos para la escritura real, y 10ms*100 == 1 segundo para toda la búsqueda).

A medida que cada escritura aleatoria se hace más pequeña, pagas más y más de una penalización por el disco busca. En el caso extremo en el que realizas 100 millones de escrituras aleatorias de 1 byte, todavía obtendrás 3 segundos netos para todas las escrituras reales, pero ahora tendrías 11.57 días de buscar hacer! Tan claramente el grado en que sus escrituras son secuenciales vs aleatorios realmente puede afectar el tiempo que se tarda en 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. (Aquí es donde el costo de búsqueda de 10 ms proviene de 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 la página 4K los tamaños parecen ser comunes también). Así que si usted está escribiendo un pequeño número de bytes, Flash todavía tiene sobrecarga en que usted debe leer una página entera, modificar los bytes que está escribiendo, y luego escribir de nuevo la página entera. No conozco los números característicos de Flash en la parte superior de mi 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 aleatorio y secuencial escribir. Si cada una de tus escrituras es pequeña en comparación con el tamaño de la página del dispositivo, entonces verás algo de sobrecarga al hacer escrituras aleatorias.

Ahora, para todo lo anterior, es cierto que en la capa de aplicación mucho está oculto para usted. Hay capas en el kernel, controlador de disco/flash, etc. eso podría, por ejemplo, interponer búsquedas no obvias en medio de su escritura "secuencial". Pero en la mayoría de los casos, escribir que" se ve " secuencial en la capa de aplicación (no se busca, un montón de continua I / O) tendrá un rendimiento de escritura secuencial, mientras que la escritura que "parece" aleatoria en la capa de aplicación tendrá el (generalmente peor) rendimiento de escritura aleatoria.

 68
Author: Will Robinson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-18 16:41:07