Совет по оптимизации.

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-13 0:40:06

8.0-RELEASE FreeBSD
используется в качестве раутера: 8 сетевух Intel, драйвера последние с сайта Intel.
роутит 5 сетей, Интернет с помощью mpd5, НАТ через ng_nat, статистика netflow и т.п.
шейпа нет.
Проц Intel Xeon E5335 2000MHz, LGA771, L2 8192Kb, 1333MHz.

Ситуация: из одной подсети в другую пошел трафик (em6 сеть 1, em5 сеть 2):

Код: Выделить всё

netstat -w 1 -I em6 -h -d
            input          (em6)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       13K     0        18M       6.7K     0       1.0M     0     0
       12K     0        17M       6.2K     0       963K     0     0
       12K     0        17M       6.5K     0       1.1M     0     0
       12K     0        16M       5.8K     0       1.0M     0     0

Код: Выделить всё

netstat -w 1 -I em5 -h -d
            input          (em5)           output
   packets  errs      bytes    packets  errs      bytes colls drops
      5.2K     0       337K        13K     0        18M     0     0
      7.9K     0       4.4M        14K     0        18M     0     0
      8.2K     0       4.5M        14K     0        18M     0     0
      5.1K     0       337K        12K     0        18M     0     0
      5.0K     0       330K        12K     0        18M     0     0
Т.е. это практически 144мбит/сек, ну видно юзеры что-то друг с друга активно льют. Всего на всех интерфейсах через фрю проходит в этот момент 400мбит/сек.

Суть проблемы:
В это время появляется задержка (пакеты не теряются, но 50мс до яндекса вместо 3-5мс и падение в скорости) в интернет трафике на другом интерфейсе em2 (ограничение 100мбит/сек), на котором средние показатели работы:

Код: Выделить всё

netstat -w 1 -I em2 -h -d
            input          (em2)           output
   packets  errs      bytes    packets  errs      bytes colls drops
      9.0K     0       7.4M        10K     0       2.6M     0     0
      8.6K     0       6.8M        10K     0       2.7M     0     0
      9.6K     0       7.8M        11K     0       2.9M     0     0
      9.0K     0       7.4M        10K     0       2.5M     0     0
      9.1K     0       7.7M        11K     0       2.7M     0     0
Общая нагрузка на сервер в момент появления трабла (проходит 400мбит/сек):

Код: Выделить всё

last pid: 72858;  load averages:  2.21,  1.93,  1.79   up 22+07:37:01  00:24:45
230 processes: 9 running, 199 sleeping, 22 waiting
CPU:  1.0% user,  0.0% nice, 43.3% system,  3.8% interrupt, 51.9% idle
Mem: 568M Active, 2531M Inact, 643M Wired, 69M Cache, 418M Buf, 104M Free
Swap: 8192M Total, 12K Used, 8192M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     171 ki31     0K    64K RUN     3 440.8H 56.98% {idle: cpu3}
   11 root     171 ki31     0K    64K RUN     1 372.0H 56.30% {idle: cpu1}
   11 root     171 ki31     0K    64K RUN     0 425.3H 51.17% {idle: cpu0}
   11 root     171 ki31     0K    64K RUN     2 408.8H 46.29% {idle: cpu2}
   13 root      72    -     0K    64K CPU2    2  46.6H  9.57% {ng_queue2}
    0 root     -68    0     0K   256K -       1 677:51  9.38% {em5 taskq}
   13 root      72    -     0K    64K sleep   3  46.1H  8.59% {ng_queue0}
   13 root      66    -     0K    64K sleep   3  46.5H  7.18% {ng_queue1}
   13 root      76    -     0K    64K sleep   0  46.1H  4.20% {ng_queue3}
    0 root     -68    0     0K   256K -       0  21.9H  2.20% {em8 taskq}
    0 root     -68    0     0K   256K -       0  19.4H  1.56% {em7 taskq}
    0 root     -68    0     0K   256K CPU1    1 124.2H  1.37% {em2 taskq}
    0 root     -68    0     0K   256K -       1 889:34  0.78% {em6 taskq}
    0 root     -68    0     0K   256K -       3 468:22  0.29% {em4 taskq}
   12 root     -68    -     0K   384K CPU2    2  54.0H  0.20% {irq261: em8}
   12 root     -32    -     0K   384K WAIT    1 430:45  0.10% {swi4: clock}
