Que se passe-t-il dans la commande
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
Où les zéros vont-ils réellement et que se passe-t-il en général? La vitesse est de 905 Mo / s
Si je dd ramdisk la vitesse n'est que de 388 Mo / s. Et si je dd
vers mon disque dur, la vitesse n'est que de 63,2 Mo / s
/dev/null
est une bonne destination pour tester / chronométrer les opérations de lecture ./dev/zero
est une bonne source pour tester / chronométrer les opérations d' écriture . Combiner cette source et cette destination en une seule opération n'a pas beaucoup de sens. Je ne sais même pas si cela fournit un numéro de surcharge significatif.Réponses:
/dev/zero
fournit un flux sans fin de zéro octet lors de la lecture. Cette fonction est fournie par le noyau et ne nécessite pas d'allocation de mémoire. Toutes les écritures/dev/null
sont supprimées silencieusement.Par conséquent, lorsque vous effectuez la
dd
, le système génère 500 mégaoctets en zéro octet qui sont simplement supprimés. À l'exception d'un tampon temporaire, aucune donnée n'est stockée avant, pendant ou après cette opération.La vitesse du transfert de
/dev/zero
à/dev/null
est déterminée principalement par la vitesse de votre processeur et des appels système pertinents. (Dans votre cas, le tampon fait 500 Mo, et donc l'opération teste également la vitesse de votre mémoire.)la source
Je vais traduire cette commande pour vous:
Dupliquez les données (
dd
) du fichier d'entrée (if
) de/dev/zero
(fourniture illimitée virtuelle de0
) dans le fichier de sortie (of
) de/dev/null
(gouffre virtuel) en utilisant des blocs de taille 500M (bs
= taille de bloc) et répétez cela (count
) une seule fois (1
).En général, cette commande doit mesurer uniquement les vitesses de mémoire et de bus. Cependant, il peut échouer si vous ne disposez pas de 500 Mo de RAM. Donc, dans un sens, il compare également implicitement la vitesse à laquelle votre système d'exploitation peut allouer de gros morceaux de mémoire.
la source
/ dev / null est un trou noir. Il n'est pas précis pour tester les opérations d'écriture normales car il n'écrit pas réellement sur le disque comme le ferait un fichier normal. Plutôt que d'écrire la tête sur le disque, les données sont rejetées immédiatement lors de l'écriture sur le périphérique, ce qui les rendra toujours plus rapides que les écritures locales normales.
/ dev / zero est similaire pour les lectures. Il ne nécessite pas de mouvement de tête pour lire, c'est juste une quantité illimitée de caractères nuls, donc il lira toujours plus vite que n'importe quelle lecture locale.
En d'autres termes, cela revient à tester dans un vide et ne donnera pas une image précise de ce que les lectures et écritures locales normales devraient produire.
la source
/dev/null
n'est nulle part; les données qui y sont écrites sont simplement supprimées.Votre disque virtuel possède un système de fichiers qu'il doit utiliser.
dd
doit créer une entrée de système de fichiers et écrire en suivant les règles du système de fichiers. Votre système d'exploitation utilise également votre mémoire pour d'autres choses en même temps, de sorte que votre opération d'écriture obtient ce qui reste.Les disques durs non SSD sont tout simplement lents, ce qui est également correct.
la source