Wydaje się, że moja karta SD działa wolno. Mam kartę ADATA 16 GB SDHC klasy 10. Sprawdziłem listę kompatybilności, która zawiera kartę o podobnych specyfikacjach i stwierdza, że „działa”. Nawet proste zadania, takie jak uzyskanie listy katalogów w małym katalogu, mogą zająć kilka sekund przy pierwszym żądaniu. Czy są jakieś narzędzia, za pomocą których mogę zweryfikować, jaką wydajność uzyskuję na karcie SD? Czy mogę wprowadzić zmiany w konfiguracji, aby karta SD reagowała szybciej?
Używam Raspberry Pi jako bezgłowego seedboxa BitTorrenta , więc wszystko, na co się natknę, działa po prostu w wierszu poleceń. Korzystam z podziału 240/16, aby zapewnić maksymalną dostępną ilość pamięci.
Aktualizacje
Po przeprowadzeniu kilku testów, jak zalecił @Krzysztof Adamski z „dd”, otrzymałem dobre wyniki, uzyskując prędkość odczytu 20 MB / s i prędkość zapisu około 10 MB / s. Jednak nadal występują problemy z szybkością we / wy. Podczas testowania uruchomiłem polecenia „dd” w tle i pobiegłem do góry, aby zobaczyć, co się dzieje. Zauważyłem, że proces „mmcqd” zajmował sporo procesora, od 5% do 10%. Rozejrzałem się w Internecie i znalazłem wiele przypadków ludzi zgłaszających, że „mmcqd” zużywa sporo procesora. Następnie uruchomiłem następujące polecenie, aby przetestować czytanie i pisanie w tym samym czasie
sudo dd if=/dev/mmcblk0 of=test.dat bs=1M count=1024
Po uruchomieniu tego polecenia uzyskałem przepustowość tylko 977 kB / s, a „mmcqd” zgłosił użycie procesora między 10% a 25% co 5 do 10 sekund, po czym spadłoby do zera. Zrobiłem więc więcej testów. W tle uruchomiłem następujące dwa polecenia, a potem obserwowałem, co się dzieje na górze.
sudo dd if=/dev/mmcblk0 of=/dev/null bs=1M count=1024 &
sudo dd if=/dev/zero of=test.dat bs=1M count=1024 &
W tym przypadku „mmcqd” osiągnęłoby szczytowe zużycie około 35% procesora, ale przepustowość była o wiele lepsza przy około 7,5 MB / s do odczytu i około 5,3 MB / s do zapisu.
Wygląda na to, że występuje tutaj pewien problem, w którym ciężkie zapisy powodują, że „mmcqd” blokuje system. Powoduje to, że demon transmisji zwalnia prawie do zera, gdy tylko prędkość staje się zbyt wysoka w oczekiwaniu na kartę SD. Podczas uruchamiania demona transmisji widzę też, że użycie „mmcqd” staje się dość wysokie.
źródło
Odpowiedzi:
Testowanie prędkości odczytu karty:
Istnieją dwa proste sposoby sprawdzenia prędkości odczytu (katalogowanie katalogu to tylko operacja odczytu):
za pomocą polecenia dd:
sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100
Spowoduje to odczytanie 800 MB danych z karty SD i odrzucenie tego do / dev / null. Jeśli zajmuje to dużo czasu, możesz zmienić count = 100, aby count = 10, aby odczytać tylko 80 MB. Po zakończeniu polecenia powinien wydrukować komunikat z prędkością odczytu. Powinieneś uzyskać co najmniej kilka MB / s.
za pomocą polecenia hdparm:
sudo hdparm -t /dev/mmcblk0
To powinno dać ci podobny wynik prędkości jak pierwsze polecenie i powinno również wynosić co najmniej kilka MB / s.
Testowanie prędkości zapisu na karcie:
Nie ma łatwego sposobu na przetestowanie prędkości zapisu, ponieważ aby to zrobić, trzeba zapisać dane na karcie. Jeśli chcesz to zrobić na niskim poziomie (z pominięciem systemu plików), musisz przesłonić niektóre dane na karcie i prawdopodobnie nie chcesz tego robić. Można to zrobić, jeśli masz partycję wymiany, ponieważ można ją łatwo dezaktywować (za pomocą
swapoff -a
), przetestować za pomocą dd (zadd if=/dev/zero of=/dev/{yourswappartitionnanehare} bs=8M count=25
), a następnie odtworzyć (za pomocąmkswap /dev/{yourswappartitionnanehare}
).Jeśli nie masz partycji wymiany, możesz przetestować prędkość zapisu systemu plików również za pomocą polecenia dd:
dd if = / dev / zero of = / home / pi / testfile bs = 8M count = 25
Spowoduje to utworzenie 200 MB pliku
/home/pi/testfile
. Możesz użyć dowolnej innej nazwy pliku.Uwagi:
dmesg
polecenia, aby sprawdzić, czy są jakieś komunikaty dotyczące podsystemu mmc.źródło
Dla wydajności karty SD bardzo ważne jest, czy dostęp jest sekwencyjny (jak w przypadku dd) czy losowy w małych blokach. Wydaje się, że karty SD, szczególnie wysokiej klasy, są zoptymalizowane pod kątem sekwencyjnego dostępu, co jest dobre do przechowywania zdjęć lub filmów. Jednak do uruchomienia systemu operacyjnego karty SD losowy dostęp jest ważniejszy, ponieważ wiele małych plików jest odczytywanych i zapisywanych. Wydaje mi się, że bittorrent generuje również nieco losowy dostęp.
Te dwa wątki dyskusyjne zawierają wiele testów porównawczych i dyskusji na karcie SD. Ogólnie okazało się, że losowa prędkość zapisu ma decydujące znaczenie dla reakcji systemu operacyjnego na karcie. Szybkość ta jest często znacznie niższa niż prędkość zapisu sekwencyjnego, czyli prędkości, którą producenci lubią zgłaszać. Klasa kart SD oparta jest na sekwencyjnych prędkościach, a niższe klasy (4 lub 6) mogą w rzeczywistości być bardziej odpowiednie do malin.
IOzone narzędzie mierzy prędkość wielu różnych wzorów dostępu. I napisali krótkie instrukcje dla kompilacji IOzone na maliny tutaj .
źródło
W przypadku wbudowanego automatu RasPI istnieje obszerna dyskusja na stronie RasPI: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=5057&sid=ee346e3e7cea48d2858a143bcf086362
Nie miałem czasu na przeczytanie wszystkich 12 stron dyskusji, ale wydaje się, że jest to problem z sygnałem CLK.
źródło
Piszesz „bittorrent”, co powoduje moje zgadywanie / odpowiedź.
Protokół torrenta odbiera pakiety w losowej kolejności od losowych seederów.
Kiedy zaczniesz używać torrenta na dowolnym systemie plików, staje się on raczej fragmentaryczny. Spowoduje to pogorszenie wydajności na dużą skalę.
Z tego, co wiem o SDCARD, jej systemie FAT / FAT32 i jeszcze gorzej w przypadku obsługi fragmentacji.
Więc znajdź sposób na defragmentację karty SDCARD lub skopiuj wszystkie pliki, a następnie ponownie zainstaluj system operacyjny.
Wreszcie, napisanie LOT-a (jak będzie w przypadku silnika bittorrent) spowoduje oderwanie karty SDCARD szybciej niż normalne użycie. Nie twierdzę, że jest to niewłaściwe, w rzeczywistości sam uważałem się za podobnego. Ale to może być powód twojego problemu.
Chciałbym, aby istniał klient torrent, który automatycznie przesyła / przenosi pobrane pliki do zupełnie innego miejsca docelowego po zakończeniu pobierania + „zarezerwowany czas przesyłania”.
Wtedy defragmentacja przebiegałaby znacznie szybciej.
źródło