Команда ftp

С помощью команды ftp можно передать очень большой объем данных, указав /dev/zero в качестве ввода и /dev/null в качестве вывода. Это позволяет избежать использования дисков (ограничивающих пропускную способность) и кэширования всего передаваемого файла в памяти.

Введите следующие команды ftp (при необходимости увеличьте или уменьшите число блоков, считываемых командой dd):
> bin
> put "|dd if=/dev/zero bs=32k count=10000" /dev/null

Приведенная выше команда передает 10000 блоков данных по 32 КБ каждый. Для увеличения или уменьшения размера передаваемого файла измените количество блоков, считываемых командой dd, указанных в параметре count, либо размер блока, указанный в параметре bs. Обратите внимание, что в команде ftp по умолчанию применяется тип передачи ASCII, что замедляет обработку, поскольку необходимо просматривать каждый байт. По возможности следует применять для передачи двоичный режим (bin).

При работе с сетями Gigabit Ethernet, поддерживающем большие кадры, либо ATM с размером MTU не менее 9180 убедитесь, что параметрам tcp_sendspace и tcp_recvspace присвоены значения не меньше 65535. Для достижения максимальной производительности рекомендуется установить значение 131072 байт (128 КБ). Если для настройки адаптеров Gigabit Ethernet применяется SMIT, необходимо правильно задать системные значения ISNO по умолчанию. При запуске сетевых интерфейсов с помощью команды ifconfig задаются не оптимальные значения параметров ISNO.

Ниже приведен пример настройки параметров:
# no -o tcp_sendspace=65535
# no -o tcp_recvspace=65535
Соответствующие команды ftp:
ftp> bin
200 Type set to I.
ftp> put "|dd if=/dev/zero bs=32k count=10000" /dev/null
200 PORT command successful.
150 Opening data connection for /dev/null.
10000+0 records in
10000+0 records out
226 Transfer complete.
327680000 байт отправлено за 2,789 с (1,147e+05 КБ/с)
local: |dd if=/dev/zero bs=32k count=10000 remote: /dev/null
ftp> quit
221 Goodbye.
Описанная выше передача данных выполнялась между двумя адаптерами Gigabit Ethernet, в которых применялись MTU размером 1500 байт; скорость передачи данных была равна 114700 Кб/с, что эквивалентно 112 Мб/с или 940 Мбит/с.
Если отправитель и получатель применяют большие кадры с MTU 9000, то скорость передачи данных достигает 120700 Кб/с или 117,87 Мб/с (989 Мбит/с), как показано в приведенном ниже примере:
ftp> bin
200 Type set to I.
ftp> put "|dd if=/dev/zero bs=32k count=10000" /dev/null
200 PORT command successful.
150 Opening data connection for /dev/null.
10000+0 records in
10000+0 records out
226 Transfer complete.
327680000 байт передано за 2,652 секунд (1,207e+05 Кб/с)
local: |dd if=/dev/zero bs=32k count=10000 remote: /dev/null
Ниже приведен пример передачи данных по ftp между двумя интерфейсами Ethernet 10/100 Мбит/с:
ftp> bin
200 Type set to I.
ftp> put "|dd if=/dev/zero bs=32k count=10000" /dev/null
200 PORT command successful.
150 Opening data connection for /dev/null.
10000+0 records in
10000+0 records out
226 Transfer complete.
327680000 байт передано за 27,65 секунд (1,157e+04 Кбайт/с)
local: |dd if=/dev/zero bs=32k count=10000 remote: /dev/null
Пропускная способность в приведенном выше примере составляет 11570 Кб/с, что эквивалентно 11,3 Мб/с или 94,7 Мбит/с.