Обычная нагрузка на сервере ночью (160мбит/сек):

Код: Выделить всё

top -SIH
last pid: 74246;  load averages:  1.39,  1.52,  1.58   up 22+08:36:30  01:24:14
221 processes: 8 running, 190 sleeping, 23 waiting
CPU:  0.0% user,  0.0% nice, 33.7% system,  4.1% interrupt, 62.2% idle
Mem: 570M Active, 2535M Inact, 652M Wired, 55M Cache, 418M Buf, 103M Free
Swap: 8192M Total, 12K Used, 8192M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     171 ki31     0K    64K RUN     0 426.0H 66.89% {idle: cpu0}
   11 root     171 ki31     0K    64K CPU2    2 409.4H 59.57% {idle: cpu2}
   11 root     171 ki31     0K    64K CPU1    1 372.6H 59.18% {idle: cpu1}
   11 root     171 ki31     0K    64K RUN     3 441.4H 56.30% {idle: cpu3}
   13 root      62    -     0K    64K CPU3    3  46.7H  7.08% {ng_queue1}
   13 root      64    -     0K    64K sleep   3  46.3H  6.15% {ng_queue3}
    0 root     -68    0     0K   256K -       1 680:06  5.57% {em5 taskq}
   13 root      58    -     0K    64K CPU2    2  46.8H  5.27% {ng_queue2}
   13 root      66    -     0K    64K sleep   2  46.4H  5.18% {ng_queue0}
    0 root     -68    0     0K   256K -       0  21.9H  3.27% {em8 taskq}
    0 root     -68    0     0K   256K -       2 124.4H  0.98% {em2 taskq}
   12 root     -32    -     0K   384K WAIT    1 431:50  0.10% {swi4: clock}
весь траф ночью:

Код: Выделить всё

netstat -w 1 -h -d
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       21K     0        11M        21K     0        12M     0     0
       26K     0        17M        26K     0        17M     0     0
       29K     0        20M        29K     0        20M     0     0
       28K     0        19M        28K     0        19M     0     0
Через час после замеченной проблемы с задержками и падением производительности.
Пинг нормальный!:

Код: Выделить всё

top -SIH
last pid: 74342;  load averages:  1.94,  1.63,  1.60   up 22+08:39:30  01:27:14
222 processes: 6 running, 192 sleeping, 24 waiting
CPU:  1.2% user,  0.0% nice, 38.2% system,  4.1% interrupt, 56.5% idle
Mem: 570M Active, 2535M Inact, 652M Wired, 53M Cache, 418M Buf, 104M Free
Swap: 8192M Total, 12K Used, 8192M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     171 ki31     0K    64K CPU0    0 426.0H 56.98% {idle: cpu0}
   11 root     171 ki31     0K    64K RUN     1 372.6H 55.18% {idle: cpu1}
   11 root     171 ki31     0K    64K RUN     3 441.4H 51.27% {idle: cpu3}
   11 root     171 ki31     0K    64K CPU2    2 409.4H 50.78% {idle: cpu2}
    0 root     -68    0     0K   256K -       0 680:28  9.08% {em5 taskq}
   13 root      66    -     0K    64K sleep   2  46.4H  7.57% {ng_queue3}
   13 root      65    -     0K    64K CPU1    1  46.8H  6.88% {ng_queue2}
   13 root      67    -     0K    64K sleep   0  46.4H  6.59% {ng_queue0}
    0 root     -68    0     0K   256K -       0  21.9H  3.17% {em8 taskq}
    0 root     -68    0     0K   256K -       1 124.4H  2.49% {em2 taskq}
   13 root      48    -     0K    64K sleep   2  46.7H  2.20% {ng_queue1}
    0 root     -68    0     0K   256K -       2  19.5H  1.27% {em7 taskq}
    0 root     -68    0     0K   256K -       1 892:56  1.17% {em6 taskq}
   12 root     -68    -     0K   384K WAIT    2  54.2H  0.39% {irq261: em8}
Весь траф:

Код: Выделить всё

 netstat -w 1 -h -d
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       50K     0        45M        50K     0        46M     0     0
       48K     0        44M        48K     0        45M     0     0
       46K     0        41M        46K     0        42M     0     0
       51K     0        48M        51K     0        48M     0     0
em6:

Код: Выделить всё

