FREEBSD DUMMYNET
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
FREEBSD DUMMYNET
В разделе FAQ опубликованы некоторые идеи по поднятию производительности DUMMYNET
http://abills.net.ua/wiki/doku.php/abil ... 0_dummynet
http://abills.net.ua/wiki/doku.php/abil ... 0_dummynet
Re: FREEBSD DUMMYNET
Позволю себе некоторые комментарии, основанные на опыте использования пайпов под большой нагрузкой.
Алгоритм поиска пайпа: сначала хэширование для нахождения ячейки, а затем линейный поиск потребителя внутри нее .
Таким образом:
Алгоритм поиска пайпа: сначала хэширование для нахождения ячейки, а затем линейный поиск потребителя внутри нее .
Таким образом:
Это означает, что в данной хэш-ячейке может накопиться не больше 1024 потребителей пайпа, поиск нужного потребителя будет вестись линейно (т.е. медленно), и это для каждого пакета. Не рекомендуется ставить намного выше. чем 16 по умолчанию.net.inet.ip.dummynet.max_chain_len=1024
Означает, что у пайпа 1024 хэш-ячеек, в каждой из них до max_chain_len потребителей (одновременных клиентов). Пайпы раскладываются алгоритмом по ячейкам как яйца в корзину. В каждой корзине по max_chain_len (16) яиц. Такая сложная система с использованием хэш-таблиц нужна для быстрого поиска системой нужного потребителя. Без нее пришлось бы на каждый пройденный пакет делать по несколько тысяч сравнений - загнет любой CPU. А так быстренькой хэш функцией находится нужная ячейка, а в ней уже не больше 16 сравнений. Всего у пайпа может быть hash_size*max_chain_len потребителей (общее кол-во яиц). Да-да, hash_size - не глобальный параметр системы, а глобальный для данного пайпа. Каждому пайпу задается свой buckets (a.k.a. hash_size):net.inet.ip.dummynet.hash_size=1024
Если buckets не указан, то значение берется из параметра sysctl net.inet.ip.dummynet.hash_size.ipfw pipe 256 config bw 256kbit/s mask dst-ip 0xffffffff queue 350Kbytes buckets 1024
Re: FREEBSD DUMMYNET
А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: FREEBSD DUMMYNET
уже столкнулся ситуацией нетграф имеет ограницение на хуки
в конфигурации
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 клиентов без класов трафика это не страшно
в конфигурации
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 клиентов без класов трафика это не страшно
Re: FREEBSD DUMMYNET
А в чем вы видите ее преимущество? Dummynet прекрасно масштабируется с лимитированием скорости через таблицы (tablearg). В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.sopov писал(а):А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?
Re: FREEBSD DUMMYNET
Точно на хуки? Просто нигде не нашел упоминание об этой проблеме...~AsmodeuS~ писал(а):уже столкнулся ситуацией нетграф имеет ограницение на хуки
Если у Вас 300-500 клиентов без класов трафика это не страшно
Сейчас в среднем 800-1000 pppoe сессий на каждом из 2 насов.
There are 2003 total nodes и в каждой в среднем по 2 хука.
В том, что netgraph часть сетевой подсистемы ядра, а не user level. До недавнего времени сам использовал даминет и был им очень доволен, но у ng_car шейп получается очень ровный. Если будет необходимость перейду снова на даминет, но всеже netgraph очень интересный проект.chtito писал(а):А в чем вы видите ее преимущество? Dummynet прекрасно масштабируется с лимитированием скорости через таблицы (tablearg).sopov писал(а):А я вот непойму зачем вобще эта возня с пайпами, если есть ng_car?
Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
Re: FREEBSD DUMMYNET
Dummynet обработка пакетов целиком и полностью происходят в режиме ядра, ядреннее некуда. Возможно вы путаете с ipfw divert сокетами и natd, работающим в юзер-спейсе, но то не dummynet.sopov писал(а):В том, что netgraph часть сетевой подсистемы ядра, а не user level.
Пока не загибается. Используются сетевухи bce(4), они к сожалению не поддерживают polling. Скорее раньше чем позже сетевухи будут заменены на что-либо его поддерживающее, например bge(4). Туннелей никаких нет - лимитирование через dummynet линк до 350 mbit/s. Cisco у нас не анализирует трафик, а просто пробрасывает трафик через машину биллинга, учет же и шейпинг происходят уже на ней (учет через ng_netflow & flow-tools).Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: FREEBSD DUMMYNET
2 sopov
а можно ngctl list | wc
?
а можно ngctl list | wc
?
Re: FREEBSD DUMMYNET
Сейчас нагрузка маленькая, но всеже.
990 8906 76563
Могу сделать вечером в пик.
990 8906 76563
Могу сделать вечером в пик.
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: FREEBSD DUMMYNET
если не тяжело указанные выше парамеры ещё
у меня при 1800 приходит капец net graph
у меня при 1800 приходит капец net graph
Re: FREEBSD DUMMYNET
2145 16601 142113
-
- Сообщения: 38
- Зарегистрирован: Пн май 05, 2008 4:00 pm
- Контактная информация:
Re: FREEBSD DUMMYNET
Я не сторонник использования polling. Он конечно уменьшает загрузку по прерываниям, но вносит задержки - что при высоком pps очень не хорошо. Куда как эффективнее использовать intel сетевухи + дрова от яндекс.chtito писал(а):Dummynet обработка пакетов целиком и полностью происходят в режиме ядра, ядреннее некуда. Возможно вы путаете с ipfw divert сокетами и natd, работающим в юзер-спейсе, но то не dummynet.sopov писал(а):В том, что netgraph часть сетевой подсистемы ядра, а не user level.
Пока не загибается. Используются сетевухи bce(4), они к сожалению не поддерживают polling. Скорее раньше чем позже сетевухи будут заменены на что-либо его поддерживающее, например bge(4). Туннелей никаких нет - лимитирование через dummynet линк до 350 mbit/s. Cisco у нас не анализирует трафик, а просто пробрасывает трафик через машину биллинга, учет же и шейпинг происходят уже на ней (учет через ng_netflow & flow-tools).Цифра для одного наса не совсем реальная - pc загнется по прерываниям даже с fxp сетевухами. Да и число тунелей не показатель. Другое дело pps. Если память мне не изменяет, вы вроде кошек на агрегации использовали?chtito писал(а): В пиковое время 3300+ онлайн абонентов, полет нормальный, никаких искусственных ограничений в системе нет.
Sergey Shumov
System Administrator
ShS-UANIC
+380938046532
System Administrator
ShS-UANIC
+380938046532
-
- Site Admin
- Сообщения: 5746
- Зарегистрирован: Пт янв 28, 2005 3:11 pm
- Контактная информация:
Re: FREEBSD DUMMYNET
sopov писал(а):2145 16601 142113
а sysctl можно??
Re: FREEBSD DUMMYNET
В обмен на ответ почему 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
Re: FREEBSD DUMMYNET
Интересно какая загрузка имелась ввиду. На другом сервере у меня свыше 200 мбит/с загрузки и никаких проблем с поллингом. CPU практически простаивает. При грамотной подстройке под ожидаемую нагрузку пользуясь инфой из man polling не происходит никаких вынужденных дропов. А дополнительная латентность - мизерный (если вобще какой) % к общему времени путешествия пакета.Sergey Shumov писал(а): Я не сторонник использования polling. Он конечно уменьшает загрузку по прерываниям, но вносит задержки - что при высоком pps очень не хорошо.
поискал в гугле, нашел только информацию за 2 года назад без какого-либо фидбяка: http://groups.google.com/group/lucky.fr ... dada203ed5Sergey Shumov писал(а): Куда как эффективнее использовать intel сетевухи + дрова от яндекс.
Да и потом, снижение общего числа прерываний путем избавления от ТХ прерываний выглядит как-то очень похоже на поллинг, только там избавляешься и от RX тоже. Поллинг явно лучше, чем 15-20 тысяч прерываний в секунду от интерфейса.