Перейти до

Пора менять железку?


Рекомендованные сообщения

Привет всем. Я опять к Вам. :D

Имеется шлюз на FreeBSD 8.1 RELASE и на нём связка IPFW+PF.

Сам шлюз собран на настольном ПК с 1 слотом PCI и 1 PCI-E. Стоят простенькие сетевые, на чипах Реалтек.

Памяти 1,5ГБ, процессор - простенький двухядерный целерончик, один из самых слабых (то что когда-то впихнулось на материнку).

 

Заметил сегодня такую неприятную для себя картину:

 

При входящем трафике около 40Мбит (3500 пакетов/сек) и исходящем около 20Мбит (тоже около 3500 пакетов/сек) - возрастают пинги на шлюз провайдера с 1-2мс до 40-60мс.

 

Делаю deny allow для всей сети на шлюзе - пинги становятся 1мс.

 

Всё, пора менять железку?

 

Прилагаю скрин TOP -S на шлюзе.

 

Как видно проц не загружен почти. Может сетевую ткнуть другую, типа Intel?

post-3670-089929800 1286648642_thumb.jpg

post-3670-019776900 1286662943_thumb.png

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 107
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Поллинг убрать, ибо он есть жалкой програмной реализацией того, что em и igb умеют аппаратно.

+1   А также забыть как страшный про pfnat и пачки по два пайпа на юзера.

Мне кажется, Вам советуют люди, которые уже прошли Ваш путь и знают, о чём говорят.     У меня на 1-м брасе 2000 туннелей, при 10 тарифных планах всего около 40 правил ipfw с NAT'ом и пайпами вклю

Posted Images

трафика совсем мало для такой загрузки

целерон 1.5 справляется с 4к пакетов в 15% нагрузки

смени конечно, хотя бы на простую pro 100/1000

Ссылка на сообщение
Поделиться на других сайтах

Привет всем. Я опять к Вам. :D

Имеется шлюз на FreeBSD 8.1 RELASE и на нём связка IPFW+PF.

Сам шлюз собран на настольном ПК с 1 слотом PCI и 1 PCI-E. Стоят простенькие сетевые, на чипах Реалтек.

Памяти 1,5ГБ, процессор - простенький двухядерный целерончик, один из самых слабых (то что когда-то впихнулось на материнку).

 

Заметил сегодня такую неприятную для себя картину:

 

При входящем трафике около 40Мбит (3500 пакетов/сек) и исходящем около 20Мбит (тоже около 3500 пакетов/сек) - возрастают пинги на шлюз провайдера с 1-2мс до 40-60мс.

 

Делаю deny allow для всей сети на шлюзе - пинги становятся 1мс.

 

Всё, пора менять железку?

 

Прилагаю скрин TOP -S на шлюзе.

 

 

Sempron 2600+ натит и роутит около 120мбит трафика, загрузка проца до 70-80%. Микротик. Сетевуха - дешевый гигабитный длинк. Так что думаю не в железке дело.

Ссылка на сообщение
Поделиться на других сайтах

Привет всем. Я опять к Вам. :D

Имеется шлюз на FreeBSD 8.1 RELASE и на нём связка IPFW+PF.

Сам шлюз собран на настольном ПК с 1 слотом PCI и 1 PCI-E. Стоят простенькие сетевые, на чипах Реалтек.

Памяти 1,5ГБ, процессор - простенький двухядерный целерончик, один из самых слабых (то что когда-то впихнулось на материнку).

 

Заметил сегодня такую неприятную для себя картину:

 

При входящем трафике около 40Мбит (3500 пакетов/сек) и исходящем около 20Мбит (тоже около 3500 пакетов/сек) - возрастают пинги на шлюз провайдера с 1-2мс до 40-60мс.

 

Делаю deny allow для всей сети на шлюзе - пинги становятся 1мс.

 

Всё, пора менять железку?

 

Прилагаю скрин TOP -S на шлюзе.

 

 

Sempron 2600+ натит и роутит около 120мбит трафика, загрузка проца до 70-80%. Микротик. Сетевуха - дешевый гигабитный длинк. Так что думаю не в железке дело.

