¿Qué tiene de malo mi velocidad a 4K? ¿Por qué es tan lento? ¿O se supone que es así?
¿Está bien esa velocidad? ¿Por qué tengo una velocidad tan baja a 4K?
¿Qué tiene de malo mi velocidad a 4K? ¿Por qué es tan lento? ¿O se supone que es así?
¿Está bien esa velocidad? ¿Por qué tengo una velocidad tan baja a 4K?
Respuestas:
Lo que está encontrando es típico de los HDD mecánicos, y uno de los principales beneficios de los SSD: los HDD tienen un rendimiento de acceso aleatorio terrible .
En CrystalDiskMark, "Seq" significa acceso secuencial mientras que "4K" significa acceso aleatorio (en fragmentos de 4kB a la vez, porque los bytes individuales serían demasiado lentos y poco realistas 1 ).
En términos generales, hay dos formas diferentes de acceder a un archivo.
El acceso secuencial significa que lee o escribe el archivo más o menos un byte tras otro. Por ejemplo, si está viendo un video, lo cargará de principio a fin. Si está descargando un archivo, se descarga y se escribe en el disco de principio a fin.
Desde la perspectiva del disco, está viendo comandos como "leer bloque # 1, leer bloque # 2, leer bloque # 3, leer byte bloque # 4" 1 .
El acceso aleatorio significa que no hay un patrón obvio para las lecturas o escrituras. Esto no tiene que significar realmente al azar; realmente significa "no secuencial". Por ejemplo, si está iniciando muchos programas a la vez, necesitarán leer muchos archivos dispersos por su disco.
Desde la perspectiva de la unidad, está viendo comandos como "leer bloque # 56, leer bloque # 5463, leer bloque # 14, leer bloque # 5"
He mencionado bloques un par de veces. Debido a que las computadoras manejan tamaños tan grandes (1 MB ~ = 1000000 B), incluso el acceso secuencial es ineficiente si tiene que pedirle a la unidad de disco por cada byte individual; hay demasiada charla. En la práctica, el sistema operativo solicita bloques de datos del disco a la vez.
Un bloque es solo un rango de bytes; por ejemplo, el bloque # 1 podría ser bytes # 1- # 512, el bloque # 2 podría ser bytes # 513- # 1024, etc. Estos bloques son 512 Bytes o 4096 Bytes grandes, dependiendo de la unidad. Pero incluso después de tratar con bloques en lugar de bytes individuales, el acceso secuencial a bloques es más rápido que el acceso aleatorio a bloques.
El acceso secuencial es generalmente más rápido que el acceso aleatorio. Esto se debe a que el acceso secuencial permite que el sistema operativo y la unidad pronostiquen lo que se necesitará a continuación y carguen una gran parte por adelantado. Si ha solicitado bloques "1, 2, 3, 4", el sistema operativo puede suponer que querrá "5, 6, 7, 8" a continuación, por lo que le indica a la unidad que lea "1, 2, 3, 4 , 5, 6, 7, 8 "de una vez. Del mismo modo, la unidad puede leer el almacenamiento físico de una vez, en lugar de "buscar 1, leer 1,2,3,4, buscar 5, leer 5,6,7,8".
Oh, mencioné buscar algo. Los discos duros mecánicos tienen un tiempo de búsqueda muy lento debido a cómo están dispuestos físicamente: consisten en una serie de discos metalizados pesados que giran, con brazos físicos que se mueven hacia adelante y hacia atrás para leer el disco. Aquí hay un video de un HDD abierto donde puede ver los discos giratorios y los brazos en movimiento.
Imagen de http://www.realtechs.net/data%20recovery/process2.html
Esto significa que en cualquier momento, solo se puede leer el bit de datos debajo de la cabeza al final del brazo. La unidad necesita esperar dos cosas: debe esperar a que el brazo se mueva al anillo derecho ("pista") del disco, y también debe esperar a que el disco gire para que los datos necesarios estén bajo la lectura cabeza. Esto se conoce como buscar 2 . Tanto los brazos que giran como los que se mueven requieren tiempo físico para moverse, y no se pueden acelerar mucho sin correr el riesgo de sufrir daños.
Esto generalmente lleva mucho, mucho tiempo, mucho más tiempo que la lectura real. Estamos hablando> 5 ms solo para llegar a donde vive el byte solicitado, mientras que la lectura real del byte promedia aproximadamente 0.00000625 ms por lectura de byte secuencial (o 0.003125 ms por bloque de 512 B).
El acceso aleatorio, por otro lado, no tiene el beneficio de la previsibilidad. Entonces, si desea leer 8 bytes aleatorios, tal vez de los bloques "8,34,76,996,112,644,888,341", la unidad debe ir "buscar 8, leer 8, buscar 34, leer 34, buscar 76, leer 76, ..." . ¿Te das cuenta de cómo necesita buscar de nuevo para cada bloque? En lugar de un promedio de 0.003125ms por bloque secuencial de 512 B, ahora es un promedio de (5ms de búsqueda + 0.003125ms de lectura) = 5.003125ms por bloque. Eso es mucho, muchas veces más lento. Miles de veces más lento, de hecho.
Afortunadamente, tenemos una solución ahora: SSD.
Una SSD, una unidad de estado sólido , es, como su nombre lo indica, estado sólido . Eso significa que no tiene partes móviles . Más aún, la forma en que se presenta un SSD significa que no hay (efectivamente 3 ) necesidad de buscar la ubicación de un byte; Ya lo sabe . Es por eso que un SSD tiene una brecha de rendimiento mucho menor entre el acceso secuencial y aleatorio.
Todavía hay una brecha, pero eso se puede atribuir en gran medida a la imposibilidad de predecir lo que viene después y a precargar esos datos antes de solicitarlos.
1 Con mayor precisión, las unidades LBA se direccionan en bloques de 512 bytes (512n / 512e) o 4kB (4Kn) por razones de eficiencia. Además, los programas reales casi nunca necesitan un solo byte a la vez.
2 Técnicamente, la búsqueda solo se refiere al recorrido del brazo. La espera de que los datos giren debajo de la cabeza es una latencia rotacional además del tiempo de búsqueda.
3 Técnicamente, tienen tablas de búsqueda y reasignación por otras razones, por ejemplo, nivelación de desgaste, pero son completamente insignificantes en comparación con un HDD ...
Notice how it needs to look for every single byte?
:: reemplace byte
con block
(y cambie el ejemplo en consecuencia). La unidad busca la parte de 4k (que podría dispersarse aún más en 512bytes, pero no más bajo que esto. ¡No busca entre cada byte!, Busca entre cada bloque si el siguiente bloque no está justo detrás (lo que sucede mucho en discos fragmentados) .Y buscar (mover la cabeza alrededor del plato y esperar a que el bloque pase debajo) es lo que lleva mucho tiempo (unos pocos milisegundos)
Como ya se señaló en otras respuestas, "4K" casi seguramente se refiere al acceso aleatorio en bloques de tamaño 4 KiB.
Cada vez que se le pide a un disco duro (no un SSD) que lea o escriba datos, hay dos retrasos importantes:
Ambos son de una cantidad de tiempo relativamente constante para cualquier unidad dada. La latencia de búsqueda es una función de qué tan rápido se puede mover la cabeza y qué tan lejos necesita moverse, y la latencia rotacional es una función de qué tan rápido está girando el plato. Además, no han cambiado mucho en las últimas décadas. Los fabricantes solían usar tiempos promedio de búsqueda, por ejemplo, en anuncios; prácticamente dejaron de hacerlo cuando había poco o ningún desarrollo en el área. Ningún fabricante, especialmente en un entorno de alta competencia, quiere que sus productos no se vean mejor que los de sus competidores.
Un disco duro de escritorio típico gira a 7200 rpm, mientras que una unidad portátil típica puede girar a alrededor de 5000 rpm. Esto significa que cada segundo pasa por un total de 120 revoluciones (unidad de escritorio) o alrededor de 83 revoluciones (unidad de computadora portátil). Dado que, en promedio, el disco tendrá que girar media revolución antes de que el sector deseado pase por debajo de la cabeza, esto significa que podemos esperar que el disco pueda atender aproximadamente el doble de las solicitudes de E / S por segundo, suponiendo que
Por lo tanto, deberíamos ser capaces de funcionar en el orden de 200 E / S por segundo si los datos a los que se les solicita acceso (para leer o escribir) están relativamente localizados físicamente, lo que resulta en una latencia rotacional como factor limitante. En el caso general, esperaríamos que el disco sea capaz de funcionar en el orden de 100 E / S por segundo si los datos se extienden por el plato o platos, lo que requiere una búsqueda considerable y hace que la latencia de búsqueda sea el factor limitante . En términos de almacenamiento, este es el " IOPSrendimiento "del disco duro; esto, no el rendimiento de E / S secuencial, suele ser el factor limitante en los sistemas de almacenamiento del mundo real. (Esta es una gran razón por la cual los SSD son mucho más rápidos de usar: eliminan la latencia rotacional y reduzca enormemente la latencia de búsqueda, ya que el movimiento físico del cabezal de lectura / escritura se convierte en una búsqueda de tabla en las tablas de capas de mapeo flash, que se almacenan electrónicamente).
Las escrituras suelen ser más lentas cuando hay una descarga de caché involucrada. Normalmente, los sistemas operativos y los discos duros intentan reordenar las escrituras aleatorias para convertir las E / S aleatorias en E / S secuenciales donde sea posible, para mejorar el rendimiento. Si hay una barrera de escritura o vaciado de caché explícito , esta optimización se elimina con el fin de garantizar que el estado de los datos en el almacenamiento persistente sea coherente con lo que el software espera. Básicamente, se aplica el mismo razonamiento durante la lectura cuando no hay caché de disco involucrado, ya sea porque no existe ninguno (poco común hoy en día en los sistemas de escritorio) o porque el software lo omite deliberadamente (lo que a menudo se hace al medir el rendimiento de E / S). Ambos reducen el rendimiento potencial máximo de IOPS al del caso más pesimista, o 120 IOPS para una unidad de 7200 rpm.
Lo cual coincide con sus números casi exactamente. La E / S aleatoria con tamaños de bloque pequeños es un factor decisivo para el rendimiento absoluto de los discos duros giratorios, por lo que también es una métrica relevante.
En cuanto a las E / S puramente secuenciales, el rendimiento en el rango de 150 MB / s no es del todo irrazonable para los discos duros rotativos modernos. Pero muy poca E / S del mundo real es estrictamente secuencial, por lo que en la mayoría de las situaciones, el rendimiento de E / S puramente secuencial se convierte más en un ejercicio académico que en una indicación del rendimiento del mundo real.
4K se refiere a E / S aleatorias . Esto significa que se le pide al disco que acceda a pequeños bloques (4 KB de tamaño) en puntos aleatorios dentro del archivo de prueba. Esta es una debilidad de los discos duros; La capacidad de acceder a los datos a través de diferentes regiones del disco está limitada por la velocidad a la que gira el disco y la rapidez con que se mueven los cabezales de lectura y escritura. Las E / S secuenciales , donde se accede a bloques consecutivos, son mucho más fáciles porque la unidad simplemente puede leer o escribir los bloques a medida que el disco gira.
Una unidad de estado sólido (SSD) no tiene ese problema con las E / S aleatorias, ya que todo lo que tiene que hacer es buscar dónde se almacenan los datos en la memoria subyacente (generalmente flash NAND, puede ser 3D XPoint o incluso DRAM) y leer o escriba los datos en la ubicación adecuada. Los SSD son completamente electrónicos y no necesitan esperar en un disco giratorio o un cabezal móvil de lectura y escritura para acceder a los datos, lo que los hace mucho más rápidos que los discos duros a este respecto. Es por esta razón que la actualización a un SSD aumenta dramáticamente el rendimiento del sistema.
Nota al margen: el rendimiento secuencial de E / S en un SSD a menudo es mucho más alto que en un disco duro también. Un SSD típico tiene varios chips NAND conectados en paralelo al controlador de memoria flash y puede acceder a ellos simultáneamente. Al distribuir los datos entre estos chips, se logra un diseño de unidad similar a RAID 0, lo que aumenta enormemente el rendimiento. (Tenga en cuenta que muchas unidades más nuevas, especialmente las más baratas, usan un tipo de NAND llamado TLC NAND que tiende a ser lento al escribir datos. Las unidades con TLC NAND a menudo usan un pequeño búfer de NAND más rápido para proporcionar un mayor rendimiento para operaciones de escritura más pequeñas, pero pueden disminuya drásticamente una vez que el búfer esté lleno).