Que pasa en el comando
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
¿A dónde van realmente los ceros y, en general, qué sucede? La velocidad es de 905 MB / s
Si me dd a ramdisk la velocidad es de sólo 388 MB / s. Y si dd
a mi disco duro la velocidad es de solo 63.2 MB / s
/dev/null
es un buen destino para probar / sincronizar operaciones de lectura ./dev/zero
es una buena fuente para probar / sincronizar operaciones de escritura . La combinación de este origen y destino en una operación no tiene mucho sentido. Ni siquiera estoy seguro si esto proporciona algún número de gastos generales significativo.Respuestas:
/dev/zero
proporciona un flujo interminable de cero bytes cuando se lee. El núcleo proporciona esta función y no requiere asignar memoria. Todas las escrituras se/dev/null
dejan caer en silencio.Como resultado, cuando realiza el
dd
, el sistema genera 500 megabytes en cero bytes que simplemente se descartan. A excepción de un búfer temporal, no se almacenan datos antes, durante o después de esta operación.La velocidad de la transferencia de
/dev/zero
a/dev/null
está determinada principalmente por la velocidad de su procesador y las llamadas relevantes del sistema. (En su caso, el búfer es de 500 MB y, por lo tanto, la operación también prueba la velocidad de su memoria).fuente
Traduciré este comando para ti:
Duplique datos (
dd
) del archivo de entrada (if
) de/dev/zero
(suministro ilimitado virtual de0
's) en el archivo de salida (of
) de/dev/null
(sumidero virtual) usando bloques de tamaño 500M (bs
= tamaño de bloque) y repita esto (count
) solo una vez (1
).En general, este comando debe medir solo la memoria y las velocidades del bus. Sin embargo, puede fallar si no tiene 500 MB de RAM disponibles. Entonces, en cierto sentido, también compara implícitamente qué tan rápido su sistema operativo puede asignar grandes fragmentos de memoria.
fuente
/ dev / null es un agujero negro. No es preciso para probar operaciones de escritura normales, ya que en realidad no escribe en el disco como lo haría un archivo normal. En lugar de que la cabeza escriba en el disco, los datos se descartan inmediatamente después de la escritura en el dispositivo, por lo que siempre será más rápido que las escrituras locales normales.
/ dev / zero es similar para las lecturas. No requiere movimiento de cabeza para leer, es solo un suministro ilimitado de caracteres nulos, por lo que siempre leerá más rápido que cualquier lectura local.
En otras palabras, esto es como probar en un vacío y no dará una imagen precisa de lo que deberían producir las lecturas y escrituras locales normales.
fuente
/dev/null
no está en ninguna parte; los datos escritos en él simplemente se eliminan.Su ramdisk tiene un sistema de archivos que tiene que usar.
dd
tiene que crear una entrada del sistema de archivos y escribir siguiendo las reglas del sistema de archivos. Además, su sistema operativo está utilizando su memoria para otras cosas al mismo tiempo, por lo que su operación de escritura obtiene lo que queda.Los discos duros que no son SSD son simplemente lentos, por lo que también es correcto.
fuente