Test wydajności USB w WL-500gP (oleg, openwrt)

Sprzęt

- Kilkuletni dysk HDD 2,5'' w zewnętrznej kieszeni (no-name - zwykła aluminiowa obudowa) zasilanej tylko przez USB.
- Asus WL-500gP
- Laptop Pentium M 1.6GHz z USB 2.0, opartym o chip Intela ICH6

Firmware

Jako test przeprowadzono pomiar czasu odczytu pliku 1GiB utworzonego na dysku zewnętrznym poleceniem:


    dd if=/dev/urandom of=/mnt/usbdisk/plik.bin bs=1M count=1024


Wykorzystano następujące firmware:
- Oleg w wersji 1.9.2.7-7f (2006-11-06) - kernel 2.4.20
- OpenWrt RC6 - kernel 2.4.30, podstawowa konfiguracja, załadowane tylko moduły obsługi USB

W obu przypadkach dysk zewnętrzny pracował jako USB 2.0


    T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=0402 ProdID=5642 Rev= 1.00
    S: Product=USB 2.0 Storage Device
    S: SerialNumber=12345678901234567890
    C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
    I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms


Oraz, dla porównania wyników
- linux debian sid (x86, kernel 2.6.19)

Wyniki

Test polegał na 5 krotnym odczycie pliku 1GiB z dysku zewnętrznego poleceniem


    time cp usbdisk/plik.bin /dev/null


Oleg: 7m40s (1024MiB/460s = 2,22MiB/s)
OpenWRT: 2m13s (1024MiB/133s = 7,68MiB/s)
linux: 1m25s (1024MiB/85s = 12,04MiB/s)

Podsumowanie

Rzeczywistość jest trochę inna - faktyczny transfer z dysku podłączonego do USB nie przekracza 3,5MiB - powodem jest słaba wydajność procesora, obsługi usb lub czegoś innego. Faktem jest więc to, że nie ma co się przejmować szybkością dysku - i tak transfer zwykle mieści się w granicach 3,5MiB - oczywiście po kablu.