Страница 1 из 1
Тормозит гигабитный фтп
Добавлено: 2008-10-11 15:46:06
bmth
Проблема: производительность фтп сервера на достаточно мощной машине с гигабитным интерфейсом не превышает 6..7Мб/с (что соответствует 100 Мбит/с). Я считаю, что проблема носит программный характер (см. ниже обоснование почему), что или где-то в системе стоит ограничение полосы пропускания, или где-то что-то надо подкрутить, чтобы гигабит заработал в полную силу. Помогите, пожалуйста, разобраться что именно.
Почему я считаю, что проблема носит программный характер:
- машина достаточно мощная, чтобы обслуживать гигабитное сетевое соединение (конфигурация - dmesg частично):
Код: Выделить всё
FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008
root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (2814.02-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf34 Stepping = 4
Logical CPUs per core: 2
real memory = 527302656 (502 MB)
mskc0: <Marvell Yukon 88E8056 Gigabit Ethernet> port 0x9000-0x90ff mem 0xf5000000-0xf5003fff irq 16 at device 0.0 on pci3
msk0: <Marvell Technology Group Ltd. Yukon EC Ultra Id 0xb4 Rev 0x02> on mskc0
msk0: Ethernet address: 00:16:e6:87:53:c5
miibus0: <MII bus> on msk0
e1000phy0: <Marvell 88E1149 Gigabit PHY> PHY 0 on miibus0
e1000phy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX, auto
mskc0: [ITHREAD]
- она практически простаивает при скачивании файла (top):
Код: Выделить всё
CPU states: 0.0% user, 0.0% nice, 1.5% system, 4.7% interrupt, 93.8% idle
Mem: 35M Active, 356M Inact, 70M Wired, 16M Cache, 59M Buf, 3696K Free
- файловая система работает достаточно быстро (dd файла ~4Гб):
Код: Выделить всё
9887974+1 records in
9887974+1 records out
5062643108 bytes transferred in 147.009730 secs (34437470 bytes/sec)
- сетевое соединение - полнодуплексный гигабит:
Код: Выделить всё
msk0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether **:**:**:**:**:**
inet **** netmask 0x******** broadcast ********
media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
status: active
- полоса в 7Мб/с делится между всеми клиентами фтп - я пробовал качать на двух машинах одновременно, скорости упали до 2.5..3Мб/с (поэтому, кстати, даже неважно, какие у меня клиенты - гигабитные, или нет);
- я попробовал исключить влияние хаба - вдруг у него только снаружи написано, что он гигабитный - и соединил два компа кроссом; в результате те же 6..7Мб/с;
- понятно, что если полоса 6..7Мб/с делится между всеми клиентами фтп, и хаб тут непричем, то значит затык происходит где-то на самом сервере:
Код: Выделить всё
+-------+ +-------------+
| | 1Gbps | |
| FTP X---------| 1Gbps HUB |
| | | |
+-------+ +-------------+
| |
+-----------+ +-----------+
| clnt #1 | | clnt #2 |
+-----------+ +-----------+
X - затык
- поэтому сначала я попробовал поменять сетевушку (на RealTek 8169 Gigabit Ethernet) - в результате те же 6..7Мб/с;
- потом я попробовал поменять ftp-сервер - был pureftpd, поставил proftpd - результат тот же;
- наконец, я даже пробовал отключить ipnat - вдруг он где-то что-то ограничивает (кроме ipnat на машине никаких ipfw, ipf и т.п. вещей не включено);
- разумеется, траффик я нигде не ограничивал - ни в настройках фтп-сервера, ни в конфигурации самой системы.
Короче, я уже даже и не знаю где и что еще можно пошевелить, чтобы оно заработало как положено, чтобы по фтп бегали те самые 30+Мб/с, на которые способен винчестер. Помогите! Какая еще нужна информация о машине - пишите, я все пришлю!
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 15:50:26
bmth
Ну и, разумеется, проведя столь подробное исследование и испробовав самые разные варианты, я не смог ни разу не загуглить эту тему. Но то ли не там искал, то ли слова в поиск вбивал не те, но ничего, что помогло бы мне справиться самому, я не нашел =(
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 16:35:05
LMik
systat -v сюда во время работы/скачки с него.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 16:55:55
f_andrey
А почему в такой схеме используется ФТП, а не расшарить файловую систему?
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 17:38:44
bmth
LMik писал(а):systat -v сюда во время работы/скачки с него.
Код: Выделить всё
1 users Load 0.28 0.10 0.04 11 окт 22:36
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 34388 3240 112560 6424 26704 count
All 450780 5008 7181252 16164 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 5048 total
1 33 6428 3 63 1043 230 zfod 871 mskc0 uhci
ozfod 57 rl0 atapci
1.7%Sys 3.6%Intr 0.0%User 0.0%Nice 94.7%Idle %ozfod 116 atapci1 20
| | | | | | | | | | | daefr 2002 cpu0: time
=++ prcfr 2002 cpu1: time
15 dtbuf 27 totfr
Namei Name-cache Dir-cache 34738 desvn react
Calls hits % hits % 9701 numvn pdwak
8603 frevn 1972 pdpgs
intrn
Disks ad8 ad14 ad15 113332 wire
KB/t 13.11 64.00 0.00 36412 act
tps 2 115 0 315884 inact
MB/s 0.02 7.21 0.00 23008 cache
%busy 0 10 0 3696 free
60176 buf
f_andrey писал(а):А почему в такой схеме используется ФТП, а не расшарить файловую систему?
Потому что мне интересно почему это гигабит не пашет, как надо? Ну и потому что клиенты у меня виндовые

Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 17:49:19
bmth
Ради эксперимента попробовал стянуть большой тестовый файл локально. Результат тот же - 8..9Мб/с. systat такого извращения ниже.
Код: Выделить всё
2 users Load 0.07 0.09 0.07 11 окт 22:47
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 38400 3660 136332 6912 15824 count
All 320508 5844 7209236 20328 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4415 total
2 40 6194 85 1264 418 1526 zfod 2 mskc0 uhci
ozfod 1 rl0 atapci
8.3%Sys 3.0%Intr 0.2%User 0.0%Nice 88.5%Idle %ozfod 414 atapci1 20
| | | | | | | | | | | daefr 1999 cpu0: time
====++ prcfr 1999 cpu1: time
14 dtbuf 3754 totfr
Namei Name-cache Dir-cache 34738 desvn react
Calls hits % hits % 9707 numvn 1 pdwak
8576 frevn 4666 pdpgs
intrn
Disks ad8 ad14 ad15 174988 wire
KB/t 0.00 63.30 0.00 41340 act
tps 0 414 0 260292 inact
MB/s 0.00 25.62 0.00 11488 cache
%busy 0 90 0 4208 free
58672 buf
В следующий раз (тьфу-тьфу-тьфу) это будет моим первым действием, до перетыкания хабов, сетевух, переустановки серверов и т.п. =)
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 18:09:32
LMik
ставь iperf и тестируй скорость через свитч.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 18:10:57
LMik
bmth писал(а):Ради эксперимента попробовал стянуть большой тестовый файл локально. Результат тот же - 8..9Мб/с. systat такого извращения ниже.
А вот тут уже диск уперся в 90% загрузки. Виндовые клиенты кстати какие? конкретно проц интересует.
Пробовал ли напрямую втыкаться в гигабит клиентом с гигабитной картой?
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 19:16:09
bmth
LMik писал(а):
А вот тут уже диск уперся в 90% загрузки.
Если 25Мб/с - это 90%, то максимум получается 28Мб/с. Почему же тогда dd показывает 33Мб/с? Погрешности вычислений?
LMik писал(а):
Виндовые клиенты кстати какие? конкретно проц интересует.
Пробовал ли напрямую втыкаться в гигабит клиентом с гигабитной картой?
Виндовый клиент один гигабитный, второй - стомегабитный. На гигабитной двухядерник AMD 1.9GHz. Качаю FAR'ом. FAR съедает ~30..35% CPU, общая загрузка на 5% больше. Гигабитные карточки пробовал соединять непосредственно кроссом - результат от этого не менялся. И как я выше уже писал, если качать через хаб с двух машин одновременно - полоса в 6..7Мб/с делится между ними, скорость скачивания падает до 2.5..3Мб/с (максимальная скорость скачивания на каждой машине все та же - 6..7Мб/с).
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 19:24:50
zg
попробуй ещё самбу поднять, попробовать покачать
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 19:37:33
manefesto
кстати как вариант лить по NFS
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 23:18:06
Yam
По поводу msk - вот вы и познакомились с нынешним положением дел с сетевыми интерфейсами marvell в freebsd. А под нагрузкой оно еще и падать будет, а с vlan`ами так и вообще чудеса начнутся. ifconfig про msk может приверать. В настоящее время msk в freebsd поломан. PR по этому поводу существует и не закрыт. Крайне не рекомендую продолжать сие использовать. Реалтек тоже не подарок. Хотите нормальной работы на гигабите - ставьте intel. Кроме того проверьте какие патчкорды вы используете, правильно ли они обжаты, для 1000Base-TX должно быть так:
для прямого -

,
для кросса -
Кроме того, как уже посоветовали, оттестировать лучше всего с помощью самого простого iperf, советую там поиграться с размером буфера и найти оптимальный. Это позволит исключить возможные ограничения дисковых накопителей и софта. По результатам уже можно будет делать выводы.
ЗЫ Те сетевые карточки, что в винде как бы работают, как бы на гигабите, в альтернативных осях могут и не выдать ожидаемых результатов.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 23:20:01
Alex Keda
3com - рулит.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-11 23:56:20
paradox
с компа на комп нормальная скорость?
подними самбу на серваке и проверь
если будет аналогична твоему ftp
тогда
1 смотри на согласование дуплексов
2 марвел я бы выкинул - но
если так в нем уверен
то соедени напрямую сервер и комп
и протяни через ftp чего нибудь
3 поставь полу дуплексы с друх сторон
разультаты расскажешь
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-12 1:11:48
LMik
paradox писал(а):с компа на комп нормальная скорость?
подними самбу на серваке и проверь
если будет аналогична твоему ftp
тогда
1 смотри на согласование дуплексов
2 марвел я бы выкинул - но
если так в нем уверен
то соедени напрямую сервер и комп
и протяни через ftp чего нибудь
3 поставь полу дуплексы с друх сторон
разультаты расскажешь
Вот и я говорю, надо иперфом прогнать трафик и понять где тормоза. Скорее всего глюченный марвел, пилят второй год никак не допилят
Про нагрузку на винт в 90% - это было при 414 tps по 64 Кб, будет больше потоков скачивания будет увеличиваться tps понижаться размер на каждый поток, уменьшаться общая скорость отдачи и увеличиваться процент занятости. Вобщем смысла нет в этом гигабите если диск может в один поток гнать 35-50 МБ/с.
Я бы порекомендовал для FTP ZFS поднять в страйпе на паре винтов, или в зеркале для надежности, все это на АМД64 с 2-3 гигами памяти.
Сетевуху минимум интел. Свитч минимум длинк 35 серии.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-15 9:51:26
bmth
Погонял траффик iperf'ом. Резюме: траффик ходит со скоростью от 600 до 875 Мбит/с, что никак не вяжется со 100 Мбит по FTP =( Дальше 875 Мбит/с скорость упирается в проц.
- cоединение напрямую (кросс):
Код: Выделить всё
#iperf -s -w 65536
>iperf.exe -c ftp.local -t 60 -w 65536 -P 2
[ ID] Interval Transfer Bandwidth
[1732] 0.0-60.0 sec 2.37 GBytes 339 Mbits/sec
[1904] 0.0-60.0 sec 2.29 GBytes 328 Mbits/sec
[SUM] 0.0-60.0 sec 4.67 GBytes 668 Mbits/sec
cCPU 83%, sCPU 88% (50% interrupt)
3 users Load 0.87 0.63 0.41
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 39428 4048 152324 6736 54552 count
All 108104 6488 2299516 18952 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4011 total
2 1 43 101k 3 69k 8 120 zfod sio0 irq4
ozfod 6 mskc0 uhci
36.2%Sys 50.0%Intr 1.5%User 0.0%Nice 12.2%Idle %ozfod 3 rl0 atapci
| | | | | | | | | | | daefr atapci1 20
==================+++++++++++++++++++++++++> prcfr 2001 cpu0: time
9 dtbuf totfr 2001 cpu1: time
Namei Name-cache Dir-cache 68650 desvn react
Calls hits % hits % 23030 numvn pdwak
8 8 100 17134 frevn pdpgs
intrn
Disks ad8 ad14 ad15 96352 wire
KB/t 4.00 0.00 0.00 40448 act
tps 0 0 0 807804 inact
MB/s 0.00 0.00 0.00 49932 cache
%busy 0 0 0 4620 free
111744 buf
- cоединение через хаб:
Код: Выделить всё
cCPU 65%, sCPU 75%
#iperf -s -w 65536
>iperf.exe -c ftp.local -t 60 -w 65536 -P 2
[ ID] Interval Transfer Bandwidth
[1732] 0.0-60.0 sec 2.40 GBytes 344 Mbits/sec
[1904] 0.0-60.1 sec 1.81 GBytes 258 Mbits/sec
[SUM] 0.0-60.1 sec 4.21 GBytes 602 Mbits/sec
3 users Load 0.50 0.47 0.39
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 39276 4048 148740 6736 54532 count
All 107972 6488 2295964 18952 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4765 total
1 1 44 86k 3 59k 765 126 zfod sio0 irq4
ozfod 762 mskc0 uhci
30.1%Sys 43.5%Intr 1.7%User 0.0%Nice 24.7%Idle %ozfod 3 rl0 atapci
| | | | | | | | | | | daefr atapci1 20
===============++++++++++++++++++++++> prcfr 2000 cpu0: time
4 dtbuf 1 totfr 2000 cpu1: time
Namei Name-cache Dir-cache 68650 desvn react
Calls hits % hits % 23031 numvn pdwak
17130 frevn pdpgs
intrn
Disks ad8 ad14 ad15 97036 wire
KB/t 12.20 0.00 0.00 40300 act
tps 2 0 0 807284 inact
MB/s 0.02 0.00 0.00 48104 cache
%busy 0 0 0 6428 free
111744 buf
- через хаб, NO_NAGLE:
Код: Выделить всё
cCPU 67%, sCPU 75%
#iperf -s -N -w 65536
>iperf.exe -c ftp.local -N -t 60 -w 65536 -P 2
[ ID] Interval Transfer Bandwidth
[1732] 0.0-60.0 sec 1.73 GBytes 248 Mbits/sec
[1904] 0.0-60.0 sec 2.46 GBytes 352 Mbits/sec
[SUM] 0.0-60.0 sec 4.19 GBytes 600 Mbits/sec
3 users Load 0.49 0.44 0.39
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 39276 4048 148740 6736 54524 count
All 107972 6488 2295964 18952 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4629 total
1 1 44 85k 3 59k 627 124 zfod sio0 irq4
ozfod 623 mskc0 uhci
29.1%Sys 44.2%Intr 1.9%User 0.0%Nice 24.9%Idle %ozfod 4 rl0 atapci
| | | | | | | | | | | daefr atapci1 20
===============++++++++++++++++++++++> prcfr 2001 cpu0: time
6 dtbuf totfr 2001 cpu1: time
Namei Name-cache Dir-cache 68650 desvn react
Calls hits % hits % 23031 numvn pdwak
17130 frevn pdpgs
intrn
Disks ad8 ad14 ad15 97056 wire
KB/t 0.00 0.00 0.00 40308 act
tps 0 0 0 807264 inact
MB/s 0.00 0.00 0.00 48104 cache
%busy 0 0 0 6420 free
111744 buf
- а вот если поменять сервер и клиент местами - достигаются скорости вплоть до 875Мбит/с (на клиентской машине процессор помощнее).
Код: Выделить всё
#iperf -c client.local -t 30 -w 65536 -P 2
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-30.0 sec 1.51 GBytes 433 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-30.0 sec 1.54 GBytes 441 Mbits/sec
[SUM] 0.0-30.0 sec 3.05 GBytes 874 Mbits/sec
Видно, что хаб съедает таки некоторую часть траффика. Также видно, что отдача с ftp сервера достаточно велика и приближается к гигабиту (напомню, что в iperf траффик идет от клиента к серверу), в обратную стороную траффик идет несколько медленее.
Дефолтные настройки в винде я поменял (там сначала окно TCP по умолчанию было 8Кб, поставил 64Кб), но даже с дефолтными настройками iperf показывал скорость ок. 540 Мбит/с.
По поводу производительности винта. Во-первых, как я уже выше писал, винт выдает ок. 32Мб/с. А во-вторых я пробовал качать с рамдиска - результаты те же.
Марвелл у меня тоже поначалу падал, пока я не прописал в loader.conf настройку hw.msk.legacy_intr="1"
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-15 12:59:27
bmth
Качнул локально в /dev/null. Получил те самые 35Мб/с. Где искать затык? (=
Единственный похожий на правду совет я нашел тут:
http://www.opennet.ru/openforum/vsluhfo ... 71989.html
the_Shadow писал(а):
>Эти все траблы только с ФТП наблюдаются.
Ясен пень!
>Похоже что pure-FTP или какими то другими пакетами отдает или хз.
>даже не могу понять в чем проблема и каким путем решать.
Проблема в маркировке пакетов. Для FTP нужно выставить maximum througр-put на файерволле.
См. доки по ipfw/iptables.
Но ни в доках, ни в инете я не нашел ничего про маркировку пакетов, ни про то, как она вляет на производительность, ни про то, как от нее избавиться, или изменить.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-15 13:33:28
f_andrey
bmth писал(а):Но ни в доках, ни в инете я не нашел ничего про маркировку пакетов, ни про то, как она вляет на производительность, ни про то, как от нее избавиться, или изменить.
По моему скромному мнению ищи по волшебному буквосочетанию QoS видимо современные системы обучены обходится с трафиком в зависимости от его типа, и видя что это ФТП для которого скорость в большинстве случаев весьма не критична зарезают его, хотя на пустом канале это выглядит странно, и все таки почему не применить более нормальную для локальной сети технологию nfs, samba, rsynk клиенты для всех ОС существуют, да и удобнее они наверное будут чем ФТП.
Re: Тормозит гигабитный фтп
Добавлено: 2008-10-15 18:45:50
bmth
Короче я нашел в чем затык

)) Я слишком понадеялся на ftp-клиент фара, а в нем есть такой малозначительный косячок - в нем для каждого соединения по умолчанию устанавливается буфер в 512 байт

))) Поменял буфер на 64К - и все заработало; теперь фтп работает на предельной скорости винта. Всем большое спасибо за участие, я многому за это время научился )))