Jaka jest najbardziej wydajna konfiguracja sprzętu?

35

Wiem, że dokładne liczby testów będą różne dla różnych producentów, ale ogólnie, jeśli weźmie się pod uwagę tylko dyski flash wyższej klasy, karty SD i dyski twarde USB, a Raspberry Pi jest podłączony do sieci za pomocą przełącznika Ethernet, co jest najszybszą konfiguracją z sieci punkt widzenia transferu danych? Szukam tylko odpowiedzi, w których ludzie faktycznie wypróbowali konfiguracje wymienione poniżej i mają realne wyniki, a nie teorię.

Oczywiście należy użyć karty SD, ponieważ jest ona wymagana przez co najmniej część cyklu rozruchu, ale załóżmy, że masz dodatkową partycję danych na każdym z wymienionych poniżej urządzeń, która ma najwyższe prędkości przesyłania danych na Raspberry Pi?

  1. Karta SD
  2. Pamięć flash USB
  3. Dysk twardy USB

To pytanie nie jest trywialne, ponieważ w pewnym momencie narzut przetwarzania związany z jednym z urządzeń pamięci w połączeniu z komunikacją ethernetową może wpływać na szybkość transferu, również port Ethernet na Raspberry Pi jest kontrolowany przez magistralę USB, więc na ogólną przepustowość powinna mieć wpływ koordynacja transferu danych Ethernet i transferu danych z nośników USB. Nie wiem, czy karta SD znajduje się na tej samej współużytkowanej magistrali USB, co porty USB i port Ethernet, ale jeśli nie, to przypuszczam, że byłaby to bardzo duża korzyść pod względem wydajności.

Zmodyfikowane w celu uwzględnienia transferu sieciowego jako wymogu testu porównawczego

Dan B.
źródło
1
Do Twojej wiadomości, ankieterzy mogą wykorzystać sudo hdparm -t /dev/sdxjako przydatne narzędzie do testów porównawczych.
Jivings
2
Nie mam testów, ale powszechnie wiadomo: ssd> hdd> flash> sd> nośniki optyczne
Alexander - Przywróć Monikę
+1 - Dobra uwaga na temat portu SD - czy jest on na tej samej magistrali co USB / Ethernet? Czy współdzielenie obciążenia na SD i podłączonej pamięci USB działa lepiej?
Jon Egerton,
@XAleXOwnZX na pewno, jeśli magistrale, na których działają te urządzenia, mogą być zgodne z maksymalną wydajnością urządzenia, to taka jest kolejność, ale założę się, że skoro Raspberry Pi ma tylko USB, twoje zamówienie będzie bardziej przypominać ssd = hdd = flash> optyczne a SD może znajdować się w dowolnym miejscu na tej liście na podstawie tego, czy ma własną magistralę oddzielną od portów USB.
Dan B
To dobra uwaga, ale HDD> Flash na pewno. Mój dysk twardy USB ma prędkość 30 Mb / s w porównaniu z dyskiem flash 5-10
Alexander - Przywróć Monikę

Odpowiedzi:

35

W testach porównawczych zawsze musisz ustalić swoje limity. Ponieważ jeśli spodziewasz się uzyskać 100 Mb / s z tej sieci, to tylko oszukujesz siebie!

Spójrz na ten projekt bloku RaspberryPI Model-B wprowadź opis zdjęcia tutaj

Ustalamy więc bardzo ważny fakt. Ethernet jest wąski przez kontroler USB, ponieważ z bloku digram ustalamy, że jest podłączony do koncentratora USB. (Brak wyraźnego wskazania, czy używa innej magistrali, czy po prostu USB2?)

Och, spójrz - kolejny schemat blokowy,

wprowadź opis zdjęcia tutaj

Teraz rzuca to jeszcze więcej światła na sytuację. Kontroler 10/100 jest podłączony do koncentratora USB - niestety, znowu, gdziekolwiek w specyfikacji nie podano, jak szybko koncentrator komunikuje się z kontrolerem LAN - spodziewaj się kluczowego faktu, że prędkość USB i LAN są negocjowane dla środowisk USB o mieszanej prędkości.

Gdzie jest karta SD?

Okazuje się, że karta SD jest bezpośrednio podłączona do BCM2835 (strona 65) i szczegółowo opisują wpływ wydajności na różne poziomy konfiguracji. Jedną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że jeśli karta SD ma dedykowany Zegar, może działać z pełną prędkością niezależnie od rdzenia CPU / GPU (niezależnie od użytej karty i standardu - można zobaczyć, że obsługuje kilka standardów).

wprowadź opis zdjęcia tutaj

Więc, co to znaczy?

Oznacza to, że jeśli przeprowadzisz testy porównawcze szybszej karty SD i gównianego pendrive'a (4 gb / 8 gb), najprawdopodobniej dostaniesz ogromne różnice w wydajności. Teraz pojawia się pytanie, w jaki sposób CPU / GPU obsługuje komunikację z tym cudownym urządzeniem wbudowanym (układ USB / LAN) i z jaką prędkością może się komunikować.