netstat -w 1 -h -d -I em6
            input          (em6)           output
   packets  errs      bytes    packets  errs      bytes colls drops
      8.4K     0        10M       9.7K     0        11M     0     0
      8.8K     0        11M       9.6K     0        11M     0     0
      7.8K     0        10M       5.4K     0       5.2M     0     0
      8.4K     0        10M       9.5K     0        11M     0     0
em5:

Код: Выделить всё

cryonic# netstat -w 1 -h -d -I em5
            input          (em5)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       10K     0        10M       9.1K     0        12M     0     0
       10K     0        11M       8.7K     0        11M     0     0
       10K     0        11M       8.0K     0        10M     0     0
       10K     0        11M       8.5K     0        11M     0     0
em2 (инет):

Код: Выделить всё

netstat -w 1 -h -d -I em2
            input          (em2)           output
   packets  errs      bytes    packets  errs      bytes colls drops
      8.7K     0       7.6M        10K     0       2.8M     0     0
      9.1K     0       8.2M        10K     0       2.6M     0     0
      9.6K     0       8.4M        11K     0       2.9M     0     0
      8.9K     0       7.9M        10K     0       2.5M     0     0
Итого:
Сетевые адаптеры стоят разного типа, например em2 встроена в материнку, а про em6 и em5 не помню какая именно сетевуха. Знаю что на сервере используются две однопортовые сетевухи (одна на разъеме PCI-X, вторая на PCI-E) и одна QUAD (4 порта). Видно на выводе top -SIH, что систему нагружает сетевая em5 (отправляющая 144мбит/сек в свою подсеть), а принимающая эти 144мбит/сек em6 нагружает систему в 12 раз меньше - 9,4% против 0,8%. Видимо и процесс ng_queue поэтому стал нагружать систему.
1. Как я понял, что em5 сетевуха просто хуже чем em6? Или же процесс приема данных и постановка в очередь пакетов на обработку менее ресурсоемкая операция?
2. Может не стоит обращать много внимания на нагрузку сетевух и это просто у меня не хватает мощи на обработку процессов ng_queue (постановка в очередь пакетов)? Есть ли какие способы заставить процессы ng_queue забирать больше процессорного времени, или дело не в этом?
3. Я нахожусь в подсети с em6 и у меня инет начинает работать медленно (см. выше), в других подсетях в этот момент неизвестно что происходит, но вот в это время пинг с самого сервера в инет такой же высокий. Значит не хватает мощи на обработку всего трафа, проходящего через фрю?
4. 144 мбит/с это далеко не гигабит для одного сетевого интерфейса, а 400мбит/сек из которых только порядка 70мбит/сек проходит через нат и слив статы по нетфлоу не предел фри. Ведь как-то можно выжать больше? Или легче роутинг между подсетями отдать какому-нибудь коммутатору, а на фре оставить лишь инет?
5. Если сравнить нагрузку в проблемное время и через час, то не понятно что произошло: практически теже 400мбит/сек, трафик гонится из сети с em6 в сеть с em5 и обратно в одинаковом количестве, но с пингом и с производительностью инета проблем нет. Разница только в том, что на сетевухе не проходит более 100мбит/сек - неужели в этом причина?

Подскажите какие man'ы почитать.
Всем спасибо за советы.

ПС:
на фре порядка 450 правил в ipfw, но пакет проходит в среднем 25.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение manefesto » 2010-06-13 15:52:11

Молодец.
силен.
МОжет оно ?: http://www.lissyara.su/articles/freebsd ... e_polling/
я такой яростный шо аж пиздеЦ
Изображение

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-13 16:10:45

а ведь я читал эту ссылочку то, забыл попробовать.
Тестану на днях, щас еще праздники.
Результаты отпишу обязательно.

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-13 20:31:57

мля
походу это пров чудит че-то, с моим раутером оке все.
Но про Поллинг спасибо.

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение Dog » 2010-06-14 9:21:09

Вот еще полезная ссылочка, с обсуждением: _http://groups.google.com/group/fido7.ru.unix.bsd/browse_thread/thread/75877aaebabc4343/3894835278160bf4#3894835278160bf4
Oh my God, they killed init! Bastards!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Совет по оптимизации.

Непрочитанное сообщение hizel » 2010-06-14 10:19:34

не для всех intel-ов нужен polling
почитайте на forum.nag.ru
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Совет по оптимизации.

Непрочитанное сообщение FreeBSP » 2010-06-15 11:04:09

