s.lobanov Posted June 3, 2012 Posted June 3, 2012 При создании большого количества интерфейсов возникает проблема в том, что чем больше их уже существует в системе, тем медленнее они создаются(проверял на ядрах 2.6.32 и 3.2.17 из репозиториев debian). Может кто-то сказать почему это происходит и как вылечить? Пример скрипта, который наглядно это демонстрирует: vlan.php <?php system("ifconfig eth1 up"); system("vconfig add eth1 2"); system("ifconfig eth1.2 up"); system("ifconfig eth1 up"); system("vconfig add eth1 3"); system("ifconfig eth1.3 up"); system("ifconfig eth1 up"); system("vconfig add eth1 4"); system("ifconfig eth1.4 up"); system("ifconfig eth1 up"); system("vconfig add eth1 5"); system("ifconfig eth1.5 up"); for($i=1;$i<=1000;$i++) { system("vconfig add eth1.2 $i"); system("ifconfig eth1.2.$i up"); system("vconfig add eth1.3 $i"); system("ifconfig eth1.3.$i up"); system("vconfig add eth1.4 $i"); system("ifconfig eth1.4.$i up"); system("vconfig add eth1.5 $i"); system("ifconfig eth1.5.$i up"); } ?> выполнять php -f vlan.php (из-под рута) Если у кого-то не тормозит скрипт под конец, то поделитесь версией ОС(и ядра, если не родное). Такая же ситуация возникает не только при создании .1Q или Q-in-Q интерфейсов, но и при попытке создать большое кол-во ppp-интерфейсов Вставить ник Quote
voron Posted June 3, 2012 Posted June 3, 2012 Попробуйте использовать ip вместо ifconfig/vconfig Вставить ник Quote
s.lobanov Posted June 3, 2012 Author Posted June 3, 2012 voron попробовал, никакой разницы, что ip, что vconfig+ifconfig Вставить ник Quote
Megas Posted June 3, 2012 Posted June 3, 2012 а чо дергаете постоянно eth1? сложно поставить проверку на его состояние из системных переменных) Вставить ник Quote
voron Posted June 3, 2012 Posted June 3, 2012 попробовал, никакой разницы, что ip, что vconfig+ifconfigтогда похоже вы не добьетесь большой скорости создания/удаления интерфейсов, разве что ядро найдете где попатчить. Вам часто и быстро нужно создавать много интерфейсов? Вставить ник Quote
s.lobanov Posted June 3, 2012 Author Posted June 3, 2012 Вам часто и быстро нужно создавать много интерфейсов? да Вставить ник Quote
s.lobanov Posted June 3, 2012 Author Posted June 3, 2012 Если кому-то интересно, то проблема решена в 3.5.0-rc1(сегодняшний релиз ядра) 3.5.0-rc1# time php -f vlan.php > /dev/null real 0m35.963s user 0m0.544s sys 0m5.940s 3.3.7 # time php -f vlan.php > /dev/null real 7m5.256s user 0m0.636s sys 6m20.792s 2.6.32 # time php -f vlan.php > /dev/null real 7m38.243s user 0m4.836s sys 7m34.624s Вставить ник Quote
voron Posted June 3, 2012 Posted June 3, 2012 (edited) А скорость удаления не тестировали? PS 36 секунд это быстрее конечно чем 7 минут, но всё равно не то чтобы очень быстро, как например 1 сек. Не смотрели, на что именно уходит время? Edited June 3, 2012 by voron Вставить ник Quote
Ivan_83 Posted June 3, 2012 Posted June 3, 2012 Там куча инициализаций и добавлений во всякие списки. Добавления, как правило, через экслюзивный доступ через блокировку. Плюс там ещё UP интерфейса, это ещё время... Вставить ник Quote
s.lobanov Posted June 3, 2012 Author Posted June 3, 2012 будет время - посмотрю как профилировать ядро(раньше не занимался низкоуровневым программированием/отладкой/профилированием) скорость удаления тестировал, она меньше чем скорость создания Вставить ник Quote
xeb Posted June 4, 2012 Posted June 4, 2012 ip и batch режим используйте ppp интерфейсы тоже создаются и удаляются медленно, особенно после 1000 Вставить ник Quote
vitalyb Posted June 4, 2012 Posted June 4, 2012 Скорость создания очень сильно просаживается при включении опции SYSCTL_SYSCALL_CHECK (Kernel hacking -> Sysctl checks), но и без нее особо не блещет и зависит от кол-ва существующих интерфейсов. Вставить ник Quote
alexaaa Posted June 5, 2012 Posted June 5, 2012 (edited) Vlan на Debiane очень зависит от дров и сетевых, должна быть поддержка протокола 8021q сетевой картой, и модуль 8021q должен быть подгружен в системе, очень хорошо работают c vlan сетевые D-Link DGE-528T и Intel E1G42ETBLK, значение mtu стандартное как на коммутаторах, простые дешёвые сетевые будут тупить при перезагрузке, прописываем vlan так auto vlan333 iface vlan333 inet static address 10.90.90.1 netmask 255.255.255.0 mtu 1500 vlan_raw_device eth1 поднимаем или удаляем так ifup vlan333, ifdown vlan333 Edited June 5, 2012 by alexaaa Вставить ник Quote
Tem Posted June 5, 2012 Posted June 5, 2012 поднимаем или удаляем так ifup vlan333, ifdown vlan333 Всё равно тупить будет, а уж грузиться скока оно будет, если там под несколько сотен вланом, так ето вообще жесть Вставить ник Quote
voron Posted June 5, 2012 Posted June 5, 2012 ip и batch режим используйтеможно примеры batch-режима у ip, что-то в мане не нашел ничего позволяющего делать а-ляip addr add 127.0.0.2/32 127.0.0.3/32 dev lo Вставить ник Quote
NiTr0 Posted June 5, 2012 Posted June 5, 2012 будет время - посмотрю как профилировать ядро iperf, мануал есть, указать на vmlinux (непакованный необрезанный бинарник со всем дебаг инфо) - и вперед... Вставить ник Quote
alexaaa Posted June 5, 2012 Posted June 5, 2012 (edited) а сетевушка у вас какая, у меня DGE-560T была тупила постоянно перед и после рубета, с DGE-528T работает нормально. Edited June 5, 2012 by alexaaa Вставить ник Quote
Alex/AT Posted June 5, 2012 Posted June 5, 2012 iperf, мануал есть, указать на vmlinux (непакованный необрезанный бинарник со всем дебаг инфо) - и вперед... Абсолютно в точку. Только не iperf, а oprofile. Вставить ник Quote
nuclearcat Posted June 5, 2012 Posted June 5, 2012 ip и batch режим используйтеможно примеры batch-режима у ip, что-то в мане не нашел ничего позволяющего делать а-ляip addr add 127.0.0.2/32 127.0.0.3/32 dev lo ip -force -batch add.batch centaur ~ # cat add.batch addr add 127.0.0.2/32 dev lo addr add 127.0.0.3/32 dev lo addr add 127.0.0.4/32 dev lo centaur ~ # ip addr show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet 127.0.0.2/32 scope host lo inet 127.0.0.3/32 scope host lo inet 127.0.0.4/32 scope host lo Вставить ник Quote
s.lobanov Posted June 5, 2012 Author Posted June 5, 2012 а сетевушка у вас какая, у меня DGE-560T была тупила постоянно перед и после рубета, с DGE-528T работает нормально. например такая 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM57711E 10-Gigabit PCIe но это не сильно принципиально в данном случае Вставить ник Quote
klisha Posted December 15, 2012 Posted December 15, 2012 Тема актуальна. Скажите кто как решает? особенно интересует решение на RH-совместимых дистрибутивах. Вставить ник Quote
s.lobanov Posted December 15, 2012 Author Posted December 15, 2012 klisha Я просто собираю ядро из последних. В последний раз собирал 3.6.9 ванильное, всё отлично работает, интерфейсы очень быстро создаются Вставить ник Quote
Wingman Posted December 15, 2012 Posted December 15, 2012 Я правильно понимаю, что вы подобие "ip unnumbered" + QinQ на брасах делаете? Если не секрет - сколько одна коробка вланов терминирует + сколько трафика обслуживает? =) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.