Widzisz, jak daleko może zajść teoria, zanim przeprowadzimy jakiekolwiek testy porównawcze? Inną kluczową kwestią jest to, w jaki sposób procesor kontroluje przepływ danych. Czy korzysta z osobnego kanału zegara zgodnie z zaleceniami?

W idealnym świecie można by pomyśleć, że poradzi sobie z tym LAN / USB. Ale to wymaga MCU .. czy widzimy MCY w dowolnym miejscu na tym schemacie blokowym .. NIE!

Więc procesor musi zażądać od IO DATA wysłania go do portu USB, a następnie do portu LAN (za pośrednictwem tego samego koncentratora USB) Tak .. tak, że może to spowodować pewne problemy z prędkością.

Warto również zwrócić uwagę na to, co dzieje się, gdy kopiujesz na pendrive USB i z karty SD przez sieć LAN. Spowoduje to pewien ruch.

Musimy porównać różne aspekty

Ustalając to, co próbujemy przeprowadzić, możemy zadać pytanie w świecie rzeczywistym.

  1. Jak szybko wewnętrzny USB obsługuje dane z SD?
  2. Ile procesora używa się do odczytu / zapisu na kartę SD, a następnie do sieci LAN?
  3. Ile procesora używa się do odczytu / zapisu na pendrivie USB?
  4. Czy kopiowanie jakichkolwiek danych wpływa bezpośrednio na użycie procesora?
  5. Jak dobrze wbudowany układ USB / LAN radzi sobie z odczytem danych z 2 źródeł z powrotem do portu LAN i czy wpływa proporcjonalnie na procesor?
  6. Nie ma potrzeby sprawdzania, czy LAN osiągnie pełne 10 Mb / s, ponieważ jest wąskie z powodu stanu, w którym znajduje się koncentrator USB.

Teraz, kiedy już wiesz, o co walczysz, wzywam cię, abyś sam odpowiedział.

To może być bardzo dobry punkt wyjścia.

Referencje

Przeważnie jednak,

własną wiedzę techniczną i oceny, które przeprowadziłem na podstawie własnego doświadczenia. OP zadał bardzo dobre pytanie, ale nie rozumie, że bez teoretycznego zrozumienia systemu jesteś skazany na próbę oceny / rozwiązania praktycznych problemów.

Wyniki

(4) Ta odpowiedź pokazuje prozaiczne pirackie testy. Dowodzi to, że dokonywanie intensywnych transakcji danych ma bezpośredni wpływ na procesor (po prostu nie jestem pewien, czy jest to karta SD, czy proces przenoszenia danych w układzie BCM na układ USB / LAN)

(6) Udowodniono, że jedynym szyjką butelki będzie źródło (na przykład wolna karta SD) Koncentrator USB potrafi pompować dane przy 90% +, ale odpowiedź na pytania 4 i 5 może bezpośrednio wpłynąć na tę wydajność.

Tak więc, przeprowadzając badania i wkład innych użytkowników , zaczynamy ustalać i uzyskiwać wstępne wyniki.

Oto ładny wykres, który pomaga zwizualizować, z czym mamy do czynienia.

wprowadź opis zdjęcia tutaj

Piotr Kula
źródło
1
+1 Świetna odpowiedź. Czy możesz podać źródła swoich zdjęć?
Jivings
1
Ta odpowiedź doskonale uzupełnia pytanie wyjaśniając, dlaczego każdy z różnych nośników danych może mieć bardzo różne wyniki. Dziękuję za dodatkowe informacje, które powinienem był sam dodać do pytania.
Dan B
1
USB nadal wynosi około 30 MB / s, czyli dużo do stracenia dla sieci 100 Mbit.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen tak, to prawda. Jedno z moich pytań dotyczy wydajności wbudowanego koncentratora USB. Haw szybko, czy to naprawdę? i czy zależy to od procesora ARM - także tego, co dzieje się, gdy kopiujesz z 2 źródeł przez LAN. To jest coś, co warto porównać. Nie twierdzę, że tego nie zrobi, ale z pewnością może stanowić problem w niektórych sytuacjach.
Piotr Kula,
Wygląda na to, że masz doświadczenie w terenie. Czy możesz wykonać rzeczywiste pomiary?
Thorbjørn Ravn Andersen
3

Oczywiście najwyższa wydajność byłaby z ramdyskiem.

Nie będzie to zbytnio przydatne w przypadku urządzenia pamięci masowej podłączonego do sieci, ale w takim przypadku pi niekoniecznie jest najlepszym wyborem dla tej ustalonej aplikacji.

W przypadku niektórych rzeczy, w których elastyczność pi jest wyjątkowo dostosowana, rzeczywiste wymagania dotyczące pamięci mogą być wystarczająco małe, aby jawnie uruchamiać je z ramdysku, lub być może pośrednio z ram poprzez mechanizm buforowania dysku (ramdyski linux są po prostu buforami dysków bez dysku twardego).