поллинг нужен мне, когда под 100мбитным потоком 60% проца ложатся на обработку прерываний от rl и vr сетевок
у вас на прерывания идет 4% проца. поллинг может помочь сгладить загруженность но в эффект мне слабо верится

мне как то попалась ссылка, тут народ тюнил фряху и из гигабита выжимали вроде под 700мбпс
http://groups.google.kz/group/fido7.ru. ... 12f2e7f125
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение Dog » 2010-06-15 11:38:07

Я эту же ссылку дал парой постов раньше ;)
Oh my God, they killed init! Bastards!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Совет по оптимизации.

Непрочитанное сообщение hizel » 2010-06-15 12:24:13

у человека intel
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение Dog » 2010-06-15 13:32:01

Да, интеловская гигабитка, em. В треде она и разжевана - по крайней мере в том конкретном посте треда, на который ведет моя ссылка. Хотя его весь почитать имеет смысл, там много здравых и полезных вещей.
Oh my God, they killed init! Bastards!

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-15 20:26:48

"дело было не в бобине" =)
Причина задержек была в реализации нетграфа:
люблю снимать стату по трафику средствами netflow, но на данном раутере мне необходимо было сливать статистику на два разных инстанса: биллинг и nfsen - при этом от впн юзеров (mpd55) траф на биллинг и весь траф на внешнем интерфейсе (включая впн юзеров) на nfsen. Схему нод и хуков придумал сам, ничего лучше двух нод netflow с прикрепленными к каждой ksocket придумать не смог. Т.е. в итоге один поток ВПН юзеров проходил одну ноду netflow и возвращался в ipfw, затем весь поток на внешнем интерфейсе проходил вторую ноду netflow, натился и возвращался в ipfw. На обратном пути трафик проходил все в обратном порядке. Задержка появлялась сразу как только трафик попадал в netgraph. Где-то в инете вычитал совет использовать только одну ноду netflow, а не несколько. "Играл" с значениями sysctl, но безрезультатно; исследование показаний netstat -m и systat -vmstat "как я мог" - ничего не дало. Как только вернул предыдущую схему с использованием по одной ноде ng_netflow, ng_nat, ng_split и ksocket - все стало работать без проблем.
Прицепить к одной ноде netflow две ksocket никак, также как и заставить ноду ksocket лить стату на два разных сенсора.
Вот думаю как заставить фрю работать с несколькими ng_netflow. Какие параметры ядра могут улучшить работу нетграф с несколькими ng_netflow... Или все-таки пусть сам mpd55 сливает netflow стату сам к биллингу.

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-15 20:51:20

кстати, во время задержек и падения производительности было замечено, что на некоторые пакеты (протоколы любые) из всего трафика, проходящего через netgraph, выдавалось сообщение "cannot allocate memory". Насколько я понял, это нехватка памяти выделяемая ядру, ну а вот сами показания в тот момент:
systat -vmstat
Безымянный.jpg
Что имею сейчас с одной нодой ng_netflow (лаг нет):

Код: Выделить всё

netstat -w 1 -h -d
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       48K     0        37M        48K     0        35M     0     0
       51K     0        41M        49K     0        38M     0     0
       46K     0        36M        45K     0        33M     0     0
это проходит 88мбит/сек из 100 возможных (физически) через нетграф:

Код: Выделить всё

netstat -w 1 -h -d -I em2
            input          (em2)           output
   packets  errs      bytes    packets  errs      bytes colls drops
       12K     0        11M        13K     0       3.8M     0     0
       12K     0        11M        13K     0       3.7M     0     0
       12K     0        11M        12K     0       3.7M     0     0
       12K     0        11M        12K     0       3.3M     0     0
       12K     0        11M        12K     0       3.6M     0     0
systat -vmstat:
Безымянный2.jpg

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-06-28 19:09:00

Словил аналогичные глюки с потерями пакетов и сообщением "cannot allocate memory" и с одной нодой ng_netgraph, т.е. я ошибался выше.
Дополнительный анализ выдал следующее:
Как я говорил выше, потери пакетов и увеличенная задержка появлялись при прохождении пакетов правил фаерволла с netgraph. Если посмотреть вывод команды vmstat -z в проблемный момент, то можно увидеть следующее:

Код: Выделить всё

