FREEBSD DUMMYNET

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

FREEBSD DUMMYNET

Сообщение ~AsmodeuS~ »

В разделе FAQ опубликованы некоторые идеи по поднятию производительности DUMMYNET

http://abills.net.ua/wiki/doku.php/abil ... 0_dummynet

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Re: FREEBSD DUMMYNET

Сообщение chtito »

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

Алгоритм поиска пайпа: сначала хэширование для нахождения ячейки, а затем линейный поиск потребителя внутри нее .
Таким образом:
net.inet.ip.dummynet.max_chain_len=1024
Это означает, что в данной хэш-ячейке может накопиться не больше 1024 потребителей пайпа, поиск нужного потребителя будет вестись линейно (т.е. медленно), и это для каждого пакета. Не рекомендуется ставить намного выше. чем 16 по умолчанию.
net.inet.ip.dummynet.hash_size=1024
Означает, что у пайпа 1024 хэш-ячеек, в каждой из них до max_chain_len потребителей (одновременных клиентов). Пайпы раскладываются алгоритмом по ячейкам как яйца в корзину. В каждой корзине по max_chain_len (16) яиц. Такая сложная система с использованием хэш-таблиц нужна для быстрого поиска системой нужного потребителя. Без нее пришлось бы на каждый пройденный пакет делать по несколько тысяч сравнений - загнет любой CPU. А так быстренькой хэш функцией находится нужная ячейка, а в ней уже не больше 16 сравнений. Всего у пайпа может быть hash_size*max_chain_len потребителей (общее кол-во яиц). Да-да, hash_size - не глобальный параметр системы, а глобальный для данного пайпа. Каждому пайпу задается свой buckets (a.k.a. hash_size):
ipfw pipe 256 config bw 256kbit/s mask dst-ip 0xffffffff queue 350Kbytes buckets 1024
Если buckets не указан, то значение берется из параметра sysctl net.inet.ip.dummynet.hash_size.

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: FREEBSD DUMMYNET

Сообщение sopov »

А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: FREEBSD DUMMYNET

Сообщение ~AsmodeuS~ »

уже столкнулся ситуацией нетграф имеет ограницение на хуки

в конфигурации

500 vlan в каждом pppoe