Nadal będziesz potrzebować karty, aby uruchomić komputer, ale dodatkową korzyścią z uruchomienia pamięci RAM jest zachowanie karty tylko do odczytu i zminimalizowanie ryzyka jej uszkodzenia.

Chris Stratton
źródło
Do uruchomienia nie potrzebujesz karty. Wymaga tego system operacyjny / moduł ładujący! Możesz uruchomić z interfejsu szeregowego lub sieci LAN, jeśli zmieniłeś w tym celu program ładujący. Jeśli jesteś wystarczająco techniczny, możesz dodać 3 GB pamięci RAM do RPI - ale to całkowicie nie na temat. Faktem jest, że wszystko przechodzi przez głupi hub USB! bleeeh
Piotr Kula
Czy bootloader, przynajmniej ten, który można zmienić, znajduje się na karcie SD? Możesz jednak uzyskać wewnętrzny ROM rozruchowy do załadowania z innego źródła, jeśli zmienisz niektóre paski pinów konfiguracji.
Chris Stratton,
Jestem prawie pewien, że układ BCM .. tak samo jak na przykład arduino ma bootloader .. (jak BIOS na PC) Musi być jakiś program początkowy, aby załadować następny program i tak dalej. zmiana bootlaodera na RPi .. poczekaj rok lub dwa.
Piotr Kula,
ATMEGA arduino jest przykładem mikrokontrolera zaprojektowanego do pracy samodzielnej, z wewnętrzną lampą błyskową. Booloader jest konfigurowalny przez użytkownika. Z drugiej strony SOC pi wydaje się pochodzić z klasy większych części systemu, które wymagają pamięci zewnętrznych. Zazwyczaj mają one moduł ładujący, ale jest to ROM maski, którego nie można zmienić po opuszczeniu fabryki. W tradycyjnym produkcie opartym na czymś takim byłby zewnętrzny układ flash 4-8 MB. Ale pi wydaje się używać zamiast tego wymiennej karty SD, unikając problemu, że ktoś zepsuje wylutowaną pamięć flash.
Chris Stratton
To jest interesujące. Czy to partycja FAT zawiera te dane rozruchowe? czy jest przechowywany gdzieś indziej w ukrytej części karty SD? W Theroy mógłbyś jeszcze łatwiej spróbować przekierować proces ładowania na inny „zhakowany” na urządzeniu ...
Piotr Kula
0

Dysk twardy USB lub dysk SSD USB powinny zapewniać najszybszą wydajność. Karty SD zapisują około 12 MB / s dla urządzeń klasy 10, a USB może uzyskać do 30 MB / s.

Nie zgadzam się, że koncentrator USB powoduje wąskie gardło sieci Ethernet na RPi, ponieważ HUB może wytrzymać 400 Mbit / s, a ethernet to 100. Więc teoretycznie może on obsługiwać do 4 portów Fast Ethernet 100 Mb / s.

Angel Genchev
źródło
KAŻDA klasa 10 SD, którą kiedykolwiek testowałem, ma prędkość zapisu> 19 Mb / s. Miałem klasę 6, która osiągała prędkość 14 Mb / s. SanDisk Extreme SD, który twierdzi, że 45 Mb / s osiąga 50 Mb / s odczytu i 47 Mb / s zapisu, co było zaskoczeniem. Lexar 400x SD to najszybszy testowany przeze mnie odczyt 70 Mb / s, ale około 30 Mb / s zapisu. W przypadku USB 2.0 praktycznie nie ma różnicy między szybkimi kartami SD, HDD i SSD. Wszystkie interfejsy USB 2.0, które zawiodłem, z prędkością około 35 Mb / s. Widziałem dyski USB 2.0, które osiągają prędkość około 10 Mb / s, a niektóre nawet niższe. Wiele napędów USB 3.0 ma prędkość zapisu ograniczoną do 10-20 Mb / s, nawet na portach USB 3.0!
Therealstubot
0

Dostaję maks. 4 Mb / s przy użyciu dysku flash USB i to samo dla dysku twardego USD. To po prostu upuszczając pliki przez „grupę domową” systemu Windows do urządzenia podłączonego do Raspberry.

Spodziewałem się co najmniej 10 razy, ale nie udało mi się przyspieszyć transferu. Próbowałem przesłać FTP bezpośrednio na dysk twardy USB (to urządzenie przesyła z prędkością + 60 Mb / s po podłączeniu do mojego laptopa), ale wyniki są bardzo słabe. 100 kB / s! Powoduje godziny ruchu za zaledwie kilka 100 MB.

Teraz przenoszę dysk twardy między laptopem a Raspberry Pi w celu przesyłania danych :-(

NookaV
źródło
Myślę, że masz problem z konfiguracją / siecią, ponieważ mogę przesłać plik bezpośrednio na moją pamięć USB do 24 Mb / s. I myślę, że lepiej poradziłbym sobie z Ethernetem niż Wi-Fi. Używałem vsftpd.
Morgan Courbet