networks Posted December 12, 2010 Posted December 12, 2010 (edited) Есть 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 December 12, 2010 by networks Вставить ник Quote
Ilya Evseev Posted December 12, 2010 Posted December 12, 2010 Поищите "Игорь Сысоев тюнинг FreeBSD sysctl". Это классика жанра. Например, http://dadv.livejournal.com/49013.html Вставить ник Quote
networks Posted December 13, 2010 Author Posted December 13, 2010 А кто-нибудь может подсказать, как посмотреть, что именно происходит в процессах swi1: netisr X ? Чем они заняты в какой-то конкретный момент. На роутере pf nat и dummynet, две сетевые em, проц Core i3 3.20Ghz. Просто делаю net.isr.maxthreads - 3, создаются три thread'а swi1: netisr X, но реально работают только два (третий - вообще не грузит процессор, куда бы его не перемещай cpuset'ом) - интересно, почему только два работают, а третий отдыхает. Вставить ник Quote
networks Posted December 13, 2010 Author Posted December 13, 2010 На другой машине (чистый шейпер 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} Опять же - реально работают два обработчика, а еще два - ничего не делают. С чем это может быть связано? Вставить ник Quote
mikevlz Posted December 14, 2010 Posted December 14, 2010 честных ядер там всего два. Остальные - гипертрединг Вставить ник Quote
networks Posted December 14, 2010 Author Posted December 14, 2010 Т.е. если будет 4 честных ядра - то теоретически, будут работать и два остальных swi? Как они определяют, интересно, "честное" ядро, или нет :) А у Core i5 или i7 - честные 4 ядра? Вставить ник Quote
Ilya Evseev Posted December 14, 2010 Posted December 14, 2010 А у Core i5 или i7 - честные 4 ядра?Настоятельно рекомендуются к прочтению:http://ru.wikipedia.org/wiki/Список_микропроцессоров_Core_i3 http://ru.wikipedia.org/wiki/Список_микропроцессоров_Core_i5 http://ru.wikipedia.org/wiki/Список_микропроцессоров_Core_i7 Вставить ник Quote
Ivan_83 Posted December 14, 2010 Posted December 14, 2010 Как они определяют, интересно, "честное" ядро, или нет :) Возможно зависит от опций, с которыми собрано ядро. Вставить ник Quote
fenix-vt Posted December 20, 2010 Posted December 20, 2010 Так ли интересен гипертрединг для софт-роутера? Может, есть смысл его отключать? Вставить ник Quote
Ivan_83 Posted December 20, 2010 Posted December 20, 2010 Протестируйте под нагрузкой и сами узнаете, нужно оно в вашем случае или нет. Вставить ник Quote
networks Posted December 21, 2010 Author Posted December 21, 2010 Поставил сегодня Core i7 на этот роутер, сделал net.isr.maxthreads = 4. По прежнему 2 треда работают (создают нагрузку на процы), 2 курят бамбук :( Интересно, как их все заставить работать. Или дело в не-распаралеливательности pf? Вставить ник Quote
fenix-vt Posted December 21, 2010 Posted December 21, 2010 Протестируйте под нагрузкой и сами узнаете, нужно оно в вашем случае или нет.Т.е., каждый случай индивидуален и общих рекомендаций нет? Спасибо! Вставить ник Quote
Ivan_83 Posted December 22, 2010 Posted December 22, 2010 Т.е., каждый случай индивидуален и общих рекомендаций нет?Это не винда+квака. Здесь патчи в ядро каждую неделю появляются, как и для многих компонент, естественно они влияют на поведение как системы в целом так и отдельных приложений. Кроме того, на поведение системы и приложений влияют опции с которыми собрано ядро, загруженные драйвера, опции для компилятора и тюнинг системы (лоадер+сисцтл). Само приложение тоже может по разному работать в средах с разным количеством процов и разными опциями сборки и компилятора. Железо тоже по разному работает, те же контролёры памяти от интела и амд могут давать сильно разные результаты для одних и тех же операций. Факторов масса, а их сочетаний ещё больше. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.