You are not logged in.

#1 2007-11-11 21:32:59

galiyosha
Member
From: Slovakia
Registered: 2005-08-01
Posts: 22

Low read performance from a USB 2.0 drive

I experience a terribly low read performance from a USB 2.0 hard drive on a fresh Arch Linux installation with the latest stock kernel (2.6.23.1-7). Reading 200 MB takes around 3 minutes whereas under Windows with the same controller and drive it takes around 10 seconds.

[gali@neutrino ~]$ sudo hdparm -t /dev/sdb1
/dev/sdb1:
 Timing buffered disk reads:    6 MB in  4.89 seconds =   1.23 MB/sec

It's a FAT32 volume.

[gali@neutrino ~]$ cat /proc/mounts | grep sdb1
/dev/sdb1 /media/GALI_EXT vfat rw,nosuid,nodev,noexec,uid=1000,gid=102,fmask=0133,dmask=0022,codepage=cp437,iocharset=utf8 0 0

The ehci_usb module is loaded and the device manifests itself as USB 2.0.

[gali@neutrino ~]$ cat /sys/bus/usb/devices/7-1/speed 
480
[gali@neutrino ~]$ sudo lsusb -v -s 007:

Bus 007 Device 002: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x04b4 Cypress Semiconductor Corp.
  idProduct          0x6830 USB-2.0 IDE Adapter
  bcdDevice            2.40
  iManufacturer           0 
  iProduct               57 Cypress AT2+LP
  iSerial                44 DEF10C1DEAF7
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              10
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

Bus 007 Device 001: ID 0000:0000  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x0000 
  idProduct          0x0000 
  bcdDevice            2.06
  iManufacturer           3 Linux 2.6.23-ARCH ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 0000:07:00.2
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x000a
    No power switching (usb 1.0)
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0100 power
Device Status:     0x0003
  Self Powered
  Remote Wakeup Enabled

Another interesting thing, which may or may not have anything in common with this issue, is that issuing ANY read or write operation on the drive makes JACK running a FreeBoB driver for a FireWire audio interface connected to the same USB 2.0/FireWire controller collapse. But the low read performance happens regardless of whether the JACK is running or not.

Anyone has any clue what to check? Thanks in advance.

Last edited by galiyosha (2007-11-11 21:34:17)

Offline

#2 2007-11-11 22:59:30

lilsirecho
Veteran
Registered: 2003-10-24
Posts: 5,000

Re: Low read performance from a USB 2.0 drive

It sounds like the reason is that it is operating as USB 1.1 and not 2.0...

Try usbview and lsusb for details....


Prediction...This year will be a very odd year!
Hard work does not kill people but why risk it: Charlie Mccarthy
A man is not complete until he is married..then..he is finished.
When ALL is lost, what can be found? Even bytes get lonely for a little bit!     X-ray confirms Iam spineless!

Offline

#3 2007-11-11 23:51:51

galiyosha
Member
From: Slovakia
Registered: 2005-08-01
Posts: 22

Re: Low read performance from a USB 2.0 drive

lilsirecho wrote:

It sounds like the reason is that it is operating as USB 1.1 and not 2.0...

Try usbview and lsusb for details....

Well, lsusb output is already included in my first post and the device is reported as USB 2.0 running at 480 Mbps. As expected, usbview reports the same. Evidently, it probably is not the case but I would really like to know why and how to solve it. sad

But thanks for the suggestion anyway.

Offline

#4 2007-11-12 00:13:46

lilsirecho
Veteran
Registered: 2003-10-24
Posts: 5,000

Re: Low read performance from a USB 2.0 drive

Can you change to a different  usb controller?  It may be defective.


Prediction...This year will be a very odd year!
Hard work does not kill people but why risk it: Charlie Mccarthy
A man is not complete until he is married..then..he is finished.
When ALL is lost, what can be found? Even bytes get lonely for a little bit!     X-ray confirms Iam spineless!

Offline

#5 2007-11-12 00:16:19

lilsirecho
Veteran
Registered: 2003-10-24
Posts: 5,000

Re: Low read performance from a USB 2.0 drive

Perhaps the current supplied by the usb controller is inadequate.

Perhaps a powered hub added if you have one will alleviate the problem....EDITED

Last edited by lilsirecho (2007-11-12 00:18:24)


Prediction...This year will be a very odd year!
Hard work does not kill people but why risk it: Charlie Mccarthy
A man is not complete until he is married..then..he is finished.
When ALL is lost, what can be found? Even bytes get lonely for a little bit!     X-ray confirms Iam spineless!

Offline

#6 2007-11-12 00:29:54

lilsirecho
Veteran
Registered: 2003-10-24
Posts: 5,000

Re: Low read performance from a USB 2.0 drive

One last gasp...check /etc/mkinitcpio.conf for hooks "usb"...


Prediction...This year will be a very odd year!
Hard work does not kill people but why risk it: Charlie Mccarthy
A man is not complete until he is married..then..he is finished.
When ALL is lost, what can be found? Even bytes get lonely for a little bit!     X-ray confirms Iam spineless!

Offline

#7 2007-11-12 01:11:34

galiyosha
Member
From: Slovakia
Registered: 2005-08-01
Posts: 22

Re: Low read performance from a USB 2.0 drive

lilsirecho wrote:

Can you change to a different  usb controller?  It may be defective.

It is probably not, it works fine under Windows and it worked fine as well on another machine with older Arch Linux installation.

lilsirecho wrote:

Perhaps the current supplied by the usb controller is inadequate.

Perhaps a powered hub added if you have one will alleviate the problem....EDITED

It is an external HDD enclosure, so it is self-powered.

lilsirecho wrote:

One last gasp...check /etc/mkinitcpio.conf for hooks "usb"...

Well, usb hook is not enabled, but as I don't use the drive for booting, I see no reason for it to be. The required modules (usbcore, ehci_hcd, usb_storage, ide_core) are loaded. Without them, the drive would probably not be mountable at all.

Thanks for the effort, but neither of the tips probably points to the cause. sad

Offline

Board footer

Powered by FluxBB