при достижении 1800 хуков дальше не создаються ((


/boot/loader.conf

kern.ipc.nmbclusters=32768
kern.ipc.maxsockets=163840
kern.ipc.maxsockbufs=2097152

net.graph.maxalloc=8192
kern.maxusers=2048
kern.ipc.maxpipekva=192000000

/etc/sysctl.conf
net.graph.maxdgram=128000
net.graph.recvspace=128000


Если у Вас 300-500 клиентов без класов трафика это не страшно

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Re: FREEBSD DUMMYNET

Сообщение chtito »

sopov писал(а):А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?
А в чем вы видите ее преимущество? Dummynet прекрасно масштабируется с лимитированием скорости через таблицы (tablearg). В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: FREEBSD DUMMYNET

Сообщение sopov »

~AsmodeuS~ писал(а):уже столкнулся ситуацией нетграф имеет ограницение на хуки
Если у Вас 300-500 клиентов без класов трафика это не страшно
Точно на хуки? Просто нигде не нашел упоминание об этой проблеме...
Сейчас в среднем 800-1000 pppoe сессий на каждом из 2 насов.
There are 2003 total nodes и в каждой в среднем по 2 хука.
chtito писал(а):
sopov писал(а):А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?
А в чем вы видите ее преимущество? Dummynet прекрасно масштабируется с лимитированием скорости через таблицы (tablearg).
В том, что netgraph часть сетевой подсистемы ядра, а не user level. До недавнего времени сам использовал даминет и был им очень доволен, но у ng_car шейп получается очень ровный. Если будет необходимость перейду снова на даминет, но всеже netgraph очень интересный проект.
chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?

chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Re: FREEBSD DUMMYNET

Сообщение chtito »

sopov писал(а):В том, что netgraph часть сетевой подсистемы ядра, а не user level.
Dummynet обработка пакетов целиком и полностью происходят в режиме ядра, ядреннее некуда. Возможно вы путаете с ipfw divert сокетами и natd, работающим в юзер-спейсе, но то не dummynet.
chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?
Пока не загибается. Используются сетевухи bce(4), они к сожалению не поддерживают polling. Скорее раньше чем позже сетевухи будут заменены на что-либо его поддерживающее, например bge(4). Туннелей никаких нет - лимитирование через dummynet линк до 350 mbit/s. Cisco у нас не анализирует трафик, а просто пробрасывает трафик через машину биллинга, учет же и шейпинг происходят уже на ней (учет через ng_netflow & flow-tools).

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: FREEBSD DUMMYNET

Сообщение ~AsmodeuS~ »

2 sopov

а можно ngctl list | wc
?

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: FREEBSD DUMMYNET

Сообщение sopov »

Сейчас нагрузка маленькая, но всеже.
990 8906 76563
Могу сделать вечером в пик.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: FREEBSD DUMMYNET

Сообщение ~AsmodeuS~ »

если не тяжело указанные выше парамеры ещё

у меня при 1800 приходит капец net graph

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: FREEBSD DUMMYNET

Сообщение sopov »

2145 16601 142113

Sergey Shumov
Сообщения: 38
Зарегистрирован: Пн май 05, 2008 4:00 pm
Контактная информация:

Re: FREEBSD DUMMYNET

Сообщение Sergey Shumov »

chtito писал(а):
sopov писал(а):В том, что netgraph часть сетевой подсистемы ядра, а не user level.
Dummynet обработка пакетов целиком и полностью происходят в режиме ядра, ядреннее некуда. Возможно вы путаете с ipfw divert сокетами и natd, работающим в юзер-спейсе, но то не dummynet.
chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?
Пока не загибается. Используются сетевухи bce(4), они к сожалению не поддерживают polling. Скорее раньше чем позже сетевухи будут заменены на что-либо его поддерживающее, например bge(4). Туннелей никаких нет - лимитирование через dummynet линк до 350 mbit/s. Cisco у нас не анализирует трафик, а просто пробрасывает трафик через машину биллинга, учет же и шейпинг происходят уже на ней (учет через ng_netflow & flow-tools).
Я не сторонник использования polling. Он конечно уменьшает загрузку по прерываниям, но вносит задержки - что при высоком pps очень не хорошо. Куда как эффективнее использовать intel сетевухи + дрова от яндекс.
Sergey Shumov
System Administrator
ShS-UANIC
+380938046532

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: FREEBSD DUMMYNET

Сообщение ~AsmodeuS~ »

sopov писал(а):2145 16601 142113

а sysctl можно??

sopov
Сообщения: 610
Зарегистрирован: Вс апр 02, 2006 7:13 pm

Re: FREEBSD DUMMYNET

Сообщение sopov »

В обмен на ответ почему mpd игнорирует параметр

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

RAD:mpd-rule+=1=fwd 127.0.0.1:8080 ip my_net_ip to any
в фильтре негативного депозита :)

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

# $FreeBSD: src/etc/sysctl.conf,v 1.8.28.1 2008/10/02 02:57:24 kensmith Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=100
#net.inet.tcp.sendspace=131072
#net.inet.tcp.recvspace=131072
net.inet.tcp.blackhole=2
#net.link.ether.inet.max_age=600
kern.ipc.somaxconn=8192
kern.ipc.maxsockets=204800
#net.inet.tcp.delayed_ack=0
#net.link.ether.inet.max_age=1200
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
###
net.inet.ip.intr_queue_maxlen=5000
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968
####Polling####
kern.polling.enable=1
kern.polling.burst_max=1000
kern.polling.each_burst=50
#kern.polling.idle_poll=1
kern.polling.user_frac=50
net.inet.ip.fastforwarding=1
net.inet.ip.portrange.randomized=0
net.inet.ip.dummynet.hash_size=512
net.inet.ip.dummynet.io_fast=1
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.maxtcptw=40960
net.inet.ip.portrange.first=1024
net.graph.recvspace=256000
net.graph.maxdgram=256000
kern.ipc.nmbclusters=65536


chtito
Сообщения: 313
Зарегистрирован: Чт дек 13, 2007 11:03 am

Re: FREEBSD DUMMYNET

Сообщение chtito »

Sergey Shumov писал(а): Я не сторонник использования polling. Он конечно уменьшает загрузку по прерываниям, но вносит задержки - что при высоком pps очень не хорошо.
Интересно какая загрузка имелась ввиду. На другом сервере у меня свыше 200 мбит/с загрузки и никаких проблем с поллингом. CPU практически простаивает. При грамотной подстройке под ожидаемую нагрузку пользуясь инфой из man polling не происходит никаких вынужденных дропов. А дополнительная латентность - мизерный (если вобще какой) % к общему времени путешествия пакета.
Sergey Shumov писал(а): Куда как эффективнее использовать intel сетевухи + дрова от яндекс.
поискал в гугле, нашел только информацию за 2 года назад без какого-либо фидбяка: http://groups.google.com/group/lucky.fr ... dada203ed5
Да и потом, снижение общего числа прерываний путем избавления от ТХ прерываний выглядит как-то очень похоже на поллинг, только там избавляешься и от RX тоже. Поллинг явно лучше, чем 15-20 тысяч прерываний в секунду от интерфейса.

Ответить