asid2006 Опубликовано 30 марта, 2016 · Жалоба Видимо хэшей слишком много и они в кеш не влезают/периодически от туда вымываются. Либо наоборот слишком мало, и тогда слишком часто случаются одновременные попадания двух и более ядер на одну корзину, в результате они крутятся в спинлоках. Есть возможность узнать сколько их может быть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 30 марта, 2016 · Жалоба Это к пингвиноводам, я только предполагаю. Их быть может скорее всего 2 в какой то там степени. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 30 марта, 2016 · Жалоба Переписали шейпер, сейчас одна хеш-таблица, которая анализирует последний байт. В ячейках линейно фильтры для всех айпишников, которые на этот байт кончаются. Стало лучше, но всё-равно бывает, что одно ядро почти пустое, другое в потолке. В эти моменты есть потери пакетов. Бывает достаточно часто Упрощённо шейпер выглядит так: #!/bin/bash tc -s f ls dev eth1 #Удаляем дисциплины tc qdisc del dev eth1 root # Корневая дисциплина tc qdisc add dev eth1 root handle 1: htb default 100 tc class add dev eth1 parent 1: classid 1:1 htb rate 1000mbit tc class add dev eth1 parent 1:1 classid 1:100 htb rate 512Kbit ceil 200mbit prio 10 # Интернет tc class add dev eth1 parent 1:1 classid 1:20 htb rate 100mbit ceil 750mbit prio 1 # tc filter add dev eth1 parent 1:0 protocol ip u32 tc filter add dev eth1 parent 1:0 handle 10: protocol ip u32 divisor 256 tc filter add dev eth1 parent 1:0 protocol ip u32 ht 801:: match ip dst 0.0.0.0/0 hashkey mask 0xff at 16 link 10: # абонент 1 tc class add dev eth1 parent 1:20 classid 1:101 htb rate 256kbit ceil 6438912 tc filter add dev eth1 protocol ip parent 1:0 u32 ht 10:5: match ip dst 192.168.1.5/32 flowid 1:101 # абонент 2 tc class add dev eth1 parent 1:20 classid 1:102 htb rate 256kbit ceil 11000000 tc filter add dev eth1 protocol ip parent 1:0 u32 ht 10:5: match ip dst 192.168.2.5/32 flowid 1:102 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 30 марта, 2016 · Жалоба В ячейках линейно фильтры для всех айпишников, которые на этот байт кончаются. сколько их? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
taf_321 Опубликовано 31 марта, 2016 · Жалоба Какой-то чад и угар у вас с таблицами. В свое время для реализации шейпера для ipv6 столкнулся с тем, что хэшами там и не пахнет. Потому был сделан заход с другой стороны, через связку tc+ipset. Со стороны tc правила выглядят так (используется дисциплина hfsc): ... # user1 class add dev bondINT parent 1: classid 1:b est 1sec 8sec hfsc sc umax 1500b dmax 10ms rate 92160kbit ul rate 92160kbit class add dev bondEXT parent 1: classid 1:b est 1sec 8sec hfsc sc umax 1500b dmax 10ms rate 92160kbit ul rate 92160kbit # user2 class add dev bondINT parent 1: classid 1:c est 1sec 8sec hfsc sc umax 1500b dmax 5ms rate 2048kbit ul rate 2048kbit class add dev bondEXT parent 1: classid 1:c est 1sec 8sec hfsc sc umax 1500b dmax 5ms rate 2048kbit ul rate 2048kbit # user4 class add dev bondINT parent 1: classid 1:32 est 1sec 8sec hfsc sc umax 1500b dmax 10ms rate 92160kbit ul rate 92160kbit class add dev bondEXT parent 1: classid 1:32 est 1sec 8sec hfsc sc umax 1500b dmax 10ms rate 92160kbit ul rate 92160kbit .... Со стороны ipset: create shaper4 hash:net family inet hashsize 1024 maxelem 65536 skbinfo create shaper6 hash:net family inet6 hashsize 1024 maxelem 65536 skbinfo # user1 add shaper4 172.16.17.196/32 skbprio 1:b # user2 add shaper4 172.16.17.220/32 skbprio 1:c # user4 add shaper4 193.33.yyy.yyy/32 skbprio 1:32 add shaper6 2a02:4680:XXXX:X:0:0:0:X/64 skbprio 1:32 ... -t mangle -A POSTROUTING -o bondEXT -m set ! --match-set local dst -j SET --map-set shaper4 src --map-prio -t mangle -A POSTROUTING -o bondINT -m set ! --match-set local src -j SET --map-set shaper4 dst --map-prio v6 -t mangle -A POSTROUTING -o bondEXT -m set ! --match-set local6 dst -j SET --map-set shaper6 src --map-prio -t mangle -A POSTROUTING -o bondINT -m set ! --match-set local6 src -j SET --map-set shaper6 dst --map-prio проц E5-2407 при ~1.6Gbps до 40% нагрузки равномерно по всем ядрам. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 1 апреля, 2016 · Жалоба Перезагрузили сервер. После этого с новым шейпером всё работает как надо - видимо, остался какой-то осадок в памяти после предыдущего шейпера с большой кучей хэш-таблиц. Нагрузка при 650 Мбит/с выше 70% на ядро не поднимается. Перед следующим расширением канала будем думать по поводу смены шейпера на iptables. Спасибо за помощь! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 1 апреля, 2016 · Жалоба 70% это смертельная загрузка, после ребута у вас просто где-то таблицы arp/conntrack почистились и стало чуть легче, это временно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 1 апреля, 2016 (изменено) · Жалоба У меня при 700in мегабитах загрузка не выше 20% на ядро. В среднем - до 12. Проц Intel® Xeon® CPU E3-1220 v3 @ 3.10GHz. Хэши не использую. Изменено 1 апреля, 2016 пользователем myth Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 2 апреля, 2016 · Жалоба У меня при 700in мегабитах загрузка не выше 20% на ядро. В среднем - до 12. Проц Intel® Xeon® CPU E3-1220 v3 @ 3.10GHz. Хэши не использую. А как? Сколько абонентов? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 2 апреля, 2016 · Жалоба В ЧНН 900-910 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 3 апреля, 2016 · Жалоба А вы точно уверены что грузит именно шейпер? В первом посте упоминается NAT, может таки он виноват? И как вы шейпите с НАТом в данный момент, только одно направление? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 3 апреля, 2016 (изменено) · Жалоба kayot,Я рещил просто - хтб на выход(к абоненту), полисер tc на вход(от абонента). Изменено 3 апреля, 2016 пользователем myth Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 4 апреля, 2016 · Жалоба А вы точно уверены что грузит именно шейпер? В первом посте упоминается NAT, может таки он виноват? И как вы шейпите с НАТом в данный момент, только одно направление? При отключении шейпера нагрузка на процессор около нуля, канал забивается на все 650 Мбит/с. Режется только одно направление (к абоненту). Скорость от абонента в интернет режут коммутаторы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 4 апреля, 2016 · Жалоба Тогда точно хеши не работают. У меня похожее железо терминирует/шейпит под 3Gbit, с HTB и кучей классов. Причем и вход, и исход. А машины на которых порядка 1 гига имеют загрузку до 10%. По опыту коллег - грабли с локами и затыками начинают где-то на 5G, 650мбит целерон офисный должен шейпить без проблем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
purecopper Опубликовано 4 апреля, 2016 (изменено) · Жалоба asid2006 а покажите cat /proc/cpuinfo ну и tc -s filter show Изменено 4 апреля, 2016 пользователем purecopper Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 4 апреля, 2016 · Жалоба 650мбит целерон офисный должен шейпить без проблем. плюсую. пппое терминатор на G530 тестировал, на исход - шейпер на пул ~3 тыс. адресов, причем - хитрый, с внутренней приоретизацией (3 класса в итоге на каждую ветку), в кол-ве 3 штук (микс на ifb + отдельно вланы мира и украины), на 400-500 мбитах загрузка проца % 20-30... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 31 октября, 2016 · Жалоба Увеличилось число абонентов, увеличились скорости для каждого - проблема вернулась. cat /proc/cpuinfo [root@srv1 ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz stepping : 3 microcode : 0x1a cpu MHz : 3699.882 cache size : 8192 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm bogomips : 6984.56 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz stepping : 3 microcode : 0x1a cpu MHz : 3699.882 cache size : 8192 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 4 apicid : 2 initial apicid : 2 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm bogomips : 6984.56 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz stepping : 3 microcode : 0x1a cpu MHz : 3699.882 cache size : 8192 KB physical id : 0 siblings : 4 core id : 2 cpu cores : 4 apicid : 4 initial apicid : 4 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm bogomips : 6984.56 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz stepping : 3 microcode : 0x1a cpu MHz : 3700.019 cache size : 8192 KB physical id : 0 siblings : 4 core id : 3 cpu cores : 4 apicid : 6 initial apicid : 6 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm bogomips : 6984.56 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: tc -s filter show во вложении Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 31 октября, 2016 · Жалоба tc -s filter show tc-filter.zip Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 1 ноября, 2016 (изменено) · Жалоба Привет, я вижу еще огромный линейный список перед шейпером, а попробуйте в скрипт создания шейпера в правила tc filter add добавить еще pref (10 например) tc filter add dev XXX protocol ip pref 10 .... Скорее всего дело в этом, и потом можно будет вернуть хеширование по обеим октетам. Изменено 1 ноября, 2016 пользователем SABRE Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 1 ноября, 2016 · Жалоба На всякий случай привожу конфигурацию шейпера: #!/bin/bash ipset -N blocked iphash # Удаляем существующие фильтры и классы на интерфейсе tc qdisc del dev em2 root # Корневая дисциплина (+ дефолтный класс) tc qdisc add dev em2 root handle 1: htb default 100 # Корневрй класс, присоединенный к коренвой дисциплине (скоррость интерфейса) tc class add dev em2 parent 1: classid 1:1 htb rate 1000mbit # Дефолтный класс//100//=============================================================== tc class add dev em2 parent 1:1 classid 1:100 htb rate 512Kbit ceil 600mbit prio 10 #====================================================================================== #////////////////////////////////////////////////////////////////////////////////////// # Внутрисетевой трафик (сервера, микротик...)) //10//================================== tc class add dev em2 parent 1:1 classid 1:10 htb rate 1mbit ceil 200mbit prio 1 #====================================================================================== #////////////////////////////////////////////////////////////////////////////////////// # Интернет //20//====================================================================== tc class add dev em2 parent 1:1 classid 1:20 htb rate 100mbit ceil 750mbit prio 1 #====================================================================================== #////////////////////////////////////////////////////////////////////////////////////// # Управление оборудованием //30//====================================================== tc class add dev em2 parent 1:1 classid 1:30 htb rate 1mbit ceil 20mbit prio 0 #====================================================================================== #////////////////////////////////////////////////////////////////////////////////////// # ТВ //40//============================================================================ tc class add dev em2 parent 1:1 classid 1:40 htb rate 10mbit ceil 300mbit prio 0 #====================================================================================== #////////////////////////////////////////////////////////////////////////////////////// #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ #==============ФИЛЬТРЫ================================================================= #////////////////////////////////////////////////////////////////////////////////////// # Корневой фильтр====================================================================== tc filter add dev em2 parent 1:0 protocol ip u32 # Всё, что с внутренних ресурсов идёт в 10 класс ====================================== tc filter add dev em2 protocol ip parent 1: u32 match ip src 95.153.151.60 flowid 1:10 tc filter add dev em2 protocol ip parent 1: u32 match ip src 10.0.0.0/16 match ip dst 95.153.151.61 flowid 1:10 # Всё, что до коммутаторов (vlan100) идёт в 30 класс ================================== tc filter add dev em2 protocol ip parent 1: u32 match ip dst 192.168.7.0/24 flowid 1:30 # Телик (OTT) идёт в 40 класс ========================================================= tc filter add dev em2 protocol ip parent 1: u32 match ip src 81.23.6.224/27 flowid 1:40 tc filter add dev em2 protocol ip parent 1: u32 match ip src 95.163.68.48/28 flowid 1:40 # Создаём хэш-таблицу 10: и отсылаем в неё трафик ===================================== tc filter add dev em2 parent 1:0 handle 10: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 protocol ip u32 ht 801:: match ip dst 0.0.0.0/0 hashkey mask 0xff at 16 link 10: #====================================================================================== # Абоненты #====================================================================================== /usr/scripts/billing/ip/10.0.10.2.sh /usr/scripts/billing/ip/10.0.11.21.sh /usr/scripts/billing/ip/10.0.11.33.sh ... /usr/scripts/billing/ip/10.0.10.2.sh #class=102 tc class add dev em2 parent 1:20 classid 1:102 htb rate 256kbit ceil 73360000 tc filter replace dev em2 protocol ip parent 1:0 u32 ht 10:2: match ip dst 10.0.10.2/32 flowid 1:102 Такие файлики есть для каждого клиента. 1 клиент - 1 IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 1 ноября, 2016 (изменено) · Жалоба asid2006 Как я и сказал - попробуйте добавить везде pref, думаю в этом и проблема. Хеш есть, но после линейного списка. Изменено 1 ноября, 2016 пользователем SABRE Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 1 ноября, 2016 · Жалоба asid2006 Как я и сказал - попробуйте добавить везде pref, думаю в этом и проблема. Хеш есть, но после линейного списка. Т.е. добавить нужно только в этот кусок? # Корневой фильтр====================================================================== tc filter add dev em2 parent 1:0 protocol ip u32 # Всё, что с внутренних ресурсов идёт в 10 класс ====================================== tc filter add dev em2 protocol ip parent 1: u32 match ip src 95.153.151.60 flowid 1:10 tc filter add dev em2 protocol ip parent 1: u32 match ip src 10.0.0.0/16 match ip dst 95.153.151.61 flowid 1:10 # Всё, что до коммутаторов (vlan100) идёт в 30 класс ================================== tc filter add dev em2 protocol ip parent 1: u32 match ip dst 192.168.7.0/24 flowid 1:30 # Телик (OTT) идёт в 40 класс ========================================================= tc filter add dev em2 protocol ip parent 1: u32 match ip src 81.23.6.224/27 flowid 1:40 tc filter add dev em2 protocol ip parent 1: u32 match ip src 95.163.68.48/28 flowid 1:40 # Создаём хэш-таблицу 10: и отсылаем в неё трафик ===================================== tc filter add dev em2 parent 1:0 handle 10: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 protocol ip u32 ht 801:: match ip dst 0.0.0.0/0 hashkey mask 0xff at 16 link 10: В файлах абонентов оставить без pref? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 1 ноября, 2016 (изменено) · Жалоба asid2006 Везде.Абсолютно. Именно абонентские фильтры без pref создают кучу лишнего (проверил у себя). Изменено 1 ноября, 2016 пользователем SABRE Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
asid2006 Опубликовано 1 ноября, 2016 · Жалоба asid2006 Везде.Абсолютно. Именно абонентские фильтры без pref создают кучу лишнего (проверил у себя). Сделал. Пока вроде всё работает очень даже неплохо. Посмотрю какая нагрузка будет в пиковое время Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 1 ноября, 2016 · Жалоба asid2006 А можно вывод tc -s -d filter show dev em2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...