Prędkość zapisu na karcie SD wydaje się 14 razy wolniejsza niż prędkość odczytu

11

Tego wieczoru pisałem na kartę SD z wewnętrznego czytnika kart Mac Book Air, a wydajność wynosiła 1,4 MB / s. Później przeczytałem przetestowałem go na Raspberry Pi i dostałem 20 MB / s. Jest to karta klasy 6 i żadna z tych liczb nie brzmi realistycznie!

Używam dddo moich testów. Wyniki identycznych testów odczytu i zapisu na obu komputerach:

Raspberry Pi: odczyt 20 MB / s. Zapis 11 MB / s ...
Powietrze: Odczyt 3 MB / s. Napisz 1,4 MB / s

Za pomocą tych poleceń:

Napisz test:

sudo dd if=/dev/zero of=/dev/mmcblk0p3 bs=1M count=400

Przeczytaj test:

sudo dd of=/dev/null if=/dev/mmcblk0p3 bs=1M count=400

Wskazuje to, że postrzegana anomalia była kiepską wydajnością zintegrowanego czytnika kart Mac Book Air SD! Powoduje to bardzo powolne tworzenie obrazu.

ScrollerBlaster
źródło
Sandisk twierdzi, że karty klasy 6 mają prędkość odczytu 20 MB / s, chociaż Kingston twierdzi, że 15 MB / s to prędkość odczytu kart klasy 6. Nie wiem, czy Mac Book ma zintegrowany czytnik kart SD, czy nie. Ale w przypadku wersji zewnętrznych (USB 2.0) jakość czytnika kart SD (jakie układy używane itp.) Ma również znaczenie dla ogólnej wydajności. Ale czytanie z tymi urządzeniami zawsze jest szybsze niż pisanie.
ikku
Dzięki. Jest zintegrowany. Całkiem dobra wydajność odczytu. Naprawdę zła wydajność zapisu.
ScrollerBlaster

Odpowiedzi:

6

Klasa prędkości karty SD określa minimalną wydajność odczytu / zapisu, jaką powinna mieć karta podczas nagrywania wideo. Numer klasy to dolny limit prędkości w MB / s, który powinieneś otrzymać podczas korzystania z karty.

Należy jednak pamiętać, że czytanie z karty jest zwykle znacznie prostsze (a zatem szybsze) niż pisanie. Właśnie dlatego zwykła karta klasy 6 będzie miała prędkość zapisu 6 MB / s przy prędkości odczytu 15-20 MB / s (ale tylko 6 MB / s jest gwarantowane).

Szybkość odczytu / zapisu może być ograniczona nie tylko kartą, ale także wieloma różnymi czynnikami, zarówno sprzętowymi, jak i programowymi. Szczególnie może to być ograniczone niektórymi problemami z czytnikiem kart.

Więc w twojej sytuacji wydaje się, że twoja karta ma naprawdę niską wydajność na twoim Mac Book Air, podczas gdy ma odpowiednią (i realistyczną) wydajność na RaspberryPi. Nie możemy jednak być pewni, ponieważ przetestowałeś prędkość zapisu na Mac Book i prędkość odczytu na RaspberryPi i jak wspomniałem wcześniej, nie są one porównywalne. Trudno też skomentować, dlaczego otrzymujesz takie wyniki, ponieważ nie określiłeś, w jaki sposób testujesz te prędkości.