Думаю в 8.1 дело

Поставь 7.2-7.3

Ссылка на сообщение
Поделиться на других сайтах

Чёрт...запасной железки нет, не начем эксперименты проводить.

Может 8.1 пропатчить как-то можно? Может оптимизация ядра какая-нить... хотя на скрине грузят больше всего именно внешние интерфейсы, похоже.

У меня ещё подозрения на банально кривую мать. Потому что она дешёвая, для настольного ПК.

 

ХМ, на внутреннем ИФ тоже задержки. :/ Пингую чичас его со своей машины.

Внутренний - PCI карта, хотя и гигабит. Внешний - PCI-E. Все дешёвенькие, конечно.

Ссылка на сообщение
Поделиться на других сайтах

Ага.. большое спасибо. Буду сетевую искать. Какую кстати посоветуете? Желательно название/цена.

Насколько я понял Intel - 2+ головые, т.е. одного слота PCI-E будет достаточно?

Нашёл такую:

http://fotomag.com.ua/Intel_E1G42ETBLK-info.html

и такую

http://fotomag.com.ua/Intel_EXPI9402PT-info.html

(У этой в описании есть поддержка FreeBSD).

Ссылка на сообщение
Поделиться на других сайтах

Прилагаю скрин TOP -S на шлюзе.

Как видно проц не загружен почти. Может сетевую ткнуть другую, типа Intel?

Откуда вы взяли что проц не загружен? Как раз загрузка близка к 100% судя по вашему топу, 48% interrupts значит что одно ядро на 100% занято обработкой перываний. Меняйте сетевки или пилите систему, не должно быть такой загрузки даже на дешевом целероне(он ведь таки core2).

Ссылка на сообщение
Поделиться на других сайтах

em сетевую на шине PCI-E + драйвера от яндекса и будет даже в час-пик типа. Правда фря 8.0

 

last pid: 10426;  load averages:  0.26,  0.22,  0.22                                                                                            up 4+23:50:31  20:40:52
223 processes: 5 running, 200 sleeping, 18 waiting
CPU 0:  0.0% user,  0.0% nice,  8.6% system,  0.0% interrupt, 91.4% idle
CPU 1:  0.4% user,  0.0% nice,  9.4% system,  0.7% interrupt, 89.5% idle
CPU 2:  0.0% user,  0.0% nice,  4.1% system,  0.0% interrupt, 95.9% idle
CPU 3:  0.0% user,  0.0% nice, 15.7% system,  0.0% interrupt, 84.3% idle
Mem: 391M Active, 878M Inact, 436M Wired, 428K Cache, 366M Buf, 1718M Free
Swap: 4096M Total, 4096M Free

 PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  11 root        4 171 ki31     0K    64K RUN     0 425.2H 386.33% idle
   0 root       12 -68    0     0K   176K -       3  47.4H  5.86% kernel
  12 root       18 -64    -     0K   288K WAIT    0  71:43  0.00% intr
2074 mysql      38  44    0   591M   202M ucond   1  39:01  0.00% mysqld

Ссылка на сообщение
Поделиться на других сайтах

Хез, наверное хочется чтоб работало. :D

Мне всегда казалось что использование дешёвых десктопных железяк для таких целей - когда-то выйдет боком. Просто выбора особого нет.

Но с чего-то ж надо начинать... начну с нормальной сетевушки. :D

Ссылка на сообщение
Поделиться на других сайтах

Включил polling на сетевых, изменил пару значений через sysctl.

Ядро собрано правда без оции

options HZ=1000

 

Получилось "те же яйца, но в профиль".

На скринах внизу видать, что interrupt теперь хоть и невысокий, зато поднялась нагрузка на систему (оно и понятно, исполнитель сменился, а задача-то осталась). Причём постоянно.

Сейчас трафик около 10Мбит в обе стороны и пакетов в совокупности около 5000.

 

Очень надеюсь что новая сетевая исправит положение. А то уже з@е... :blink:

 

sysctl | grep polling

