Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: PhobosK в Oct 15, 2005, 21:31



Титла: Проблем със скоростта на usb storage устройствата
Публикувано от: PhobosK в Oct 15, 2005, 21:31
Здравейте,
Имам странен проблем със скоростта на трансфер с всички usb устройства които се разпознават като usb storage - KINGMAX usb flash 256M, SONY mp3 player и няколко други.
Когато прехвърлям файлове ОТ тези устройства няма проблем със скоростта (тя е около 6-8 М/сек), но ако прехвърлям файлове КЪМ тези устройства, скоростта пада драстично до 30-40 к/сек

Ето и малко повече информация:

Примерен код


dmesg

usb 4-1: new high speed USB device using ehci_hcd and address 7
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usb-storage: device found at 7
usb-storage: waiting for device to settle before scanning
  Vendor: KINGMAX   Model: USB Flash Disk    Rev: 2.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0
usb-storage: device scan complete
sda: Unit Not Ready, sense:
: Current: sense key: Unit Attention
    Additional sense: Not ready to ready change, medium may have changed
sda : READ CAPACITY failed.
sda : status=1, message=00, host=0, driver=08
sd: Current: sense key: Unit Attention
    Additional sense: Not ready to ready change, medium may have changed
sda: test WP failed, assume Write Enabled
sda: assuming drive cache: write through
sda: Unit Not Ready, sense:
: Current: sense key: Unit Attention
    Additional sense: Not ready to ready change, medium may have changed
sda : READ CAPACITY failed.
sda : status=1, message=00, host=0, driver=08
sd: Current: sense key: Unit Attention
    Additional sense: Not ready to ready change, medium may have changed
sda: test WP failed, assume Write Enabled
sda: assuming drive cache: write through
sda: Unit Not Ready, sense:
: Current: sense key: Unit Attention
    Additional sense: Not ready to ready change, medium may have changed
SCSI device sda: 512000 512-byte hdwr sectors (262 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
 sda: sda1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0



lsusb

Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash 2.0
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 004: ID 046d:c216 Logitech, Inc.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 005: ID 066f:4200 SigmaTel, Inc. STIr4200 IrDA Bridge
Bus 002 Device 004: ID 046d:0840 Logitech, Inc. QuickCam Express
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 003: ID 04a9:220d Canon, Inc. CanoScan N670U/N676U/LiDE 20
Bus 001 Device 001: ID 0000:0000



cat /proc/scsi/usb-storage/0

   Host scsi0: usb-storage
       Vendor: USB
      Product: Flash Disk
Serial Number: None
     Protocol: Transparent SCSI
    Transport: Bulk
       Quirks:



sfdisk -l

Disk /dev/sda: 1000 cylinders, 16 heads, 32 sectors/track
Units = cylinders of 262144 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+    999    1000-    255984    b  W95 FAT32
/dev/sda2          0       -       0          0    0  Empty
/dev/sda3          0       -       0          0    0  Empty
/dev/sda4          0       -       0          0    0  Empty



lsusb -v

Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash 2.0
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0ea0 Ours Technology, Inc.
  idProduct          0x2168 Transcend JetFlash 2.0
  bcdDevice            2.00
  iManufacturer           1 USB
  iProduct                2 Flash Disk
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
    MaxPower              200mA
    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     0x81  EP 1 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     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     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval               1
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



lsmod |grep usb -i

usb_storage            72832  2
scsi_mod              123432  3 sd_mod,usb_storage,sg
usblp                  11008  0
hci_usb                13000  6
bluetooth              42564  17 bnep,rfcomm,l2cap,sco,hci_usb
usbhid                 45216  0
usbcore               112252  10 usb_storage,xpad,stir4200,usblp,hci_usb,usbhid,ehci_hcd,quickcam,uhci_hcd



cat /sys/block/sda/device/max_sectors

128



uname -r

2.6.13


Опитах да променя "max_sectors":
echo 128 >/sys/block/sda/device/max_sectors
echo 1024 >/sys/block/sda/device/max_sectors

но това нямаше никакъв ефект върху скоростта на трансфер.


Използвам Mandriva Linux 2005LE.
Освен това този проблем не съществува под WinXP и Win98 (на същата машина).

Ако някой може да помогне ще съм му много благодарен.


Титла: Проблем със скоростта на usb storage устройствата
Публикувано от: ray в Oct 16, 2005, 10:30
Здравей,
Имах същият проблем само преди седмица, оказа се че проблема е в последните ядра (2.6.12.Х и 2.6.13, само най-новите 2.6.12 ядра са проблемни).
Накратко казано устройствата с "vfat" файлова система се монтират с опция "sync", но има и някаква грешка така че реално се прави 'sync' след всеки записан блок и затова скоростта пада драстично.
Но още по-лошото е че това буквално скапва USB-то (това го има в една дискусия в Gentoo-ML). Цитирам от там: "броят на записванията на едно USB е ограничен - около 100,000 записа", затова не се препоръчва да се ползват за чести записи (вместо хард например).
Тук проблема е това много често синхронизиране/записване (след всеки блок) което буквално скапва устройството - в дискусията има пример за развалено чисто ново USB след един единствен запис на много голям файл/файлове.
Решението (за мен) бе да сменя опцията за монтиране от "sync" --> "async" и нещата се оправиха. Тъй като ползвам "dbus-hal-ivman" за автоматично монтиране на устройствата трябваше да редактирам файл от конфигурацията на "ivman" добавяйки "async".
Успех.Румен


Титла: Проблем със скоростта на usb storage устройствата
Публикувано от: PhobosK в Oct 16, 2005, 15:28
@ray,
благодаря ти изключително много за информацията.

Единственото нещо което не ми бе хрумнало да опитам бяха опциите за mount-ване.

За по-лесно прибавих няколко policy правила на hal за "volume.policy.mount_option.sync" и нещата си дойдоха на място.  :)

Благодаря ти още веднаж.