Krzysztof Adamski
źródło
Muszę przetestować odczyt i zapis na obu platformach. Używamdd
ScrollerBlaster
@ ScrollerBlaster: Nie można porównywać prędkości odczytu i zapisu względem siebie. Podobnie, podczas testowania praktycznie wszystkiego, dobrą zasadą jest zmiana tylko jednej rzeczy na raz. Ale zmieniłeś wszystko (system operacyjny, komputer hosta, czytnik kart), ale jedna rzecz (karta SD) w konfiguracji, aby nie przyniosło to znaczących rezultatów.
Krzysztof Adamski
Powiedziałem, że porównam odczyt i zapis w tym samym systemie operacyjnym. Czy masz problem z tym podejściem?
ScrollerBlaster
@ ScrollerBlaster: Nie, wcale nie. Chciałem tylko wyjaśnić, co mam na myśli, mówiąc, że nie są porównywalne w mojej odpowiedzi. Pamiętaj, że ta odpowiedź jest nie tylko dla ciebie, ale dla wszystkich innych osób, które mogą mieć podobny problem w przyszłości, dlatego staram się, aby moja rada była jak najbardziej ogólna.
Krzysztof Adamski
Kiedy zauważyłeś w swoim poście, że mój test nie porównywał jabłek i pomarańczy, był to bardzo ważny punkt. W moim pierwszym komentarzu stwierdziłem, że powtórzę test, co oznacza, że ​​powtórzę czytanie i pisanie na obu platformach. Odtąd twoje dalsze porady dla mnie były niepotrzebne. W przyszłości wszelkie wnioski dotyczące powietrza w porównaniu z PI są nadal przedwczesne. Najbardziej odpowiednim testem będzie test odczytu i zapisu na PI, biorąc pod uwagę, że jest to forum PI. Jeśli masz ddkomendy do wykonania bezpiecznego testu zapisu, użyję ich!
ScrollerBlaster,
10

Aby uzyskać najlepszą prędkość z gniazda SD komputera MacBook, musisz użyć urządzenia typu „raw disk”.

To jest karta SanDisk Ultra Class 10:

~/Desktop/rpi $ sudo dd if=2012-12-16-wheezy-raspbian.img of=/dev/disk1 bs=8m
231+1 records in
231+1 records out
1939865600 bytes transferred in 1076.078932 secs (1802717 bytes/sec)

Porównaj to do używania /dev/rdisk1zamiast/dev/disk1

~/Desktop/rpi $ sudo dd if=2012-12-16-wheezy-raspbian.img of=/dev/rdisk1 bs=1m
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 129.712100 secs (14955163 bytes/sec)

1,8 MB / s w porównaniu do 14,9 MB / s - prawie 10- krotna poprawa!

Bert
źródło
jaka jest różnica między dyskiem a dyskiem rdisk?
valentt
„Są bliżej fizycznego dysku niż bufor bufora. Z drugiej strony, węzły / dev / disk są buforowanymi urządzeniami blokowymi i są używane głównie przez kod systemu plików jądra.” - Sprawdź hidutilstronę podręcznika, aby uzyskać więcej informacji.
Bert
1
Jest to potencjalnie mylące, ponieważ rozmiar bloku zmienił się między dwoma testami.
Nick
FWIW: Zmieniłem rozmiar bloku na 1 m, a urządzenie / dev / rdisk1 i moja prędkość zapisu wzrosła z ~ 1,75 MB / s do ~ 11,4 MB / s z kartą klasy 10.
Gardner Bickford
Mogę to potwierdzić - pisanie obrazu dla mojej karty SD RPi jest 20x szybsze, gdy używam rdisk2. Utrzymałem stały rozmiar bloku dla tego (4m). Używając / dev / disk2, gdd zapisuje z prędkością 197 kB / s. Korzystanie z / dev / rdisk2, to pisze na 10,6 MB / s
judepereira
1

Możesz także użyć tych poleceń do testów porównawczych bez wpływu pamięci podręcznej ładowanej do pamięci RAM:

odczyt wzorca prędkości: $ sudo dd if = / dev / sdX1 of = / dev / zero bs = 1M count = 400 iflag = direct

test prędkości zapisu: $ sudo dd if = / dev / zero of = / dev / sdX1 bs = 1M count = 400 skip = 1000 oflag = direct

Pamiętaj, aby zawsze używać oflag = direct i iflag = direct, gdy wykonujesz odpowiednio test porównawczy zapisu i odczytu, w przeciwnym razie ryzykujesz otrzymaniem wyników, które w rzeczywistości są czasami zapisu i odczytu plików.

Valentt
źródło
0

Na moim MBP 2015 z systemem OSX 10.11.5 otrzymałem następujące prędkości zapisu podczas używania dd:

podczas zapisu na / dev / disk: 1,80 MB / s podczas zapisu na / dev / rdisk: 12,80 MB / s

Ks. Austin
źródło