Jump to content
Калькуляторы

Странный глюк на FreeBSD-роутере

Есть FreeBSD-роутер (8.0), 2 em-карточки, bgpd+ripd+zebra, NAT (pf), чуток правил и пайпов ipfw. Роутит порядка 300 мбит (интернет), 40-50 kpps (in/out)

 

В принципе, все нормально работает, перегрузки нет - но почему-то сегодня утром (понятное дело - совсем не перегруженное время, наоборот - нагрузка снижена) стало резко всё тормозить, потеря пакетов, роутер не отзывается. В логах несколько демонов одновременно пишут:

 

syslogd: sendto: Cannot allocate memory

dhcpd: send_packet: Cannot allocate memory

ripd[1419]: can't send packet : Cannot allocate memory

bgpd[1415]: can't connect to XXX.XXX.XXX.XXX fd 7 : Cannot allocate memory

 

top посмотрел - памяти свободной навалом (всего 4гб).

Вылечилось ребутом. Поставил vm.kmem_size_max: 536870912 (было 300мб), но не уверен что проблема была в этом. Погуглил - ничего толкового не нашел.

 

Может быть кто-нибудь сталкивался с таким, подскажете куда копать?

Edited by networks

Share this post


Link to post
Share on other sites

А кто-нибудь может подсказать, как посмотреть, что именно происходит в процессах swi1: netisr X ? Чем они заняты в какой-то конкретный момент. На роутере pf nat и dummynet, две сетевые em, проц Core i3 3.20Ghz.

 

Просто делаю net.isr.maxthreads - 3, создаются три thread'а swi1: netisr X, но реально работают только два (третий - вообще не грузит процессор, куда бы его не перемещай cpuset'ом) - интересно, почему только два работают, а третий отдыхает.

Share this post


Link to post
Share on other sites

На другой машине (чистый шейпер dummynet, без NAT, BGP, чего-либо еще, динамические пайпы, одна карточка em, трафик входит в один vlan-интерфейс и выходит из другого - т.е. роутинг) - выставлено net.isr.maxthreads=4 (net.isr.numthreads тоже = 4)

 

top -PSH -b 250 | grep netisr

12 root -44 - 0K 152K WAIT 1 45.9H 25.68% {swi1: netisr 1}

12 root -44 - 0K 152K WAIT 0 55.5H 21.29% {swi1: netisr 0}

12 root -44 - 0K 152K WAIT 1 0:00 0.00% {swi1: netisr 2}

12 root -44 - 0K 152K WAIT 0 0:00 0.00% {swi1: netisr 3}

 

Опять же - реально работают два обработчика, а еще два - ничего не делают. С чем это может быть связано?

Share this post


Link to post
Share on other sites

Т.е. если будет 4 честных ядра - то теоретически, будут работать и два остальных swi? Как они определяют, интересно, "честное" ядро, или нет :)

 

А у Core i5 или i7 - честные 4 ядра?

Share this post


Link to post
Share on other sites

Как они определяют, интересно, "честное" ядро, или нет :)

Возможно зависит от опций, с которыми собрано ядро.

Share this post


Link to post
Share on other sites

Так ли интересен гипертрединг для софт-роутера?

Может, есть смысл его отключать?

Share this post


Link to post
Share on other sites

Протестируйте под нагрузкой и сами узнаете, нужно оно в вашем случае или нет.

Share this post


Link to post
Share on other sites

Поставил сегодня Core i7 на этот роутер, сделал net.isr.maxthreads = 4. По прежнему 2 треда работают (создают нагрузку на процы), 2 курят бамбук :( Интересно, как их все заставить работать. Или дело в не-распаралеливательности pf?

Share this post


Link to post
Share on other sites
Протестируйте под нагрузкой и сами узнаете, нужно оно в вашем случае или нет.
Т.е., каждый случай индивидуален и общих рекомендаций нет?

 

Спасибо!

 

Share this post


Link to post
Share on other sites
Т.е., каждый случай индивидуален и общих рекомендаций нет?
Это не винда+квака.

 

Здесь патчи в ядро каждую неделю появляются, как и для многих компонент, естественно они влияют на поведение как системы в целом так и отдельных приложений.

Кроме того, на поведение системы и приложений влияют опции с которыми собрано ядро, загруженные драйвера, опции для компилятора и тюнинг системы (лоадер+сисцтл).

Само приложение тоже может по разному работать в средах с разным количеством процов и разными опциями сборки и компилятора.

Железо тоже по разному работает, те же контролёры памяти от интела и амд могут давать сильно разные результаты для одних и тех же операций.

 

Факторов масса, а их сочетаний ещё больше.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this