Kucher2 122 Posted 2010-10-09 18:25:15 Share Posted 2010-10-09 18:25:15 Привет всем. Я опять к Вам. Имеется шлюз на 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? Link to post Share on other sites
Neelix 33 Posted 2010-10-09 18:29:50 Share Posted 2010-10-09 18:29:50 трафика совсем мало для такой загрузки целерон 1.5 справляется с 4к пакетов в 15% нагрузки смени конечно, хотя бы на простую pro 100/1000 Link to post Share on other sites
rsst 406 Posted 2010-10-09 18:31:09 Share Posted 2010-10-09 18:31:09 Привет всем. Я опять к Вам. Имеется шлюз на 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%. Микротик. Сетевуха - дешевый гигабитный длинк. Так что думаю не в железке дело. Link to post Share on other sites
Neelix 33 Posted 2010-10-09 18:33:45 Share Posted 2010-10-09 18:33:45 Привет всем. Я опять к Вам. Имеется шлюз на 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 Link to post Share on other sites
Kucher2 122 Posted 2010-10-09 18:52:51 Author Share Posted 2010-10-09 18:52:51 Чёрт...запасной железки нет, не начем эксперименты проводить. Может 8.1 пропатчить как-то можно? Может оптимизация ядра какая-нить... хотя на скрине грузят больше всего именно внешние интерфейсы, похоже. У меня ещё подозрения на банально кривую мать. Потому что она дешёвая, для настольного ПК. ХМ, на внутреннем ИФ тоже задержки. :/ Пингую чичас его со своей машины. Внутренний - PCI карта, хотя и гигабит. Внешний - PCI-E. Все дешёвенькие, конечно. Link to post Share on other sites
adeep 212 Posted 2010-10-09 19:40:14 Share Posted 2010-10-09 19:40:14 замените сетевушку на интел, даже десктоп интел вытянет до 300мбит, у вас процессор скушался благодаря intr Link to post Share on other sites
ZuarasiZ 37 Posted 2010-10-09 20:10:05 Share Posted 2010-10-09 20:10:05 Высокий интеррапт, т.е. до проца не доходит. Нужно искать узкое место в "обвесе" - сетевые карты, жесткий диск и т.п. Link to post Share on other sites
Kucher2 122 Posted 2010-10-09 20:35:06 Author Share Posted 2010-10-09 20:35:06 Ага.. большое спасибо. Буду сетевую искать. Какую кстати посоветуете? Желательно название/цена. Насколько я понял Intel - 2+ головые, т.е. одного слота PCI-E будет достаточно? Нашёл такую: http://fotomag.com.ua/Intel_E1G42ETBLK-info.html и такую http://fotomag.com.ua/Intel_EXPI9402PT-info.html (У этой в описании есть поддержка FreeBSD). Link to post Share on other sites
Mobil 68 Posted 2010-10-09 21:48:04 Share Posted 2010-10-09 21:48:04 Поставьте 2х портовый Интел на шине PCI-E Link to post Share on other sites
KaYot 3,726 Posted 2010-10-10 07:36:12 Share Posted 2010-10-10 07:36:12 Прилагаю скрин TOP -S на шлюзе. Как видно проц не загружен почти. Может сетевую ткнуть другую, типа Intel? Откуда вы взяли что проц не загружен? Как раз загрузка близка к 100% судя по вашему топу, 48% interrupts значит что одно ядро на 100% занято обработкой перываний. Меняйте сетевки или пилите систему, не должно быть такой загрузки даже на дешевом целероне(он ведь таки core2). Link to post Share on other sites
trinity0333 11 Posted 2010-10-10 07:49:23 Share Posted 2010-10-10 07:49:23 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 Link to post Share on other sites
KaYot 3,726 Posted 2010-10-10 07:57:37 Share Posted 2010-10-10 07:57:37 А зачем такие сложности для системы с 2 ядрами и 2 сетевками?) Link to post Share on other sites
Kucher2 122 Posted 2010-10-10 08:45:45 Author Share Posted 2010-10-10 08:45:45 Хез, наверное хочется чтоб работало. Мне всегда казалось что использование дешёвых десктопных железяк для таких целей - когда-то выйдет боком. Просто выбора особого нет. Но с чего-то ж надо начинать... начну с нормальной сетевушки. Link to post Share on other sites
Kucher2 122 Posted 2010-10-13 08:17:41 Author Share Posted 2010-10-13 08:17:41 Включил polling на сетевых, изменил пару значений через sysctl. Ядро собрано правда без оции options HZ=1000 Получилось "те же яйца, но в профиль". На скринах внизу видать, что interrupt теперь хоть и невысокий, зато поднялась нагрузка на систему (оно и понятно, исполнитель сменился, а задача-то осталась). Причём постоянно. Сейчас трафик около 10Мбит в обе стороны и пакетов в совокупности около 5000. Очень надеюсь что новая сетевая исправит положение. А то уже з@е... 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%. Жду сетевую карту. Link to post Share on other sites
Kucher2 122 Posted 2010-10-27 22:26:24 Author Share Posted 2010-10-27 22:26:24 Привезли сегодня двухголовый Intel. Поставил. Сейчас общий трафик порядка 10Мбит, 1500pps. Прописал: sysctl net.inet.ip.fastforwarding=1 Завтра ещё вечером при большом трафике посмотрю, но кажется - дело табак. Картинка вот такая (top -HSP 10). Link to post Share on other sites
Mechanik 49 Posted 2010-10-27 22:31:58 Share Posted 2010-10-27 22:31:58 прибей еще сетевушки каждую к своему ядру Link to post Share on other sites
Kucher2 122 Posted 2010-10-27 22:41:01 Author Share Posted 2010-10-27 22:41:01 прибей еще сетевушки каждую к своему ядру Подскажите пожалуйста как это сделать на FreeBSD? Драйвер к сетевой не ставил. Просто вытащил старые, эту ткнул в материнку, поправил конфиги и стартанул сервер. Это имеет значение? Если да - где взять cвежий драйвер? Поискал в Инете, на официальном сайте Intel есть только для FreeBSD 7, а у меня 8.1. Link to post Share on other sites
Kucher2 122 Posted 2010-10-28 10:55:09 Author Share Posted 2010-10-28 10:55:09 Сделал ifconfig igb0 polling, но по повторному ifconfig никаких изменений в конфигурации сетевой не появилось (нет подтверждения что polling включён). Попробовал прописать настройки в rc.onf и ребутнулся - никого. На "реалтеках" писалось про polling, теперь на "Intel® ET" - нет. Это нормально? Link to post Share on other sites
VitalyMoiseev 113 Posted 2010-10-28 11:01:26 Share Posted 2010-10-28 11:01:26 на igb пулинг не нужен! Link to post Share on other sites
Kucher2 122 Posted 2010-10-28 13:59:45 Author Share Posted 2010-10-28 13:59:45 Ок. Куда тогда ещё копнуть по поводу высокого interrupt? Правил ipfw порядка 900, есть шейп юзеров. Трансляция и проброс ip делает pf. И что посоветуете на счёт драйвера? Link to post Share on other sites
adeep 212 Posted 2010-10-28 14:29:31 Share Posted 2010-10-28 14:29:31 Ок. Куда тогда ещё копнуть по поводу высокого interrupt? Правил ipfw порядка 900, есть шейп юзеров. Трансляция и проброс ip делает pf. И что посоветуете на счёт драйвера? Поллинг надо выкинуть из конфига ядра вообще. Драйвер в базе свежий, менять не надо (если есть желание, то можно обновиться до 8-STABLE). Откажитесь от pf в пользу ipfw nat. Покажите systat -vm 1 Покажите sysctl dev.igb Link to post Share on other sites
alex_o 1,194 Posted 2010-10-28 14:38:44 Share Posted 2010-10-28 14:38:44 У меня на фре 7.2 igb выкобенивалась до тех пор, пока не сделал ifconfig igb0 -lro Попробуй, может на 8.1 этот рецепт еще актуален. Link to post Share on other sites
Den_LocalNet 1,474 Posted 2010-10-28 14:46:39 Share Posted 2010-10-28 14:46:39 и правила файрвола бы посмотреть небось таблицами и пайпами по маске там и не пахнет Link to post Share on other sites
andryas 1,062 Posted 2010-10-28 15:03:06 Share Posted 2010-10-28 15:03:06 /boot/loader.conf hw.em.rx_process_limit="-1" hw.em.rx_abs_int_delay="33" hw.em.rxd="4096" hw.em.txd="4096" hw.em.rx_int_delay=800 hw.em.tx_int_delay=800 И живём без прерываний Link to post Share on other sites
Kucher2 122 Posted 2010-10-28 15:48:02 Author Share Posted 2010-10-28 15:48:02 Поллинг надо выкинуть из конфига ядра вообще. Т.е. его обязательно надо выкинуть? Откажитесь от pf в пользу ipfw nat. Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что. Покажите systat -vm 1Покажите sysctl dev.igb systat: 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 этот рецепт еще актуален. Попробовал, к сожалению не помогло. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now