kern.polling.idlepoll_sleeping: 0
kern.polling.stalled: 3576
kern.polling.suspect: 870762
kern.polling.phase: 0
kern.polling.handlers: 2
kern.polling.residual_burst: 0
kern.polling.pending_polls: 0
kern.polling.lost_polls: 2410641
kern.polling.short_ticks: 118
kern.polling.reg_frac: 20
kern.polling.user_frac: 50
kern.polling.idle_poll: 1
kern.polling.each_burst: 5
kern.polling.burst_max: 300
kern.polling.burst: 171

 

vmstat -i

interrupt                          total       rate
irq1: atkbd0                        1345          0
irq19: atapci1                   5528785          5
irq20: re1                    1836753550       1764
cpu0: timer                   2056174281       1974
irq256: re0                   1944982931       1867
cpu1: timer                   2056174167       1974
Total                         7899615059       7586

 

Щас добавил в ядро "options HZ=1000", пересобрал и ребутнулся. То же самое.

 

Помониторил вечером - нагрузка частично "перетекает" на system с interrupt. Возможно благодаря этому пинги уменьшились в 2-3 раза, но всё равно "не фонтан", ибо когда нагрузка совсем мала - пинги 1мс, сейчас 2-18. И по прежнему есть потери пакетов при этой свистопляске, 1-2%.

Жду сетевую карту.

post-3670-074355400 1286957378_thumb.jpg

post-3670-070512100 1286957385_thumb.png

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...

Привезли сегодня двухголовый Intel. Поставил. Сейчас общий трафик порядка 10Мбит, 1500pps.

Прописал:

sysctl net.inet.ip.fastforwarding=1

Завтра ещё вечером при большом трафике посмотрю, но кажется - дело табак. :)

Картинка вот такая (top -HSP 10).

post-3670-082216500 1288218289_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

прибей еще сетевушки каждую к своему ядру

Подскажите пожалуйста как это сделать на FreeBSD?

 

Драйвер к сетевой не ставил. Просто вытащил старые, эту ткнул в материнку, поправил конфиги и стартанул сервер. Это имеет значение?

Если да - где взять cвежий драйвер?

Поискал в Инете, на официальном сайте Intel есть только для FreeBSD 7, а у меня 8.1.

Ссылка на сообщение
Поделиться на других сайтах

Сделал ifconfig igb0 polling, но по повторному ifconfig никаких изменений в конфигурации сетевой не появилось (нет подтверждения что polling включён). Попробовал прописать настройки в rc.onf и ребутнулся - никого.

На "реалтеках" писалось про polling, теперь на "Intel® ET" - нет. Это нормально?

Ссылка на сообщение
Поделиться на других сайтах

Ок. :)

Куда тогда ещё копнуть по поводу высокого interrupt?

Правил ipfw порядка 900, есть шейп юзеров. Трансляция и проброс ip делает pf.

И что посоветуете на счёт драйвера?

Ссылка на сообщение
Поделиться на других сайтах

Ок. :)

Куда тогда ещё копнуть по поводу высокого interrupt?

Правил ipfw порядка 900, есть шейп юзеров. Трансляция и проброс ip делает pf.

И что посоветуете на счёт драйвера?

Поллинг надо выкинуть из конфига ядра вообще. Драйвер в базе свежий, менять не надо (если есть желание, то можно обновиться до 8-STABLE).

Откажитесь от pf в пользу ipfw nat.

 

Покажите systat -vm 1

Покажите sysctl dev.igb

Ссылка на сообщение
Поделиться на других сайтах

У меня на фре 7.2 igb выкобенивалась до тех пор, пока не сделал ifconfig igb0 -lro

Попробуй, может на 8.1 этот рецепт еще актуален.

Ссылка на сообщение
Поделиться на других сайтах
Поллинг надо выкинуть из конфига ядра вообще.

Т.е. его обязательно надо выкинуть?

Откажитесь от pf в пользу ipfw nat.

Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что.

 

Покажите systat -vm 1

Покажите sysctl dev.igb

 

systat:

6eb03c1fdbe3.jpg

sysctl:

dev.igb.0.%desc: Intel(R) PRO/1000 Network Connection version - 1.7.3
dev.igb.0.%driver: igb
dev.igb.0.%location: slot=0 function=0
dev.igb.0.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.0.%parent: pci1
dev.igb.0.debug: -1
dev.igb.0.stats: -1
dev.igb.0.flow_control: 3
dev.igb.0.enable_aim: 1
dev.igb.0.low_latency: 128
dev.igb.0.ave_latency: 450
dev.igb.0.bulk_latency: 1200
dev.igb.0.rx_processing_limit: 100
dev.igb.1.%desc: Intel(R) PRO/1000 Network Connection version - 1.7.3
dev.igb.1.%driver: igb
dev.igb.1.%location: slot=0 function=1
dev.igb.1.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.1.%parent: pci1
dev.igb.1.debug: -1
dev.igb.1.stats: -1
dev.igb.1.flow_control: 3
dev.igb.1.enable_aim: 1
dev.igb.1.low_latency: 128
dev.igb.1.ave_latency: 450
dev.igb.1.bulk_latency: 1200
dev.igb.1.rx_processing_limit: 100

 

ipfw list:

#Пропускает драфик для DNS и NTP
00004 allow udp from any 123 to any dst-port 123
00005 allow ip from any 22 to any dst-port 22
00015 allow udp from 127.0.0.1 53 to any
00016 allow udp from any to 127.0.0.1 dst-port 53

00040 allow icmp from 10.0.0.0/24 to any via igb0 icmptypes 0,8
00041 allow icmp from 10.0.1.0/24 to any via igb0 icmptypes 0,8
00042 allow icmp from 10.0.2.0/24 to any via igb0 icmptypes 0,8
00043 allow icmp from 10.0.3.0/24 to any via igb0 icmptypes 0,8
00044 allow icmp from 10.0.4.0/24 to any via igb0 icmptypes 0,8
00045 allow icmp from 10.0.5.0/24 to any via igb0 icmptypes 0,8
00046 allow icmp from 10.0.6.0/24 to any via igb0 icmptypes 0,8

#Попытка пропускать VPN-трафик 
00051 allow tcp from any to me dst-port 1723 setup
00052 allow tcp from me to any dst-port 1723 setup
00053 allow gre from me to any
00054 allow gre from any to me

00059 deny log logamount 100 icmp from any to any frag
00060 allow icmp from any to any via igb1
00070 deny log logamount 100 ip from any to 127.0.0.0/8
00080 deny log logamount 100 ip from 127.0.0.0/8 to any
00100 allow ip from any to any via lo0

#Правила для авторизатора
00299 allow udp from any 8888 to 192.168.0.0/24 dst-port 8888 via igb0
00300 allow udp from any 8888 to 10.0.0.0/24 dst-port 8888 via igb0
00301 allow udp from any 8888 to 10.0.1.0/24 dst-port 8888 via igb0
00302 allow udp from any 8888 to 10.0.2.0/24 dst-port 8888 via igb0
00303 allow udp from any 8888 to 10.0.3.0/24 dst-port 8888 via igb0
00304 allow udp from any 8888 to 10.0.4.0/24 dst-port 8888 via igb0
00305 allow udp from any 8888 to 10.0.5.0/24 dst-port 8888 via igb0
00306 allow udp from any 8888 to 10.0.6.0/24 dst-port 8888 via igb0

#Правила для конфигуратора
00314 allow tcp from 10.0.0.10 5555 to 10.0.1.2 via igb0
00315 allow tcp from 10.0.1.2 to 10.0.0.10 dst-port 5555 via igb0
00320 allow tcp from 10.0.0.10 5555 to 10.0.1.5 via igb0
00321 allow tcp from 10.0.1.5 to 10.0.0.10 dst-port 5555 via igb0
00322 allow tcp from 10.0.0.10 5555 to 10.0.2.5 via igb0
00323 allow tcp from 10.0.2.5 to 10.0.0.10 dst-port 5555 via igb0
00324 allow tcp from 10.0.0.10 5555 to 10.0.3.5 via igb0
00325 allow tcp from 10.0.3.5 to 10.0.0.10 dst-port 5555 via igb0

