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