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?
- Karta SD
- Pamięć flash USB
- 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
sudo hdparm -t /dev/sdx
jako przydatne narzędzie do testów porównawczych.Odpowiedzi:
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
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,
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).
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.
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.
źródło
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.
źródło
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.
źródło
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 :-(
źródło
vsftpd
.