Назад | Перейти на главную страницу

Производительность сети при большой передаче данных

Я использую DD over Netcat для копирования жесткого диска из одной системы в другую, прямого клона.

Я загрузил RIP в каждой системе.

целевая система: nc -l -p 9000 | pv | dd of = / dev / hda исходная система: dd if = / dev / hda | pv | nc 9000 -q 10

Скорость передачи, похоже, колеблется в районе 10 или 11 МБ / с, при этом количество регистрируемых пакетов составляет около 18. Две системы подключены к гигабитному коммутатору. Ethtool eth0 на обоих показывает:

Settings for eth0:
    Supported ports: [ TP ]
    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: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: umbg
    Wake-on: g
    Current message level: 0x00000007 (7)
    Link detected: yes

Я думаю, что могу запутать некоторые числа для скорости передачи, но это ожидаемая скорость для передачи данных?

РЕДАКТИРОВАТЬ: Я просто попытался использовать два разных кабеля, помеченных как совместимые с 5e, и использовал перекрестный разъем для прямого соединения двух систем. Хотя ethtool по-прежнему заявляет, что установлена ​​скорость 1000 Мбит / с, скорость передачи данных, похоже, лишь немного выше, чем раньше. Я предполагаю, что либо диски отвратительные, либо сетевые карты не работают, либо процессор должен быть узким местом.

EDIT2 Я просто попытался взять второй жесткий диск из устройства, которое нужно клонировать, и физически подключить его к главному клону. Первоначально один канал IDE перешел на HD, а другой - на CD-ROM. Я взял жесткий диск мастера и подключил его к тому же каналу, что и CD-ROM, поэтому они должны быть / dev / hda и / dev / hdb. Я взял кабель с компакт-диска и подключил его к «чистому листу», так что это должен быть / dev / hdc.

Я перезагрузился и запустил "dd if = / dev / hda | pv | dd of = / dev / hdc", и я получаю колоссальные ... 10 МБ / с. Он сильно колеблется от 8 МБ / с до 12.

Итак ... Я думаю, что жесткие диски дают хреновую производительность ... Я настолько привык к тому, что сеть является узким местом, что мне странно думать о дисках как о проблеме!

Что значит dd if=/dev/zero of=/dev/hda по месту назначения и dd if=/dev/hda of=/dev/null в источнике укажите наименьшее из двух, что даст вам лучший вариант.

Если у вас есть запасной процессор, подумайте о gzip -fast

Стоит подумать о настройке jumbo-пакетов (большой mtu)

Я ожидал бы больше 20 МБ / с, вы используете кабели cat 6 / 5e?

Я бы также запустил iostat (часть пакета sysstat) и, возможно, посмотрел, считает ли iostat, что диски загружены на 100%:

iostat -c 2 -x

Вот хорошая статья о гигабитных сетях от Tom's Hardware: Gigabit Ethernet: чувак, где моя пропускная способность?

Большая часть медлительности происходит из-за узкого места HD. Ваш средний HD протолкнет 40-50 МБ по сети на полностью простаивающем диске / системе / сети. Добавьте накладные расходы dd в простой канал netcat tcp, который никоим образом не оптимизирован для сетевого трафика, и скорости начинают сильно падать.

Большая часть замедления происходит из-за размера окна TCP. Пакет проходит и должен ждать ответа перед отправкой следующего. Обычно внутренняя сеть имеет такую ​​низкую задержку, что этого никто никогда не замечает. Когда вы выполняете дамп не оптимизированным для сети способом, окна начинают перемещаться повсюду. Отличным примером этого является копия сетевого файла Vistas в версии до SP1, которая давала скорость передачи менее 100 КБ в секунду, когда настройка окна TCP была очень неправильной.

Также для справки, у меня здесь две коробки, которые последовательно проталкивают 60-80 мегабайт в секунду через свою сеть, чтобы облегчить другую. У них есть выделенные сетевые адаптеры, RAID 10 и несколько дисков SAS 10000 об / мин, чтобы обеспечить такую ​​скорость.

Направляйте поток данных через сжатие / распаковку, чтобы повысить общую пропускную способность за счет использования некоторого процессора.

Я получаю 12 МБ / сек, но раньше было намного меньше - моя особая проблема была с дисками. Я использовал мерзкий дешевый «сервер хранения» Dell с ужасной картой RAID. Отказ от RAID, замена на конфигурацию JBOD имеют большое значение, даже когда я затем ставлю программный RAID5 поверх.

Я бы также подумал о том, чтобы установить на коммутаторе большие кадры, что значительно повысит вашу пропускную способность. (ifconfig eth0 mtu 9000 временно или добавить MTU 9000 в ваш файл ifcfg, чтобы установить jumbo на интерфейсы Linux).