ITEM                     SIZE     LIMIT      USED      FREE  REQUESTS  FAILURES
...
NetGraph items:            72,     4118,        1,      463, 176724444,        0
NetGraph data items:       72,      522,      487,       35, 18683325689,  2111435
...
Как видно присутствует параметр FAILURES на позиции NetGraph data items, как мне кажется здесь и не хватает памяти.
Тюнинг данной позиции производится при помощи: sysctl -w net.graph.maxdata -, который стоял у меня по умолчанию в 512 (столбик LIMIT и значение 522 очень на это число похоже :smile: ).

Код: Выделить всё

sysctl -d net.graph.maxdata
net.graph.maxdata: Maximum number of data queue items to allocate
Делаем:

Код: Выделить всё

echo "net.graph.maxdata=4096" >> /boot/loader.conf
Ну и на будущее:

Код: Выделить всё

echo "net.graph.maxalloc=8192" >> /boot/loader.conf
Ребутаемся и проверяем:

Код: Выделить всё

vmstat -z:
ITEM                     SIZE     LIMIT      USED      FREE  REQUESTS  FAILURES
...
NetGraph items:            72,     8207,        1,      434,   832348,        0
NetGraph data items:       72,     4118,        1,      434, 10437880,        0
...
Смотрим, что будет дальше =)

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-07-12 20:16:54

Что же, тест показал следующее.
Данная проблема возникает тогда, когда почти вся память на сервере переходит в состояние Inactive и Free памяти остается немного (у меня порядка 100МБ). Освобождение Inactive памяти принудительно при помощи программки (она заполняет нулями 1ГБ Inactive gамяти, что позволяет перевести 1ГБ в состоние Free):

Код: Выделить всё

#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char** argv)
{
        size_t s = 1024*1024*1024; /* 1 GB */

        void* p = malloc(s);
        memset(p, 0, s);
        /*sleep(20);*/
        free(p);

        return 0;
}
возвращает сервер в нормальный режим работы без потери пинга, без появления сообщений "cannot allocate memory" и без появления FAILUERS "NetGraph data items".

ВОПРОС: Это баг? Почему может сервак не освобождать Inactive память сам?

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-07-12 21:35:59

Даже если память всю перевести в Free оказывается полностью не решает проблемы. Весь трафик, проходящий через netgraph нестабилен, т.е. может проходить без задержки, а может и с задержкой до 200мс (в основном 30-40, должно быть 3-8), которая появляется спонтанно.
Лечится ВСЕ это ребутом сервера, но это не панацея.
Подскажите куда еще глянуть можно?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Совет по оптимизации.

Непрочитанное сообщение hizel » 2010-07-13 9:13:41

гм, netgraph же в kernelspace... как насчет зарезервировать под ядерные дела побольше вкусной оперативной памяти

Код: Выделить всё

vm.kmem_size=
vm.kmem_size_max=
в /boot/loader.conf
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-07-13 18:54:07

я это пробовал, но все равно не в этом дело.
Память для нетграф забивается полностью только тогда, когда вся оператива переходит в Inactive, у меня на серваке 4 Гига оперативы и пока она полностью кончится пройдет 3-4 недели, а потом уже сетевая подсистема начинает работать нестабильно.

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение Dog » 2010-07-13 18:57:55

В рассылках недавно что-то подобное насчет ZFS мелькало... Там тоже проблема была с Inactive-памятью. На серваке не ZFS часом, может в этом проблема?
Oh my God, they killed init! Bastards!

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-07-13 22:20:38

нет, ufs

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение LMik » 2010-07-13 22:28:39

Граф на хоть сколько нетфлоу нод рисуется карандашиком на бумажке за 2 минуты и склеивается в скриптик. http://habrahabr.ru/tag/netgraph/ читайте ресурсы...
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-07-14 20:14:58

да умею я склеивать скриптик и рисовать схемки - проблема не в этом...

Аватара пользователя
roman_ssh
рядовой
Сообщения: 17
Зарегистрирован: 2008-05-04 18:50:05
Контактная информация:

Re: Совет по оптимизации.

Непрочитанное сообщение roman_ssh » 2010-07-16 16:22:21

Могу ошибаться, но попробуйте посмотреть железо, у меня была подобная проблема, причём 2 раза, причём в разных местах, на стыке freebsd<->cisco cata 2950,3570, на роутере правда был чип постарше, 82558, на борту, это fxpX, как оказалось было банальное несоответствие дуплекса, причём ошибок на интерфейсе не показывал ни свитч, ни фря. Хотя, опять-же, сменил на 4-х портовые emХ и стало щастье.
P.S.
Автору респект, довольно умный мужчина, конкретно за дело взялся ).

