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

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

 

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

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


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

 

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

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


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

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

 

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

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


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

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

 

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

Советуете сделать machdep.hyperthreading_allowed=0?
Изменено пользователем Zohan

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


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

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

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

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


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

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

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


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

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

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

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


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

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

 

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

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

 

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

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

~350kpps

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

 

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

сетвухи 1000 pt

 

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

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


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

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

~350kpps

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

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

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


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

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

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

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

 

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

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


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

AntonS

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

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


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

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

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

 

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

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


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

AntonS

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

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


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

прийдется

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

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

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

грузит ng_queue

 

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

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

 

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

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

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


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

ndsad устарел

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

 

 

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

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


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

AntonS

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

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


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

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

 

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

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

 

 

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


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

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

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


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

dsk

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

 

AntonS

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

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


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

dsk

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

 

AntonS

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

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

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

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

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

 

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

 

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

 

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

 

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

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

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

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


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

А аклы на клиентов mpd вы вешаете или без них всё?

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


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

без них

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

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

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

но все таки

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


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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

и фильтр в Ipcad

 

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

 

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


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

Join the conversation

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

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

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

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

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

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

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