denis_vid Опубликовано 29 сентября, 2010 · Жалоба Всем привет. Есть сервер Dell PowerEdge 2950 который заюзан в качестве софтшейпера. 2xCoreQuad 4Gb Ram 2 Broadcom Nextreme-II интегрированных сетевых адаптера. OC Freebsd 7.3 Юзается ipfw+dummynet конкретно роутинг шейпинг и все, ната нет. Изначально использовались броадкомовские карточки и все было вроде отлично. Загрузка проца до 40 кП/с была не более 20 % на каждое ядро. Выше 40 тыщ пакетов полезли ошибки на интерфейсах. Причину наши довольно быстро - драйвер карточки юзал маленький объем буфера FIFO и пакеты которые не помещались в буфер дропались. Аппаратно насколько я понял объем буфера максимум 64к. Поиски в нете что изменить в сырцах драйвера для увеличения объема буфера ни к чему не привели, самостоятельное копание сырцов тоже. Т.к. шейпер к тому времени был в бою проблему следовало решать очень быстро и решили ее заменой карточек на Intel PRO 1000 Server Adapter PT. Поначалу родной драйвер из дистрибутива 7.3 в boot/loader hw.em.rxd="4096" hw.em.txd="4096". Ошибки на интерфейсах пропали но сильно возросла загрузка CPU на два ядра которые юзали карточки. При нагрузке 45-50 кП/с загрузка одного ядра достигала 100 % и конечно ошибки и рост пингов. Ладно подумал я) Ставим яндекс дрова. Поставил сделал rx_kthreads на оба адаптера 4 cpuset-ом вручную раскидал процессы которые жрут ресурсы по незагруженным ядрам. На какое то время это дало эффект от 40 до 60 % нагрузки на ядро но ненадолго. Сейчас 60-70 кП/с и загрузка уже до 85 % Привожу top -S в момент минимальной загрузки (утро) PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 14 root 1 171 ki31 0K 16K RUN 4 1551.2 65.92% idle: cpu4 12 root 1 171 ki31 0K 16K CPU6 6 1468.4 56.05% idle: cpu6 21 root 1 -44 - 0K 16K CPU1 4 804.5H 55.42% swi1: net 13 root 1 171 ki31 0K 16K CPU5 5 1460.3 54.98% idle: cpu5 15 root 1 171 ki31 0K 16K CPU3 3 1424.1 51.12% idle: cpu3 16 root 1 171 ki31 0K 16K CPU2 2 1441.2 50.63% idle: cpu2 18 root 1 171 ki31 0K 16K RUN 0 1350.2 46.78% idle: cpu0 17 root 1 171 ki31 0K 16K RUN 1 1269.2 45.75% idle: cpu1 11 root 1 171 ki31 0K 16K RUN 7 1356.4 44.82% idle: cpu7 25065 root 1 43 - 0K 16K WAIT 5 390.5H 39.31% em1_rx_kthread_5 25062 root 1 43 - 0K 16K CPU5 5 364.1H 33.01% em1_rx_kthread_2 25064 root 1 43 - 0K 16K WAIT 6 365.0H 32.62% em1_rx_kthread_4 38 root 1 43 - 0K 16K CPU3 3 390.8H 30.71% em1_rx_kthread_1 37 root 1 43 - 0K 16K WAIT 2 390.1H 29.44% em1_rx_kthread_0 25066 root 1 43 - 0K 16K CPU7 7 358.7H 29.15% em1_rx_kthread_6 33 root 1 43 - 0K 16K CPU4 6 221.8H 22.85% em0_rx_kthread_1 25055 root 1 43 - 0K 16K WAIT 6 205.8H 22.80% em0_rx_kthread_3 25059 root 1 43 - 0K 16K CPU4 0 205.8H 21.97% em0_rx_kthread_7 25054 root 1 43 - 0K 16K WAIT 4 187.4H 14.60% em0_rx_kthread_2 25056 root 1 43 - 0K 16K RUN 7 171.3H 13.23% em0_rx_kthread_4 32 root 1 43 - 0K 16K RUN 1 177.5H 11.72% em0_rx_kthread_0 52 root 1 -68 - 0K 16K - 4 115.6H 1.86% dummynet netstat -w1 root@shaper /etc]# netstat -w1 -i em1 input (Total) output packets errs bytes packets errs bytes colls 40471 0 29560399 39532 0 28508500 0 40707 0 30027397 39491 0 28915777 0 40355 0 29530118 39818 0 28644178 0 40497 0 29498298 38859 0 28463746 0 39904 0 29017020 39240 0 28109825 0 39634 0 29242710 38137 0 28269260 0 39632 0 29360569 38870 0 28425377 0 39634 0 29248165 38657 0 28358764 0 39066 0 28846025 37757 0 27718854 0 40535 0 29338532 39809 0 28321484 0 40295 0 29972966 38744 0 28734627 0 40061 0 29864550 39395 0 29029408 0 39186 0 28731032 37881 0 27757541 0 39048 0 28732234 38049 0 27831635 0 38674 0 28328730 37867 0 27374103 0 38488 0 28235643 37148 0 27241196 0 htop 1 [|||||||||||||||||||||||||||||||||||||||| 42.1%] Tasks: 46 total, 1 running 2 [|||||||||||||||||||||||||||||||||||||||||| 44.8%] Load average: 3.42 3.71 3.50 3 [|||||||||||||||||||||||||||||||||||||||| 43.0%] Uptime: 83 days, 15:30:16 4 [||||||||||||||||||||||||||||||||||||| 39.6%] 5 [|||||||||||||||||||||||||||| 29.1%] 6 [|||||||||||||||||||||||||||||||||||||||| 42.2%] 7 [||||||||||||||||||||||||||||||||||||||| 41.3%] 8 [|||||||||||||||||||||||||||||||||||||||||||||| 48.6%] Mem[||||||||||||||| 581/4080MB] Swp[ 0/4096MB] Как видно выше dummynet сам ресурсы не ест а едят swi1: net и rx_kthread -rxcsum -tso ничего не дало sysctl security.bsd.see_other_uids=0 security.bsd.see_other_gids=0 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 net.inet.icmp.icmplim=10 net.inet.ip.random_id=1 net.inet.ip.forwarding=1 net.inet.ip.fw.one_pass=1 net.inet.ip.redirect=0 net.inet.tcp.sendspace=1048576 net.inet.tcp.recvspace=1048576 net.inet.tcp.msl=15000 kern.ipc.maxsockets=204800 kern.ipc.maxsockbuf=16777216 net.inet.tcp.syncookies=1 kern.ipc.nmbclusters=262144 kern.ipc.somaxconn=24096 net.inet.ip.intr_queue_maxlen=1024 net.inet.tcp.mssdflt=1460 net.inet.tcp.slowstart_flightsize=54 net.inet.ip.fastforwarding=1 net.inet.ip.dummynet.io_fast=1 net.isr.direct=0 net.inet.ip.dummynet.hash_size=1024 net.local.stream.recvspace=65535 net.local.stream.sendspace=65535 net.inet.udp.maxdgram=57344 net.inet.tcp.inflight.enable=0 #net.inet.tcp.hostcache.expire=1 net.inet.tcp.fast_finwait2_recycle=1 net.inet.ip.dummynet.max_chain_len=32 # net.inet.icmp.maskrepl=0 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.icmp.bmcastecho=0 dev.em.0.rx_int_delay=750 dev.em.0.tx_int_delay=750 dev.em.0.rx_abs_int_delay=1500 dev.em.0.tx_abs_int_delay=1500 dev.em.1.rx_int_delay=750 dev.em.1.tx_int_delay=750 dev.em.1.rx_abs_int_delay=1500 dev.em.1.tx_abs_int_delay=1500 dev.em.0.rx_kthreads=4 dev.em.1.rx_kthreads=4 если выключить фастфорвардинг и включить net.isr.direct загрузка возрастает еще на 10 % на ядро а dummynet есть примерно 60% ресрсов проца по топу. net.inet.ip.fw.enable: 1 -> 0 и сразу нагрузка падает CPU: 0.5% user, 0.0% nice, 11.8% system, 0.0% interrupt, 87.7% idle Mem: 106M Active, 803M Inact, 582M Wired, 24K Cache, 418M Buf, 2454M Free Swap: 4096M Total, 4096M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 14 root 1 171 ki31 0K 16K CPU4 4 1551.3 79.98% idle: cpu4 13 root 1 171 ki31 0K 16K RUN 5 1460.4 75.44% idle: cpu5 12 root 1 171 ki31 0K 16K RUN 6 1468.5 74.90% idle: cpu6 15 root 1 171 ki31 0K 16K CPU3 3 1424.2 72.75% idle: cpu3 16 root 1 171 ki31 0K 16K CPU2 2 1441.3 72.22% idle: cpu2 11 root 1 171 ki31 0K 16K RUN 7 1356.5 67.48% idle: cpu7 17 root 1 171 ki31 0K 16K CPU1 1 1269.3 66.60% idle: cpu1 18 root 1 171 ki31 0K 16K CPU0 0 1350.3 65.33% idle: cpu0 21 root 1 -44 - 0K 16K WAIT 0 804.6H 25.54% swi1: net 25065 root 1 43 - 0K 16K CPU1 1 390.6H 20.17% em1_rx_kthread_5 25064 root 1 43 - 0K 16K WAIT 6 365.1H 17.33% em1_rx_kthread_4 25062 root 1 43 - 0K 16K RUN 5 364.1H 17.04% em1_rx_kthread_2 25066 root 1 43 - 0K 16K WAIT 7 358.8H 16.70% em1_rx_kthread_6 38 root 1 43 - 0K 16K WAIT 3 390.9H 16.26% em1_rx_kthread_1 37 root 1 43 - 0K 16K WAIT 2 390.1H 15.09% em1_rx_kthread_0 25059 root 1 43 - 0K 16K WAIT 0 205.8H 14.55% em0_rx_kthread_7 33 root 1 43 - 0K 16K WAIT 2 221.8H 14.31% em0_rx_kthread_1 25055 root 1 43 - 0K 16K WAIT 0 205.8H 13.62% em0_rx_kthread_3 25054 root 1 43 - 0K 16K WAIT 4 187.4H 9.18% em0_rx_kthread_2 25056 root 1 43 - 0K 16K WAIT 7 171.4H 8.40% em0_rx_kthread_4 32 root 1 43 - 0K 16K WAIT 1 177.6H 7.96% em0_rx_kthread_0 83922 root 1 96 0 7276K 2044K select 2 26:02 2.49% htop 52 root 1 -68 - 0K 16K - 3 115.6H 0.68% dummynet 1 [||||||||||||||||||| 19.7%] Tasks: 46 total, 1 running 2 [|||||||||| 10.3%] Load average: 1.97 3.11 3.32 3 [|||||||| 8.4%] Uptime: 83 days, 15:39:25 4 [||||||||| 8.9%] 5 [|||||||| 8.4%] 6 [|||||||||| 10.2%] 7 [|||||| 6.5%] 8 [||||||||| 9.6%] Mem[||||||||||||||| 582/4080MB] Swp[ 0/4096MB] Вот теперь я сижу с этой вроде неслабой железкой с хорошими карточками и ломаю голову почему они не справляется с такой небольшой для них нагрузкой Прошу помощи у людей знающих. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sanchezz Опубликовано 29 сентября, 2010 · Жалоба покажи ifconfig такой же сервак сегодня запустил. только на <Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0x000105> Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
denis_vid Опубликовано 29 сентября, 2010 (изменено) · Жалоба [root@shaper /etc]# ifconfig em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:15:17:cc:de:6a inet x.x.x.x netmask 0xfffffffc broadcast x.x.x.x media: Ethernet autoselect (1000baseTX <full-duplex>) status: active em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=198<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:15:17:cc:de:77 inet x.x.x.x netmask 0xfffffffc broadcast x.x.x.x media: Ethernet autoselect (1000baseTX <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 Изменено 29 сентября, 2010 пользователем denis_vid Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sanchezz Опубликовано 29 сентября, 2010 (изменено) · Жалоба ipfw может приседает хорошо. попробуй оптимизировать его м.б. поллинг нужен? Изменено 29 сентября, 2010 пользователем Sanchezz Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
denis_vid Опубликовано 29 сентября, 2010 (изменено) · Жалоба ipfw может приседает хорошо.попробуй оптимизировать его м.б. поллинг нужен? Пробовал поллинг kern.hz=2000 Загрузка снижается незначительноИспользую отложенные прерывания по sysctl это видно что по идее должно приводить к сравнимому с поллингом эффекту И насколько я понял в случае с em с яндекс драйвером поллинг не советуют использовать рекомендуют int_delay Забыл добавить правила ipfw статические по два на каждого клиента входящий и исходящий Правил сейчас net.inet.ip.fw.static_count: 2865 Мне странно что rx_kthread.потребляют столько CPU и что с броадкомовскими карточками загрузка была в разы ниже Изменено 29 сентября, 2010 пользователем denis_vid Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sid1333 Опубликовано 29 сентября, 2010 · Жалоба Правил сейчасnet.inet.ip.fw.static_count: 2865 Попробуйте уменьшить количество правил хотя бы до сотни! Раскидать правила по таблицам. Поищите по форумам - множество примеров есть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sanchezz Опубликовано 30 сентября, 2010 · Жалоба еще лучше юзать таблицы для смежных правл Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
denis_vid Опубликовано 30 сентября, 2010 · Жалоба Попробую, отпишусь я задумывался про таблицы но наткнулся на мнение что нагрузку вряд ли снизят потому что в итоге таблицы все равно разворачиваются в правила и пакет в итоге проходит через тоже количество правил что и без таблиц Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 30 сентября, 2010 · Жалоба Попробую, отпишусь я задумывался про таблицы но наткнулся на мнение что нагрузку вряд ли снизят потому что в итоге таблицы все равно разворачиваются в правила и пакет в итоге проходит через тоже количество правил что и без таблицтак надо маны смотреть, а не мнения читать. Вот у человека по сути те же проблемы http://forum.nag.ru/forum/index.php?showtopic=60605пакет пройдет столько правил сколько нужно, skipto, tablearg тут лучшие друзья. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 1 октября, 2010 · Жалоба Параметры sysctl dev.em приведены из вывода команды /sbin/sysctl или из файла /etc/sysctl.conf? Если из sysctl.conf, то они могли просто не загрузиться, здесь этот баг драйвера em обсуждался неоднократно. У нас ipfw стал сворачиваться в трубочку на P4+FreeBSD 5.5 даже при небольшом трафике, когда простыня правил выросла до 2000. Перешли на таблицы сначала для ACL, затем для шейперов - всё стало летать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
denis_vid Опубликовано 1 октября, 2010 (изменено) · Жалоба Параметры sysctl dev.em приведены из вывода команды /sbin/sysctl или из файла /etc/sysctl.conf?Если из sysctl.conf, то они могли просто не загрузиться, здесь этот баг драйвера em обсуждался неоднократно. У нас ipfw стал сворачиваться в трубочку на P4+FreeBSD 5.5 даже при небольшом трафике, когда простыня правил выросла до 2000. Перешли на таблицы сначала для ACL, затем для шейперов - всё стало летать. Это из /etc/sysctl.conf но в /sbin/sysctl dev.em вывод что параметры применены. Остальное все в sysctl по умолчанию.Спасибо всем за ответы, ясно в каком направление двигаться Всвязи с этим прошу кому не лень подсказать т.к. не хочется эксперементировать на рабочей машине Как правильно настроить таблицы если сейчас конфиг типа? pipe 13000 config bw 3Mbit/s queue 60 mask dst-ip 0xffffffff pipe 23000 config bw 3Mbit/s queue 60 mask src-ip 0xffffffff правила для клиентов ipfw add 600 pipe 13000 ip from any to x.x.x.x out ipfw add 601 pipe 23000 ip from x.x.x.x to any in Изменено 1 октября, 2010 пользователем denis_vid Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 1 октября, 2010 · Жалоба Всвязи с этим прошу кому не лень подсказать т.к. не хочется эксперементировать на рабочей машине Как правильно настроить таблицы если сейчас конфиг типа? pipe 13000 config bw 3Mbit/s queue 60 mask dst-ip 0xffffffff pipe 23000 config bw 3Mbit/s queue 60 mask src-ip 0xffffffff правила для клиентов ipfw add 600 pipe 13000 ip from any to x.x.x.x out ipfw add 601 pipe 23000 ip from x.x.x.x to any in похо же ссылку http://forum.nag.ru/forum/index.php?showtopic=60605 так и не посмотрел.Там рабочий пример дан. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
denis_vid Опубликовано 1 октября, 2010 · Жалоба Там рабочий пример дан. Спасибо! Как то автоматически цитаты пропускал Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 1 октября, 2010 · Жалоба Как правильно настроить таблицы если сейчас конфиг типа? pipe 13000 config bw 3Mbit/s queue 60 mask dst-ip 0xffffffff pipe 23000 config bw 3Mbit/s queue 60 mask src-ip 0xffffffff правила для клиентов ipfw add 600 pipe 13000 ip from any to x.x.x.x out ipfw add 601 pipe 23000 ip from x.x.x.x to any in Готовый генератор - http://forum.nag.ru/forum/index.php?showtopic=54379 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...