Автор Тема: Проблем със скоростта на usb storage устройствата  (Прочетена 2757 пъти)

PhobosK

  • Напреднали
  • *****
  • Публикации: 282
  • Distribution: Ubuntu, Mandriva, Gentoo, Slackware, Fedora, SuSe
  • Window Manager: KDE, GNOME
    • Профил
    • WWW
Здравейте,
Имам странен проблем със скоростта на трансфер с всички 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 (на същата машина).

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

...I could drown in your eyes,
 Die in your arms,
 Live for these moments,
 Here in the dark
 I don't know where I end,
 Not sure where you start,
 When we're body to body...

ray

  • Напреднали
  • *****
  • Публикации: 1447
    • Профил
Здравей,
Имах същият проблем само преди седмица, оказа се че проблема е в последните ядра (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".
Успех.Румен
Активен

PhobosK

  • Напреднали
  • *****
  • Публикации: 282
  • Distribution: Ubuntu, Mandriva, Gentoo, Slackware, Fedora, SuSe
  • Window Manager: KDE, GNOME
    • Профил
    • WWW
@ray,
благодаря ти изключително много за информацията.

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

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

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

...I could drown in your eyes,
 Die in your arms,
 Live for these moments,
 Here in the dark
 I don't know where I end,
 Not sure where you start,
 When we're body to body...

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
USB Mass Storage
Настройка на хардуер
_nmk 1 2293 Последна публикация Mar 01, 2003, 16:28
от mironcho
mail storage quota
Настройка на програми
denid 1 1832 Последна публикация Nov 09, 2004, 07:28
от n_antonov
USB2 Mass storage
Настройка на хардуер
buboleck 0 1743 Последна публикация Jan 30, 2006, 11:10
от buboleck
Проблем в kde 3.5 с storage media
Хардуерни и софтуерни проблеми
TwisterBG 0 1367 Последна публикация Oct 25, 2007, 15:33
от TwisterBG
7th USENIX Conference on File and Storage Technologies
Предстоящи събития
muxozavar 0 2230 Последна публикация Nov 22, 2008, 02:35
от muxozavar