KES
рядовой
Сообщения: 28
Зарегистрирован: 2008-11-25 21:48:43

Re: Совет по оптимизации.

Непрочитанное сообщение KES » 2010-07-25 0:56:32

Столкнулся тоже с проблемой queue/pipe. Периодически и-нет начинает тормозить до ужаса и пинг растёт до 100мс
Иногда лечится перезагрузкой файрвола, иногда нет.

но всегда 100% восстанавливается, если использовать следующие pipe:

Код: Выделить всё

c pipe   7 config bw 550Kbit/s      queue 40   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c pipe   8 config bw 550Kbit/s      queue 40   mask dst-ip 0xffffffff gred 0.002/10/30/0.1
c queue  7 config pipe 7            queue 40   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c queue  8 config pipe 8            queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1

c pipe   9 config bw 1100Kbit/s        queue 50   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c pipe  10 config bw 1100Kbit/s        queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1
c queue  9 config pipe 9            queue 50   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c queue 10 config pipe 10           queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1

c pipe  11 config bw 2100Kbit/s        queue 50   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c pipe  12 config bw 2100Kbit/s        queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1
c queue 11 config pipe 11           queue 50   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c queue 12 config pipe 12           queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1

Код: Выделить всё

05009        0           0 allow ip from 10.11.19.1 to any via ng*
05009        0           0 allow ip from any to 10.11.19.1 via ng*
05010     2556      204717 deny log ip from any to 10.0.0.0/8 not dst-port 53 via ng*
05010     2261       74675 deny log ip from 10.0.0.0/8 not 53 to any via ng*
05099 10855196  2221736673 skipto 5100 ip from any to any in recv ng*
05099 14106802 14034495270 skipto 5500 ip from any to any out xmit ng*
05099        0           0 deny log ip from any to any via ng*
05099        0           0 skipto 65000 ip from any to any
05100 10855196  2221736673 count ip from any to any via ng*
05220 10757421  2205953111 pipe tablearg ip from table(15) to any in recv ng*
05221        0           0 queue tablearg ip from table(17) to any in recv ng*
05310        0           0 deny ip from 192.168.13.0/24 to any not dst-port 80 in recv ng*
05490 10840948  2216893743 allow ip from 192.168.0.0/16 to any in recv ng*
05491        0           0 allow ip from 77.93.36.200/29 to any in recv ng*
05492        0           0 allow ip from 77.93.38.32/27 to any in recv ng*
05499        0           0 deny log ip from any to any via ng*
05499        0           0 skipto 65000 ip from any to any
05500 14106802 14034495270 count ip from any to any via ng*
05620 14106802 14034495270 pipe tablearg all from any to "table(14)" out xmit ng*    <<<<<<<<<<<<<<<<<<<<
05621        0           0 queue tablearg ip from any to table(16) out xmit ng*
05890 14043787 13958176150 allow ip from any to 192.168.0.0/16 out xmit ng*
05891        0           0 allow ip from any to 77.93.36.200/29 out xmit ng*
05892        0           0 allow ip from any to 77.93.38.32/27 out xmit ng*
05899        0           0 deny log ip from any to any via ng*
05899        0           0 skipto 65000 ip from any to any

Код: Выделить всё

# ipfw table 14 list
192.168.1.0/24 8
192.168.2.0/24 10
192.168.15.0/24 12
Но при создании:

Код: Выделить всё

c pipe 45 config bw 15Mbit/s     queue 50   mask src-ip 0xffffffff gred 0.002/10/30/0.1
c pipe 46 config bw 15Mbit/s     queue 50   mask dst-ip 0xffffffff gred 0.002/10/30/0.1
c queue 45 config pipe 45 queue 50          mask src-ip 0xffffffff gred 0.002/10/30/0.1
c queue 46 config pipe 46 queue 50          mask dst-ip 0xffffffff gred 0.002/10/30/0.1

с 05620 pipe 46 ip from any to any out xmit ng*
инет начинает глючить: некоторые могут качать со скоростью 30Мбит, а у некоторых она не достигает и 1Мбит
общий канал на 75Мбит загружен на 45Мбит.

Проц не загружен, памяти полно,
CPU: 0.0% user, 0.0% nice, 0.0% system, 3.1% interrupt, 96.9% idle
Mem: 316M Active, 419M Inact, 251M Wired, 92K Cache, 213M Buf, 989M Free
Swap: 4063M Total, 4063M Free

