jab Опубликовано 10 июня, 2009 · Жалоба Например стоит увеличить net.inet.ip.dummynet.hash_size до 256 И продублировать buckets 256 при создании pipes. У меня, как оказалось 512 везде стоит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dansoftware Опубликовано 10 июня, 2009 · Жалоба Ну человеку, имеющему представления о программировании, должно быть интуитивно понятно, что если некий хэш имеет слишком малый размер, то он очень быстро заполняется при большом числе одновременных соединений. Чтобы обработать все новые и новые пакеты dummynet вынужден удалять старые записи и вносить новые, пересчитывая ключ, вместо того, чтобы просто хранить записи в памяти. Такой хэш является узким местом и отнимает процессорное время.Думаю, не стоит лезть в исходники без сильной нужды, т.к. самостоятельные исправления трудно поддерживать. Лучше сначала покрутить переменные sysctl. А установка еще одной переменной sysctl net.inet.ip.dummynet.expire=0 не будет способствовать снижению нагрузки на CPU правда за счет утилизации большего объема ОЗУ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IvanI Опубликовано 10 июня, 2009 · Жалоба Интересная тема, посмотрел, подумал, попробую подвести итог по настройке думинета: #define HASHSIZE 16 !!целое 2 в степени посоветую ставить - корень из (макс_шейперов(и динамические и в обе стороны)) и оноже в шестнадцатиричном виде в конце #define HASH(num) ((((num) >> 8) ^ ((num) >> 4) ^ (num)) & 0x0f) net.inet.ip.dummynet.expire=1 размер хеша меньше и время поиска тоже net.inet.ip.dummynet.max_chain_len: 16 макс динамических шейперов в 1 шаблоне net.inet.ip.dummynet.hash_size: 64 макс_шейперов(и динамические и в обе стороны) ну и на вырост все колличества шейперов множить на 2-4 допустим онлайн 250 учеток по 2 шейпера на учетку минимум - 512 в 1 тарифе до 110 учеток с выростом в 4 раза #define HASHSIZE 32 !!целое 2 в степени #define HASH(num) ((((num) >> 8) ^ ((num) >> 4) ^ (num)) & 0x1f) по моему будет эффективно для от 512 до 2048 шейперов net.inet.ip.dummynet.max_chain_len: 512 net.inet.ip.dummynet.hash_size: 2048 покритикуйте пожалуста Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dm1try Опубликовано 10 июня, 2009 · Жалоба А я продолжаю набивать 4-х ядерный ксеон нодами ng_car :) По 1500 в 10 тарифных планов, для начала :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Deac Опубликовано 10 июня, 2009 (изменено) · Жалоба Интересная тема, посмотрел, подумал, попробую подвести итог по настройке думинета: #define HASHSIZE 16 !!целое 2 в степени посоветую ставить - корень из (макс_шейперов(и динамические и в обе стороны)) и оноже в шестнадцатиричном виде в конце #define HASH(num) ((((num) >> 8) ^ ((num) >> 4) ^ (num)) & 0x0f) net.inet.ip.dummynet.expire=1 размер хеша меньше и время поиска тоже net.inet.ip.dummynet.max_chain_len: 16 макс динамических шейперов в 1 шаблоне net.inet.ip.dummynet.hash_size: 64 макс_шейперов(и динамические и в обе стороны) ну и на вырост все колличества шейперов множить на 2-4 допустим онлайн 250 учеток по 2 шейпера на учетку минимум - 512 в 1 тарифе до 110 учеток с выростом в 4 раза #define HASHSIZE 32 !!целое 2 в степени #define HASH(num) ((((num) >> 8) ^ ((num) >> 4) ^ (num)) & 0x1f) по моему будет эффективно для от 512 до 2048 шейперов net.inet.ip.dummynet.max_chain_len: 512 net.inet.ip.dummynet.hash_size: 2048 покритикуйте пожалуста Всё так, только в отличие от OID-ов в sysctl, изменение HASHSIZE требует пересборки ядра с последующим ребутом, потому ставим 64 Остальное крутим на ходу и ПОСТОЯННО контролируем распределение памяти. Изменено 10 июня, 2009 пользователем Deac Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба А я продолжаю набивать 4-х ядерный ксеон нодами ng_car :) По 1500 в 10 тарифных планов, для начала :) Сколько гигабит поток, и номер xeon'а ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 10 июня, 2009 · Жалоба Интересная тема, посмотрел, подумал, попробую подвести итог по настройке думинета:Значения sysctl-переменных, влияющих на работу dummynet, описаны в man и на странице автора http://www.iet.unipi.it/~luigi/ip_dummynet/ . При желании, можно найти и для ipfw. net.inet.ip.dummynet.expire=1размер хеша меньше и время поиска тоже Не нужно гадать, читайте документацию. Там сказано: delete dynamic pipes when they become empty. Удаление записей для динамических пайпов, когда все пакеты кончаются. Если памяти много, то можно ставить 0. net.inet.ip.dummynet.max_chain_len: 16макс динамических шейперов в 1 шаблоне Вы путаете понятия pipe и shaper. Shaper -- устройство для распределения полосы пропускания между абонентами. Pipe -- это очередь с дисциплиной token bucket. допустим онлайн 250 учеток по 2 шейпера на учетку минимум - 512в 1 тарифе до 110 учеток с выростом в 4 раза #define HASHSIZE 32 !!целое 2 в степени #define HASH(num) ((((num) >> 8) ^ ((num) >> 4) ^ (num)) & 0x1f) по моему будет эффективно для от 512 до 2048 шейперов net.inet.ip.dummynet.max_chain_len: 512 net.inet.ip.dummynet.hash_size: 2048 Как уже говорилось, не следует экономить на памяти. Нужно прикинуть максимально возможное число пользователей, которое потянет данная машина, и сразу вбить максимальные размеры хэшей. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба Всё так, только в отличие от OID-ов в sysctl, изменение HASHSIZE требует пересборки ядра с последующим ребутом, потому ставим 64Остальное крутим на ходу и ПОСТОЯННО контролируем распределение памяти. Вот один из моих шейперов. Никаких HASHSIZE не менял. Никакого распределения памяти не контролирую. Core2Quad 2.33Ghz. last pid: 74032; load averages: 2.29, 2.14, 2.06 up 91+22:04:32 12:01:42 83 processes: 11 running, 60 sleeping, 12 waiting PU states: 0.0% user, 0.0% nice, 49.6% system, 0.3% interrupt, 50.1% idle Mem: 15M Active, 9380K Inact, 107M Wired, 60K Cache, 14M Buf, 853M Free Swap: PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 11 root 1 171 ki31 0K 16K RUN 3 1208.5 64.94% idle: cpu3 14 root 1 171 ki31 0K 16K RUN 0 1066.7 58.94% idle: cpu0 13 root 1 171 ki31 0K 16K RUN 1 1122.2 57.71% idle: cpu1 12 root 1 171 ki31 0K 16K RUN 2 1159.7 50.98% idle: cpu2 898 root 1 43 - 0K 16K CPU1 1 430.7H 22.56% em1_rx_kthread_3 895 root 1 43 - 0K 16K WAIT 2 442.1H 22.36% em0_rx_kthread_3 897 root 1 43 - 0K 16K WAIT 1 431.1H 22.36% em1_rx_kthread_2 894 root 1 43 - 0K 16K RUN 2 441.6H 21.48% em0_rx_kthread_2 29 root 1 43 - 0K 16K RUN 2 430.9H 21.48% em1_rx_kthread_0 30 root 1 43 - 0K 16K CPU0 1 430.9H 21.39% em1_rx_kthread_1 25 root 1 43 - 0K 16K CPU2 2 442.7H 21.24% em0_rx_kthread_0 26 root 1 43 - 0K 16K RUN 2 442.4H 21.04% em0_rx_kthread_1 28 root 1 -68 - 0K 16K WAIT 0 98.7H 3.42% em1_txcleaner 24 root 1 -68 - 0K 16K WAIT 3 96.5H 1.51% em0_txcleaner 15 root 1 -32 - 0K 16K WAIT 2 18.5H 0.05% swi4: clock 35 root 1 -68 - 0K 16K - 0 549.1H 0.00% dummynet 17 root 1 -44 - 0K 16K WAIT 3 10:26 0.00% swi1: net # ipfw pipe show | wc -l 2792 Одна натяжечка, это не роутер, а бридж. # netstat -I bridge0 -w1 input (bridge0) output packets errs bytes packets errs bytes colls 134326 0 86629336 132768 0 85225424 0 127142 0 80147704 126432 0 79723206 0 123273 0 76538898 122666 0 76209182 0 125034 0 77501077 124057 0 76791711 0 120795 0 73479480 120118 0 73020397 0 119625 0 73819005 118862 0 73348189 0 В ЧНН нагрузка в два раза больше. Но dummynet больше чем 0.1% не жрет. # uname -a FreeBSD acd 7.0-RELEASE-p4 FreeBSD 7.0-RELEASE-p4 #0: Tue Feb 10 13:39:29 MSK 2009 m@farm7_64e.lan:/usr/src/sys/amd64/compile/ACDSMP_amd64_wo_poll amd64 Никаких nat'ов и netflow нет, голый шейпер. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chert Опубликовано 10 июня, 2009 · Жалоба # ipfw pipe show | wc -l 2792 уверен что эта цыфра показывает к-во пайпов :)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dm1try Опубликовано 10 июня, 2009 (изменено) · Жалоба Xeon: CPU: Intel® Xeon® CPU E5410 @ 2.33GHz (2339.15-MHz K8-class CPU) Потоки небольшие ~ 1Gbit/s (куда нам до Вас), но судя по тому, что сейчас загрузка только одного ядра близка к 60% продолжать набивать его я смогу еще очень долго. Кстати: swi: net - как тут когда-то отмечалось у меня пока не растет и составляет ~10-15%. P.S> А потом скорее доставлю еще один такой же ксеон, еще четыре гига памяти и еще 2-е двух головые сетевые. Изменено 10 июня, 2009 пользователем Dm1try Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба уверен что эта цыфра показывает к-во пайпов :)? Эта цифра показывает количество динамических очередей. Пайпов там 16 штук. На каждый тариф по две трубы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chert Опубликовано 10 июня, 2009 (изменено) · Жалоба уверен что эта цыфра показывает к-во пайпов :)? Эта цифра показывает количество динамических шейперов. Пайпов там 16 штук. На каждый тариф по две трубы. нам бы твоих продавцов. Наши насочиняли 300 тарифов с разными скоростями Изменено 10 июня, 2009 пользователем chert Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба нам бы твоих продавцов. Наши насочиняли 300 тарифов с разными скоростями Это потому что ты их не запугал с самого начала, как это сделал я. :-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 10 июня, 2009 · Жалоба нам бы твоих продавцов. Наши насочиняли 300 тарифов с разными скоростями Это потому что ты их не запугал с самого начала, как это сделал я. :-) а если клиенты юрики ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба а если клиенты юрики ? А продажнику что, есть разница, на кого готовить линейку тарифов ? У меня например унифицировано все. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 10 июня, 2009 · Жалоба а если клиенты юрики ? А продажнику что, есть разница, на кого готовить линейку тарифов ? У меня например унифицировано все. ээ я о том что если у юрика сетка то папйп или queue по маске не сделаеш и соответственно получится по pipe на юрика Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dm1try Опубликовано 10 июня, 2009 · Жалоба а если клиенты юрики ? Все наши клиенты - юр. лица, но это не значит, что мы будем делать под каждого отдельный т.п. Разговор о "кастомном" т.п. начиается от 10Mbit/s и выше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба ээ я о том что если у юрика сетка то папйп или queue по маске не сделаеш и соответственно получится по pipe на юрика У меня все юрики _на_анлиме_ подключаются через CPE рутер с натом. Кроме того, если есть достаточное количество юриков с индивидуальными тарифами - никто не мешает ставить под них отдельный шейпер. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 10 июня, 2009 (изменено) · Жалоба у меня более 50% продаваемой полосы занимают юрики с тарифами от 10-ти и у каждого своя сетка раельных адрессов. ставить под каждого отдельный шейпер? :) Изменено 10 июня, 2009 пользователем t0ly Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба у меня более 50% продаваемой полосы занимают юрики с патрифами от 10-ти и у каждого своя сетка раельных адрессов.ставить под каждого отдельный шейпер? :) Полоса какая ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 10 июня, 2009 · Жалоба у меня более 50% продаваемой полосы занимают юрики с патрифами от 10-ти и у каждого своя сетка раельных адрессов.ставить под каждого отдельный шейпер? :) Полоса какая ? 300 mbit/s in + 300 mbit/s out Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба 300 mbit/s in + 300 mbit/s out Это детская нагрузка для современных процов. Кроме того, я посмотрел одесские цены на корпоративные анлимы с реальными ip статикой... "голодаем и скитаемся, на шейперы не хватает". Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dm1try Опубликовано 10 июня, 2009 · Жалоба у меня более 50% продаваемой полосы занимают юрики с тарифами от 10-ти и у каждого своя сетка раельных адрессов.ставить под каждого отдельный шейпер? :) В случае ng_car параллельно какая у абонента сетка. Заворачиваешь в нужную ноду все нужные сети и все. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
chert Опубликовано 10 июня, 2009 · Жалоба Jab: твои мосты живут с ULE или 4BSD? какое производительнее будет? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 10 июня, 2009 · Жалоба kern.sched.name: ULE Но на самом деле там разница на глаз не особо заметна. Они же под одну задачу заточены. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...