Перейти к содержимому
Калькуляторы

Странный глюк на 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мб), но не уверен что проблема была в этом. Погуглил - ничего толкового не нашел.

 

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

Изменено пользователем networks

Поделиться сообщением


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

Поищите "Игорь Сысоев тюнинг FreeBSD sysctl". Это классика жанра.

Например, http://dadv.livejournal.com/49013.html

Поделиться сообщением


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

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

 

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

Поделиться сообщением


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

На другой машине (чистый шейпер 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}

 

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

Поделиться сообщением


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

Сколько у i3 2 ?

Поделиться сообщением


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

честных ядер там всего два. Остальные - гипертрединг

Поделиться сообщением


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

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

 

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

Поделиться сообщением


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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

 

Спасибо!

 

Поделиться сообщением


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

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

 

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

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

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

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

 

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

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.