#Разрешить подсетям ходит на внутренний WEB-сервер без подключения к Инету
00400 allow tcp from me 80 to 10.0.0.0/24
00410 allow tcp from 10.0.0.0/24 to me dst-port 80
00420 allow tcp from me 80 to 10.0.1.0/24
00430 allow tcp from 10.0.1.0/24 to me dst-port 80
00440 allow tcp from me 80 to 10.0.2.0/24
00450 allow tcp from 10.0.2.0/24 to me dst-port 80
00460 allow tcp from me 80 to 10.0.3.0/24
00470 allow tcp from 10.0.3.0/24 to me dst-port 80
00480 allow tcp from me 80 to 10.0.4.0/24
00480 allow tcp from me 80 to 10.0.5.0/24
00480 allow tcp from me 80 to 10.0.6.0/24
00490 allow tcp from 10.0.4.0/24 to me dst-port 80
00490 allow tcp from 10.0.5.0/24 to me dst-port 80
00490 allow tcp from 10.0.6.0/24 to me dst-port 80

#Счётчик для графиков
00500 count ip from any to any out via igb0
00510 count ip from any to any in via igb0
00520 count ip from any to any via igb0
00600 count ip from 10.0.0.0/8 to any out via igb0
00610 count ip from 172.16.0.0/12 to any out via igb0
00620 count ip from 192.168.0.0/24 to any out via igb0
00630 count ip from 91.201.176.0/22 to any out via igb0
00700 count ip from any to 10.0.0.0/8 in via igb0
00710 count ip from any to 172.16.0.0/12 in via igb0
00720 count ip from any to 192.168.0.0/24 in via igb0
00750 count ip from any to 192.168.0.10 via igb0
00751 count ip from 192.168.0.10 to any via igb0
00760 count ip from 10.0.0.0/8 to 192.168.0.10 via igb0
00761 count ip from 172.16.0.0/12 to 192.168.0.10 via igb0
00762 count ip from 192.168.0.0/24 to 192.168.0.10 via igb0
00770 count ip from 192.168.0.10 to 10.0.0.0/8 via igb0
00771 count ip from 192.168.0.10 to 172.16.0.0/12 via igb0
00772 count ip from 192.168.0.10 to 192.168.0.0/24 via igb0
00773 count ip from 192.168.0.10 to 91.201.176.0/22 via igb0

#разрешить DNS для подсетей, даже если Нет доступа в Инет
19040 allow udp from 10.0.0.0/24 to any dst-port 53 via igb0
19049 allow udp from any 53 to 192.168.0.0/24 via igb0
19050 allow udp from any 53 to 10.0.0.0/24 via igb0
19051 allow udp from any 53 to 10.0.1.0/24 via igb0
19052 allow udp from any 53 to 10.0.2.0/24 via igb0
19053 allow udp from any 53 to 10.0.3.0/24 via igb0
19054 allow udp from any 53 to 10.0.4.0/24 via igb0
19055 allow udp from any 53 to 10.0.5.0/24 via igb0
19056 allow udp from any 53 to 10.0.6.0/24 via igb0
19056 allow udp from any 53 to 192.168.0.0/24 via igb0

#Правила для юзеров
29008 allow icmp from 10.0.1.56 to any icmptypes 0,3,4,11,12
29009 pipe 29001 ip from any to 10.0.1.56 via igb0
29010 pipe 29002 ip from 10.0.1.56 to any via igb0
#Правила для юзеров

50020 deny log logamount 100 ip from 10.0.0.0/24 to 10.0.0.10 via igb0
50021 deny log logamount 100 ip from 192.168.10.0/24 to 192.168.20.1 via igb0
50022 deny log logamount 100 ip from 192.168.10.0/24 to 192.168.30.1 via igb0
50029 allow tcp from any to any out via igb1 setup
50030 allow tcp from any to any via igb1 established
50031 allow udp from any to any out via igb1
50032 allow udp from any to any in recv igb1
65534 deny log logamount 100 ip from any to any
65535 deny ip from any to any

 

alex_o, andryas - спасибо за помощь, попробую как только смогу.

 

У меня на фре 7.2 igb выкобенивалась до тех пор, пока не сделал ifconfig igb0 -lro

Попробуй, может на 8.1 этот рецепт еще актуален.

Попробовал, к сожалению не помогло.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...