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

FreeBSD 7.3 ng_queue 100%

Всем добрый день. Недавно столкнулся с интересной проблемой: есть комп 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

 

Если кто-то сталкивался с подобным буду признателен за совет, заранее спасибо.

Share this post


Link to post
Share on other sites

 

двадцать второй раз повторяю - выкинуть ng_car, и желательно mpd5 сдаунгрейдить до mpd4

Share this post


Link to post
Share on other sites

У меня ng_car не дружил с дровами яндекса, я выкинул дрова.

 

Гипертрейдинг - вселенское зло и заговор против человечества. Дрова от интела, cpuset в руки, em0 на cpu0, em1 на cpu 2, все остальные процессы на cpu 4-6 по вкусу.

Share this post


Link to post
Share on other sites
У меня ng_car не дружил с дровами яндекса, я выкинул дрова.

 

Гипертрейдинг - вселенское зло и заговор против человечества. Дрова от интела, cpuset в руки, em0 на cpu0, em1 на cpu 2, все остальные процессы на cpu 4-6 по вкусу.

Советуете сделать machdep.hyperthreading_allowed=0?
Edited by Zohan

Share this post


Link to post
Share on other sites

и желательно mpd5 сдаунгрейдить до mpd4

А чем 4 лучше 5? 4-ку вроде уже особо не правят же?

Share this post


Link to post
Share on other sites

Вчера вкрутил 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...

Share this post


Link to post
Share on other sites
и желательно mpd5 сдаунгрейдить до mpd4
А чем 4 лучше 5? 4-ку вроде уже особо не правят же?

Тем, что поставил и оно работает годами. Чего там править-то ?

Share this post


Link to post
Share on other sites

год отработал мпд 5.3

 

щас 5.5 работает

пока не вижу проблем

 

режу скорости ng_car

сервак жует 840\600 мегабит в пиках

~350kpps

около 3900 сессий pptp

 

дрова от яндекса

сетвухи 1000 pt

 

только использую ксеоны на ядре нетхем

Share this post


Link to post
Share on other sites
сервак жует 840\600 мегабит в пиках

~350kpps

около 3900 сессий pptp

Что у Вас за тарифы такие :-) ? У меня счас 800/690 Мбит/с, чуть больше 1Мппс, 1350 человек. Пока рабтает, но вчера как только перевалило за 1400 история повторилась. Не могу понять в чем дело.

Share this post


Link to post
Share on other sites

тарифы от 512кбит до 4 мегабит

ночью в два раза больше

есть тарифы по трафику

 

что то у вас pps очень много

Share this post


Link to post
Share on other sites

AntonS

Pps действительно много, на соседней машине нету lagg, так там pps раза в полтора меньше. Вчера снова начались проблемы, пробовал net.isr.direct=0 с патченым netisr, дал net.isr.maxthreads=8 и ng_queue сразу вернулся в норму. Не пойму никак в чем дело..

Share this post


Link to post
Share on other sites

та же беда началась

как начал статистику собирать mpd5 netflow

 

раньше был ipcad и как то все жило нормально

Share this post


Link to post
Share on other sites

AntonS

Это уже интересней. У меня тоже нетфлоу через мпд. Так неохота на ipcad перелазить :(

Share this post


Link to post
Share on other sites

прийдется

сервак реально в 3-4 раза хуже работает из-за мпд коллектора

пытался на горячую с тайминагами поиграться

но побарабану

грузит ng_queue

 

щас еще один сервак делаю

проверю может сделали чтобы Ipcad с ng интерфесов снимал статистику

 

если нет, прийдет ndsad пробовать

сдохший проект от нетупа, он умеет но помнится грузил проц сильно

Share this post


Link to post
Share on other sites

ndsad устарел

Ipcad не умеет с ng* снимать

 

 

опять же вернулось все к выбору коллектора

Share this post


Link to post
Share on other sites

AntonS

Для себя проблему пока решил тупо - поставил еще один сервер. Это конечно не выход, временное решение. Думаю попробовать mpd4, хотя уверенности в том, что это решит проблему нету. Если действительно проблема в ng_netflow, тогда буду пробовать его выносить на другую машину.

Share this post


Link to post
Share on other sites

тоже доставил сервер

 

выход либо по сессиям радиуса счетать

либо уводить всех на безлимит

 

 

Share this post


Link to post
Share on other sites

Если у вас нет ната на этих серверах, то зеркальте out интерфейс свичем и считайте все это на отдельной машине.

Share this post


Link to post
Share on other sites

dsk

Тоже пришел к такому выводу. Буду пробовать с понедельника.

 

AntonS

Все и так на безлимитах, тут другая причина. Начальство хочет, чтобы можно было предоставить детальную статистику по абоненту, поэтому без netflow мне, к сожалению, никак.

Share this post


Link to post
Share on other sites
dsk

Тоже пришел к такому выводу. Буду пробовать с понедельника.

 

AntonS

Все и так на безлимитах, тут другая причина. Начальство хочет, чтобы можно было предоставить детальную статистику по абоненту, поэтому без netflow мне, к сожалению, никак.

у меня проблема с подсчетом

кто на мегабайтных тарифах

и если счетать IPcad тупо с сетевой карты а не с ng

то выделенный Ip из пула у клиента в биллинге висит пока его кто то другой не займет

 

итог вранье в подсчете трафика, так как IPcad льет всю инфу в биллинга, а он уже раскидывает по клиентам

 

клиент отключился, а трафик сыпется

 

mpd эту проблему решил

 

если тебе просто надо детальная, ставь Ipcad и не мучийся

все прекрасно работает

Edited by AntonS

Share this post


Link to post
Share on other sites

без них

локальный трафик запрещен файрволом (чтобы не грузили сервер по пусту)

а остальное все надо счетать,

сидит меньше 2% клиентов на трафике

но все таки

Share this post


Link to post
Share on other sites

можно кстати acl добавить в mpd5

чтобы на безлимитных тарифах не обсчитывал тарфик?

Share this post


Link to post
Share on other sites
можно кстати acl добавить в mpd5

чтобы на безлимитных тарифах не обсчитывал тарфик?

можно, наверное, выдавать с радиуса какой-нить другой бандл, в котором нет нетфлоу

сам не попробывал :(

Share this post


Link to post
Share on other sites

да тут же опять

умел бы Ipcad с ng интерфейсов читать

проблем бы не было

разные пулы для тарифов

и фильтр в Ipcad

 

тут фишка чтобы мпд не собирал статистику по свистку из радиуса при подключении к инет

 

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