Автор Гілка: Повільна передача даних мережею (NFS, SSH)  (Прочитано 1933 раз)

Михайло Даниленко

  • Гість
Не знаю куди це приліпити, тому най буде тут...

Умови: Full Duplex Fast Ethernet мережа (із d-link'івським свічем), одна машина із ide-вінчестером, інша з sata.
Задача: скопіювати файло (середнього розміру - 90-500мб) із ide-машини на sata-машину.
Додаткові обставини: на sata-машині експортовано nfs-розділ із ’rw,async,no_subtree_check’, на ide-машині маємо запис у fstab для монтування із ’rw,noatime,noexec,nosuid,nodev,noauto,user,tcp’. Також маємо ключ ssh для доступу до sata-машини.
Хід роботи:
[isbear:~] ll test.file
-rw-r--r-- 1 isbear isbear 203808768 січ  4 13:25 test.file
[isbear:~] mount /mnt/rwmsda9/
[isbear:~] time cp test.file /mnt/rwmsda9/
`test.file' -> `/mnt/rwmsda9/test.file'

real    5m14.939s
user    0m0.132s
sys     0m12.001s
[isbear:~] umount /mnt/rwmsda9/
[isbear:~] time scp test.file monstruozo:
Enter passphrase for key '/home/isbear/.ssh/isbear@monstruozo':
test.file                                                                   100%  194MB 966.2KB/s   03:26

real    3m32.259s
user    0m29.058s
sys     0m16.401s
[/tt]
Розрахунки:
[isbear:~] echo $(( 203808768 / ( 5 * 60 + 14 ) ))
649072
[isbear:~] echo $(( 203808768 / ( 3 * 60 + 32 ) ))
961362
[isbear:~] echo $(( 100000000 / 8 ))
12500000
[/tt]
Висновок: Реальна пропускна здатність відрізняється від теоретичної на порядoк?

Довідкова інформація:
На ide-машині (лічильники помилок були такими ж і на початку експерименту, тому до проблеми відношення не мають):
[root:~] ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 32
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: yes
[root:~] ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0e:2e:32:45:1f  
          inet addr:192.168.1.33  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20e:2eff:fe32:451f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4675627 errors:1434 dropped:4635 overruns:658 frame:0
          TX packets:7956454 errors:0 dropped:0 overruns:11 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1408533145 (1.3 GiB)  TX bytes:2807302593 (2.6 GiB)
          Interrupt:12 Base address:0xe800

[root:~] hdparm -I /dev/hdb

/dev/hdb:

ATA device, with non-removable media
      Model Number:       ST3200822A                              
      Serial Number:      4LJ0CKGQ
      Firmware Revision:  3.01    
Standards:
      Used: ATA/ATAPI-6 T13 1410D revision 2
      Supported: 6 5 4
Configuration:
      Logical            max      current
      cylinders      16383      16383
      heads            16      16
      sectors/track      63      63
      --
      CHS current addressable sectors:   16514064
      LBA    user addressable sectors:  268435455
      LBA48  user addressable sectors:  390721968
      device size with M = 1024*1024:      190782 MBytes
      device size with M = 1000*1000:      200049 MBytes (200 GB)
Capabilities:
      LBA, IORDY(can be disabled)
      Standby timer values: spec'd by Standard, no device specific minimum
      R/W multiple sector transfer: Max = 16      Current = ?
      Recommended acoustic management value: 128, current value: 0
      DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
           Cycle time: min=120ns recommended=120ns
      PIO: pio0 pio1 pio2 pio3 pio4
           Cycle time: no flow control=240ns  IORDY flow control=120ns
Commands/features:
      Enabled      Supported:
         *      SMART feature set
                Security Mode feature set
         *      Power Management feature set
         *      Write cache
         *      Look-ahead
         *      Host Protected Area feature set
         *      WRITE_BUFFER command
         *      READ_BUFFER command
         *      DOWNLOAD_MICROCODE
                SET_MAX security extension
         *      48-bit Address feature set
         *      Device Configuration Overlay feature set
         *      Mandatory FLUSH_CACHE
         *      FLUSH_CACHE_EXT
         *      SMART error logging
         *      SMART self-test
Security:
      Master password revision code = 65534
            supported
      not      enabled
      not      locked
      not      frozen
      not      expired: security count
      not      supported: enhanced erase
HW reset results:
      CBLID- above Vih
      Device num = 1 determined by CSEL
Checksum: correct
[root:~] hdparm -t /dev/hdb

/dev/hdb:
 Timing buffered disk reads:   32 MB in  3.06 seconds =  10.46 MB/sec
На sata-машині:
[root:~] ethtool eth0
Settings for eth0:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 15
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Link detected: yes
[root:~] ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:15:f2:ca:3b:4c  
          inet addr:192.168.1.34  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:f2ff:feca:3b4c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9141406 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6723343 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:11808716783 (10.9 GiB)  TX bytes:1232533257 (1.1 GiB)
          Interrupt:21 Base address:0xa000

[root:~] hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number:       ST31000340AS                            
        Serial Number:      5QJ0GV09
        Firmware Revision:  SD15    
        Transport:          Serial
Standards:
        Used: unknown (minor revision code 0x0029)
        Supported: 8 7 6 5
        Likely used: 8
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors: 1953525168
        device size with M = 1024*1024:      953869 MBytes
        device size with M = 1000*1000:     1000204 MBytes (1000 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = 1
        Recommended acoustic management value: 254, current value: 0
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
           *    General Purpose Logging feature set
           *    64-bit World wide name
           *    Write-Read-Verify feature set
           *    WRITE_UNCORRECTABLE_EXT command
           *    {READ,WRITE}_DMA_EXT_GPL commands
           *    SATA-I signaling speed (1.5Gb/s)
           *    Native Command Queueing (NCQ)
           *    Phy event counters
           *    Software settings preservation
           *    SMART Command Transport (SCT) feature set
           *    SCT Long Sector Access (AC1)
           *    SCT Error Recovery Control (AC3)
           *    SCT Features Control (AC4)
           *    SCT Data Tables (AC5)
                unknown 206[12] (vendor specific)
Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
        200min for SECURITY ERASE UNIT. 200min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c500cfc34b7
        NAA             : 5
        IEEE OUI        : c50
        Unique ID       : 0cfc34b7
Checksum: correct
[root:~] hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  324 MB in  3.02 seconds = 107.34 MB/sec
[/tt]
« Змінено: 2009-01-04 15:28:05 від ISBear »

Михайло Даниленко

  • Гість
[isbear:~] time netcat -q 0 monstruozo 22222 <test.file

real    4m52.348s
user    0m0.100s
sys     0m6.864s
[/tt]
(на тому кінці було)
[isbear:~] netcat -l -p 22222 | wc -c
203808768
[/tt]

Ніхто не підкаже, що з моєю мережею таке коїться чи куди копати?

Михайло Даниленко

  • Гість
Вирішив виключити можливе джерело помилки - свіч, під’єднав кросоверним кабелем машини напряму.
scp:
real    7m6.367s
user    0m30.946s
sys     0m17.849s
nfs:
real    9m30.308s
user    0m0.196s
sys     0m11.989s


Підключив назад через свіч.
scp:
real    4m44.078s
user    0m28.438s
sys     0m19.029s

nfs:
real    7m40.560s
user    0m0.088s
sys     0m11.657s


Так воно скоро до модемних швидкостей дійде... о_O

Михайло Даниленко

  • Гість
Витяг з машини усе що зміг, переставив мережеву в інший слот.
netcat: 8 хвилин

Витяг із другої машини усе що зміг.
netcat: 10 хвилин

Поставив усе назад. Тестувати страшно. Тепер, за тенденцією зменшення швидкості після кожного ребуту, має бути 12 хвилин...

Михайло Даниленко

  • Гість
Приніс з роботи нову, щойно куплену d-linkівську мережеву плату (на одній машині стояла realtek-івська, на іншій - вбудована y nforce marvell), по черзі вставляв до обох машин - ефекту ніякого.
Наразі з тесту виключено й фактор дисків - іде копіювання /dev/urandom у /dev/null.
Що далі? Міняти розводку?

Михайло Даниленко

  • Гість
Завантажився з етчівського встановлювального диску в resque на одній машині, на іншій - з кубунти 8.10, результати ті ж самі, отож це таки залізна проблема...

Михайло Даниленко

  • Гість
Угу, проблему ідентифіковано. Як одразу зауважив пан cadca, це був конфлікт переривань мережевої та com-порту. Тепер треба знайти шлях вирішення цієї проблеми, бо зараз довелося вставити pci S3 Virge щоб можна було вставити мережеву у слот коло agp, а на 1440x900 це дещо повільніше ніж agp Riva TNT, та й якісь артефакти іноді проскакують...

Михайло Даниленко

  • Гість
Угу, рано зрадів.
Зате виявив деяку закономірність.

Хід роботи:
Обидві машини тільки що завантажено, отож починаємо "з чистого листка".
Копіюємо з сервера файл (200М). 33 секунди. Непогано.
Іще раз копіюємо. 33 секунди.
Іще раз копіюємо. 33 секунди.
І так далі. При кожному копіюванні лічильник перебігів (overruns) росте на 10-15 пакетів (і, відповідно, й лічильник помилок), але на результат це ніяк не впливає. Поки все дуже гарно.
Копіюємо файл назад на сервер. 2 хвилини 13 секунд. Лічильники не змінилися.
Копіюємо файл із сервера. 1 хвилина 27 секунд. Приїхали...
Іще раз копіюємо із сервера. 1 хвилина 27 секунд.
І так далі. Лічильники ведуть себе точно так же.

Схоже на те, що якогось біса зникають пакети, й відповідно TCP/IP починає сповільнення передачі...
Звідки вилазять overruns я взагалі не розумію - ніби потужності системи має вистачати на обробку...