_longhorn_ Posted April 21, 2010 Posted April 21, 2010 Всем добрый день. Недавно столкнулся с интересной проблемой: есть комп Core i7 930, 6Gb DDR3-1600, Intel PRO/1000 PT Dual Port, на нем стоит FreeBSD 7.3-STABLE, mpd5.5, дрова yandex последние, терминация PPPoE, шейп ng_car. Иногда один из процессов ng_queue выжирает до 100% одного из CPU, нагрузка при этом следующая: top -SP PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 15 root 1 171 ki31 0K 16K CPU3 3 71:13 95.56% idle: cpu3 13 root 1 171 ki31 0K 16K RUN 5 69:06 92.87% idle: cpu5 17 root 1 171 ki31 0K 16K CPU1 1 67:13 81.69% idle: cpu1 11 root 1 171 ki31 0K 16K RUN 7 63:41 77.39% idle: cpu7 12 root 1 171 ki31 0K 16K CPU6 6 58:56 72.17% idle: cpu6 14 root 1 171 ki31 0K 16K RUN 4 54:10 65.77% idle: cpu4 16 root 1 171 ki31 0K 16K CPU2 2 50:51 61.28% idle: cpu2 18 root 1 171 ki31 0K 16K CPU0 0 50:15 59.57% idle: cpu0 10946 root 1 43 - 0K 16K WAIT 1 19:18 27.49% em1_rx_kthread_2 45 root 1 43 - 0K 16K CPU7 7 19:31 27.29% em1_rx_kthread_1 44 root 1 43 - 0K 16K CPU4 4 19:29 26.86% em1_rx_kthread_0 10947 root 1 43 - 0K 16K WAIT 6 19:17 26.76% em1_rx_kthread_3 40 root 1 43 - 0K 16K WAIT 0 18:59 25.20% em0_rx_kthread_0 6982 root 1 43 - 0K 16K WAIT 2 18:44 23.97% em0_rx_kthread_2 6983 root 1 43 - 0K 16K WAIT 2 18:45 23.88% em0_rx_kthread_3 41 root 1 43 - 0K 16K WAIT 0 19:01 23.49% em0_rx_kthread_1 20 root 1 -32 - 0K 16K WAIT 3 12:06 6.40% swi4: clock sio 86600 root 1 96 0 79876K 35588K select 0 1:45 0.98% mpd5 43 root 1 -68 - 0K 16K WAIT 0 2:11 0.29% em1_txcleaner 4 root 1 -68 - 0K 16K sleep 5 1:32 0.00% ng_queue2 7 root 1 -68 - 0K 16K sleep 2 1:22 0.00% ng_queue5 39 root 1 -68 - 0K 16K WAIT 7 1:03 0.00% em0_txcleaner 2 root 1 -68 - 0K 16K sleep 0 1:01 0.00% ng_queue0 3 root 1 -68 - 0K 16K sleep 0 0:52 0.00% ng_queue1 9 root 1 -68 - 0K 16K sleep 0 0:36 0.00% ng_queue7 6 root 1 -68 - 0K 16K sleep 5 0:33 0.00% ng_queue4 8 root 1 -68 - 0K 16K sleep 6 0:18 0.00% ng_queue6 5 root 1 -68 - 0K 16K sleep 6 0:12 0.00% ng_queue3 # ifconfig |grep ng|wc -l 1243 netstat -h 1 packets errs bytes packets errs bytes colls 579K 0 343M 679K 0 443M 0 592K 0 352M 697K 0 455M 0 585K 0 348M 687K 0 454M 0 584K 0 355M 684K 0 454M 0 597K 0 355M 698K 0 464M 0 587K 0 352M 687K 0 457M 0 587K 0 352M 691K 0 460M 0 570K 0 341M 675K 0 447M 0 # vmstat -z|grep tG NetGraph items: 72, 65565, 104, 796, 166617025, 0 NetGraph data items: 72, 32805, 1, 10484, 1394356793, 0 при этом 870 Мбит/с трафика. Когда один из ng_queue выростает до 100% начинается потеря пакетов, в это время в vmstat -z: NetGraph items: 72, 65565, 104, 796, 166617025, 0 NetGraph data items: 72, 32805, 9574, 4286, 1394356793, 0 Временно помогло dev.em.0.rx_int_delay=900, dev.em.0.rx_abs_int_delay=2000... При этом на сетевухах все хорошо: em1: Excessive collisions = 0 em1: Sequence errors = 0 em1: Defer count = 0 em1: Missed Packets = 0 em1: Receive No Buffers = 0 em1: Receive Length Errors = 0 em1: Receive errors = 0 em1: Crc errors = 0 em1: Alignment errors = 0 em1: Collision/Carrier extension errors = 0 em1: RX overruns = 0 em1: watchdog timeouts = 0 em1: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0 em1: XON Rcvd = 0 em1: XON Xmtd = 0 em1: XOFF Rcvd = 0 em1: XOFF Xmtd = 0 em1: Good Packets Rcvd = 725605214 em1: Good Packets Xmtd = 688318866 em1: TSO Contexts Xmtd = 0 em1: TSO Contexts Failed = 0 Если кто-то сталкивался с подобным буду признателен за совет, заранее спасибо. Вставить ник Quote
jab Posted April 21, 2010 Posted April 21, 2010 двадцать второй раз повторяю - выкинуть ng_car, и желательно mpd5 сдаунгрейдить до mpd4 Вставить ник Quote
make.kernel Posted April 22, 2010 Posted April 22, 2010 У меня ng_car не дружил с дровами яндекса, я выкинул дрова. Гипертрейдинг - вселенское зло и заговор против человечества. Дрова от интела, cpuset в руки, em0 на cpu0, em1 на cpu 2, все остальные процессы на cpu 4-6 по вкусу. Вставить ник Quote
Zohan Posted April 22, 2010 Posted April 22, 2010 (edited) У меня ng_car не дружил с дровами яндекса, я выкинул дрова. Гипертрейдинг - вселенское зло и заговор против человечества. Дрова от интела, cpuset в руки, em0 на cpu0, em1 на cpu 2, все остальные процессы на cpu 4-6 по вкусу. Советуете сделать machdep.hyperthreading_allowed=0? Edited April 22, 2010 by Zohan Вставить ник Quote
Slad Posted April 23, 2010 Posted April 23, 2010 и желательно mpd5 сдаунгрейдить до mpd4 А чем 4 лучше 5? 4-ку вроде уже особо не правят же? Вставить ник Quote
_longhorn_ Posted April 23, 2010 Author Posted April 23, 2010 Вчера вкрутил ET-шку, объединил её в lagg и завел на неё внешку, PT-шку тоже объединил и пустил внутрь сети. Впринципе это не помогло, только отсрочило час "Х". Нагрузка перед конвульсиями была такая: netstat -h 1 948K 0 596M 915K 0 583M 0 951K 0 604M 916K 0 592M 0 926K 0 591M 894K 0 578M 0 947K 0 598M 911K 0 584M 0 907K 0 598M 870K 0 580M 0 944K 0 601M 910K 0 588M 0 input (Total) output packets errs bytes packets errs bytes colls 943K 0 597M 908K 0 586M 0 970K 0 612M 934K 0 603M 0 951K 0 602M 919K 0 596M 0 948K 0 602M 916K 0 594M 0 944K 0 605M 911K 0 593M 0 1.0M 0 672M 996K 0 666M 0 1.0M 0 644M 971K 0 640M 0 988K 0 629M 954K 0 626M 0 990K 0 633M 955K 0 630M 0 976K 0 632M 940K 0 628M 0 967K 0 632M 933K 0 626M 0 981K 0 634M 950K 0 635M 0 977K 0 632M 943K 0 630M 0 Это около 1300 человек онлайна, в тор-е при этом свободно было процентов по 60 каждого ядра. Затем, когда людей стало больше 1400, ситуация повторилась, тоесть снова ng_queue забрал 100% одного ядра. Пробовать без ng_car будет напряжно, все тарифы прийдется переделывать, сейчас все скорости высылаются радиусом. Попробую сперва без яндексов, если не даст результата - тогда буду откатывать все это на dummynet... Вставить ник Quote
jab Posted April 23, 2010 Posted April 23, 2010 и желательно mpd5 сдаунгрейдить до mpd4А чем 4 лучше 5? 4-ку вроде уже особо не правят же? Тем, что поставил и оно работает годами. Чего там править-то ? Вставить ник Quote
AntonS Posted April 23, 2010 Posted April 23, 2010 год отработал мпд 5.3 щас 5.5 работает пока не вижу проблем режу скорости ng_car сервак жует 840\600 мегабит в пиках ~350kpps около 3900 сессий pptp дрова от яндекса сетвухи 1000 pt только использую ксеоны на ядре нетхем Вставить ник Quote
_longhorn_ Posted April 23, 2010 Author Posted April 23, 2010 сервак жует 840\600 мегабит в пиках~350kpps около 3900 сессий pptp Что у Вас за тарифы такие :-) ? У меня счас 800/690 Мбит/с, чуть больше 1Мппс, 1350 человек. Пока рабтает, но вчера как только перевалило за 1400 история повторилась. Не могу понять в чем дело. Вставить ник Quote
AntonS Posted April 24, 2010 Posted April 24, 2010 тарифы от 512кбит до 4 мегабит ночью в два раза больше есть тарифы по трафику что то у вас pps очень много Вставить ник Quote
_longhorn_ Posted April 24, 2010 Author Posted April 24, 2010 AntonS Pps действительно много, на соседней машине нету lagg, так там pps раза в полтора меньше. Вчера снова начались проблемы, пробовал net.isr.direct=0 с патченым netisr, дал net.isr.maxthreads=8 и ng_queue сразу вернулся в норму. Не пойму никак в чем дело.. Вставить ник Quote
AntonS Posted October 6, 2010 Posted October 6, 2010 та же беда началась как начал статистику собирать mpd5 netflow раньше был ipcad и как то все жило нормально Вставить ник Quote
_longhorn_ Posted October 7, 2010 Author Posted October 7, 2010 AntonS Это уже интересней. У меня тоже нетфлоу через мпд. Так неохота на ipcad перелазить :( Вставить ник Quote
AntonS Posted October 7, 2010 Posted October 7, 2010 прийдется сервак реально в 3-4 раза хуже работает из-за мпд коллектора пытался на горячую с тайминагами поиграться но побарабану грузит ng_queue щас еще один сервак делаю проверю может сделали чтобы Ipcad с ng интерфесов снимал статистику если нет, прийдет ndsad пробовать сдохший проект от нетупа, он умеет но помнится грузил проц сильно Вставить ник Quote
AntonS Posted October 7, 2010 Posted October 7, 2010 ndsad устарел Ipcad не умеет с ng* снимать опять же вернулось все к выбору коллектора Вставить ник Quote
_longhorn_ Posted October 7, 2010 Author Posted October 7, 2010 AntonS Для себя проблему пока решил тупо - поставил еще один сервер. Это конечно не выход, временное решение. Думаю попробовать mpd4, хотя уверенности в том, что это решит проблему нету. Если действительно проблема в ng_netflow, тогда буду пробовать его выносить на другую машину. Вставить ник Quote
AntonS Posted October 7, 2010 Posted October 7, 2010 тоже доставил сервер выход либо по сессиям радиуса счетать либо уводить всех на безлимит Вставить ник Quote
dsk Posted October 7, 2010 Posted October 7, 2010 Если у вас нет ната на этих серверах, то зеркальте out интерфейс свичем и считайте все это на отдельной машине. Вставить ник Quote
_longhorn_ Posted October 8, 2010 Author Posted October 8, 2010 dsk Тоже пришел к такому выводу. Буду пробовать с понедельника. AntonS Все и так на безлимитах, тут другая причина. Начальство хочет, чтобы можно было предоставить детальную статистику по абоненту, поэтому без netflow мне, к сожалению, никак. Вставить ник Quote
AntonS Posted October 8, 2010 Posted October 8, 2010 (edited) dsk Тоже пришел к такому выводу. Буду пробовать с понедельника. AntonS Все и так на безлимитах, тут другая причина. Начальство хочет, чтобы можно было предоставить детальную статистику по абоненту, поэтому без netflow мне, к сожалению, никак. у меня проблема с подсчетомкто на мегабайтных тарифах и если счетать IPcad тупо с сетевой карты а не с ng то выделенный Ip из пула у клиента в биллинге висит пока его кто то другой не займет итог вранье в подсчете трафика, так как IPcad льет всю инфу в биллинга, а он уже раскидывает по клиентам клиент отключился, а трафик сыпется mpd эту проблему решил если тебе просто надо детальная, ставь Ipcad и не мучийся все прекрасно работает Edited October 8, 2010 by AntonS Вставить ник Quote
terrible Posted October 8, 2010 Posted October 8, 2010 А аклы на клиентов mpd вы вешаете или без них всё? Вставить ник Quote
AntonS Posted October 8, 2010 Posted October 8, 2010 без них локальный трафик запрещен файрволом (чтобы не грузили сервер по пусту) а остальное все надо счетать, сидит меньше 2% клиентов на трафике но все таки Вставить ник Quote
AntonS Posted October 8, 2010 Posted October 8, 2010 можно кстати acl добавить в mpd5 чтобы на безлимитных тарифах не обсчитывал тарфик? Вставить ник Quote
andriko Posted October 8, 2010 Posted October 8, 2010 можно кстати acl добавить в mpd5чтобы на безлимитных тарифах не обсчитывал тарфик? можно, наверное, выдавать с радиуса какой-нить другой бандл, в котором нет нетфлоусам не попробывал :( Вставить ник Quote
AntonS Posted October 8, 2010 Posted October 8, 2010 да тут же опять умел бы Ipcad с ng интерфейсов читать проблем бы не было разные пулы для тарифов и фильтр в Ipcad тут фишка чтобы мпд не собирал статистику по свистку из радиуса при подключении к инет Вставить ник 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.