Co dzieje się w poleceniu
sudo dd if=/dev/zero of=/dev/null bs=500M count=1.
Gdzie właściwie idą zera i co się ogólnie dzieje? Prędkość wynosi 905 MB / s
Jeśli dd do ramdysku, prędkość wynosi tylko 388 MB / s. A jeśli ja dd
do mojego dysku twardego, prędkość wynosi tylko 63,2 MB / s
/dev/null
jest dobrym miejscem do testowania / odczytu operacji odczytu ./dev/zero
jest dobrym źródłem do testowania / synchronizacji zapisu . Łączenie tego źródła i miejsca docelowego w jednej operacji nie ma większego sensu. Nie jestem nawet pewien, czy zapewnia to jakąkolwiek znaczącą liczbę kosztów ogólnych.Odpowiedzi:
/dev/zero
zapewnia niekończący się strumień zerowych bajtów podczas odczytu. Ta funkcja jest udostępniana przez jądro i nie wymaga przydzielania pamięci. Wszystkie zapisy do/dev/null
są usuwane po cichu.W rezultacie podczas wykonywania
dd
system generuje 500 megabajtów w zerowych bajtach, które po prostu są odrzucane. Z wyjątkiem bufora tymczasowego żadne dane nie są przechowywane przed, podczas lub po tej operacji.Szybkość transferu z
/dev/zero
do/dev/null
zależy przede wszystkim od szybkości procesora i odpowiednich wywołań systemowych. (W twoim przypadku bufor ma 500 MB, a zatem operacja sprawdza również szybkość pamięci.)źródło
Przetłumaczę ci to polecenie:
Zduplikuj dane (
dd
) z pliku wejściowego (if
)/dev/zero
(wirtualnego nieograniczonego dostarczania0
) do pliku wyjściowego (of
)/dev/null
(wirtualnego otworu) za pomocą bloków o rozmiarze 500M (bs
= rozmiar bloku) i powtórz to (count
) tylko raz (1
).Ogólnie rzecz biorąc, to polecenie powinno mierzyć tylko pamięć i prędkości magistrali. Może się jednak nie powieść, jeśli nie masz dostępnej 500 MB pamięci RAM. W pewnym sensie pośrednio porównuje również szybkość, z jaką Twój system operacyjny może przydzielić duże porcje pamięci.
źródło
/ dev / null to czarna dziura. Nie jest dokładny do testowania normalnych operacji zapisu, ponieważ tak naprawdę nie zapisuje na dysk tak jak normalny plik. Zamiast zapisywać dane na dysku, dane są odrzucane natychmiast po zapisaniu na urządzeniu, dzięki czemu zawsze będą szybsze niż zwykłe zapisy lokalne.
/ dev / zero jest podobny do odczytów. Odczytywanie nie wymaga ruchu głowy, jest to po prostu nieograniczona ilość znaków zerowych, więc zawsze będzie czytał szybciej niż jakikolwiek odczyt lokalny.
Innymi słowy, jest to jak testowanie w pustce i nie da dokładnego obrazu tego, co powinny dać normalne lokalne odczyty i zapisy.
źródło
/dev/null
nigdzie nie ma; zapisane na nim dane są po prostu usuwane.Twój ramdysk ma system plików, z którego musi korzystać.
dd
musi utworzyć pozycję systemu plików i napisać zgodnie z zasadami systemu plików. Twój system operacyjny wykorzystuje pamięć do innych rzeczy w tym samym czasie, więc operacja zapisu pobiera to, co zostało.Dyski twarde inne niż SSD są po prostu wolne, więc jest to również poprawne.
źródło