vmstat -z
ошибки только тут:
64 Bucket: 536, 0, 94, 4, 94, 55
128 Bucket: 1048, 0, 851, 1, 851, 44

netstat -m
308/1882/2190 mbufs in use (current/cache/total)
297/989/1286/16384 mbuf clusters in use (current/cache/total/max)
297/983 mbuf+clusters out of packet secondary zone in use (current/cache)
0/44/44/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
681K/2624K/3305K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

не подскажите куда ещё можно копнуть?

vasaf
рядовой
Сообщения: 32
Зарегистрирован: 2009-04-09 12:25:38

Re: Совет по оптимизации.

Непрочитанное сообщение vasaf » 2010-09-27 19:25:12

to roman_ssh: Да особо и нет оборудования которое можно было бы смотреть: сеть - фря - медиаконвертер - пров. Дуплексы и скорости все сверял, патчкорды смотрел.

to KES:
шейпером еще на фре не пользовался, что-либо подсказать не могу.

по ТЕМЕ:
Так сказать, конец истории для меня =)))
Фря8.0, 4 гига оперативы. Оператива где-то за 3 недели переходит в состояние inactive и весь трафик проходящий через нетграф начинает жутко лагать.
Есть скриптик на перле:

Код: Выделить всё

#!/usr/bin/perl
$a = [];
$a[5*10**8] = 1
, после запуска которого в конечном счете оператива вся из Inactive переходит в Free.
Но самое интересное, что после 3-5 сек сервак жестко зависает.
Удаление и запуск заново всех нод и хуков нетграфа также ничего не меняет.
Единственное решение - раз в 3 недели ребутить сервер, что не есть нормальным решением.

Постепенно стал замечать другие траблы с фрей:
- непонятные сообщения вроде attempt to net-add-domain(netgraph) after domainfinalize() при старте моего скрипта с хуками и нодами;
- подвисание соединения mpd5 с другим моим серваком, лечится дисконнектом и реконнектом через сек 10-20;
- при подключении к mpd5 юзера интернета на первое соединение выскакивала ошибка 629, необходимо переподключаться чтобы соединиться...
mpd5 я пробовал и собирать из портов, и ставить при помощи pkg_add - ничего не менялось.
Вообщем все это указывало на netgraph...

Вся эта тема меня надоела и я решил поднять фрю до 8.1-RELEASE в надежде, что многие подобных вещей в ней повторяться не должно: делаю все как обычно (не скажу что я опытен в этом, но всегда переход на новый релиз у меня был успешным и не возникало никаких проблеми) по манам...
В итоге система запустилась, службы и сервисы стартанули, но инета нема... Стал копать, оказалось ядро собралось как бы без netgraph'а, т.е. команды на создание нод и хуков понимались, но параметров для тюнинга нетграфа в ядре не было.
Что же, цепляю новый хард, ставлю с диска 8.1-RELEASE, ставлю нужные мне сервисы при помощи pkg_add, ядро не пересобираю, а подгружаю только модули, копирую конфиги... Все сервисы стартанули, параметры ядра по нетграфу имеются, вроед все в поряде, но инета снова нет. Оказывается новая фишка:
вот как реализован инет (упрощенная схема):
сеть - em6 - (ng_nat, netflow) - em2 - инет

Код: Выделить всё

net.inet.ip.fw.one_pass=0
ipfw add 100 allow all from  $net to any in recv em6
ipfw add 200 netgraph 1 all from $net to any out xmit em2 (слили стату и занатили на $ext_ip)
ipfw add 201 allow all from $ext_ip to any out xmit em2
не работает, а ведь работало...
в итоге трабла вся из-за правила 201, если убрать из него "out xmit em2", то все начинает работать...
Это как? После заворота в netgraph Фря забыла с какого интерфейса его надо было отправлять?

Неее, хватит приключений...

Качнул 7.3-RELEASE 64bit, нарезал болванку, поставил на третий хард, скопировал конфиги и скрипты, поставил все программы и сервисы при помощи pkg_add, нажал старт, пошел пить пиво...

KES
рядовой
Сообщения: 28
Зарегистрирован: 2008-11-25 21:48:43

Re: Совет по оптимизации.

Непрочитанное сообщение KES » 2010-09-27 19:49:11

Может стоит на девятку перейти? ;-)