asid2006 Posted July 10, 2015 (edited) · Report post Доброго времени суток. Меняю старый софтроутер на более мощный. На обоих CentOS 6.4, в скриптах настройки фаервола и шейпера поменял только названия интерфейсов. После переноса заметил, что есть потери пакетов и роутер выдаёт абонентам не полную скорость даже при небольшой нагрузке. На роутере делаются NAT (iptables) и шейпинг (tc). Новый роутер: Процессор Intel® Xeon® CPU E3-1270 v3 @ 3.50GHz, 8 cores Сетевая Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe Драйвера на сетевуху - свежие tg3 с сайта производителя 2 интерфейса: em1 - на нём поднято 2 влана для 2 аплинков em2 - подняты куча виланов для абонентов (1 дом - 1 влан) При включении выполняются следующие команды: ethtool -A em1 autoneg off rx off tx off ethtool -A em2 autoneg off rx off tx off ethtool -L em1 tx 4 rx 4 ethtool -L em2 tx 4 rx 4 # рапределение прерываний /usr/scripts/interrupts/smp.sh em1 0 0 2 4 6 /usr/scripts/interrupts/smp.sh em2 0 1 3 5 7 ifconfig em1 txqueuelen 10000 ifconfig em2 txqueuelen 10000 /sbin/sysctl -w net.netfilter.nf_conntrack_max=262144 echo 32768 > /sys/module/nf_conntrack/parameters/hashsize cat /proc/interrupts 37: 1174637 1413 0 0 0 0 0 544 IR-PCI-MSI-edge em1-0 38: 193835380 180585 25289589 0 0 0 57109 0 IR-PCI-MSI-edge em1-txrx-1 39: 211837 187172 267722584 0 62691999 54434 0 0 IR-PCI-MSI-edge em1-txrx-2 40: 228737 186985 0 0 181873117 0 25759729 0 IR-PCI-MSI-edge em1-txrx-3 41: 23938382 181700 0 51113 0 0 181668641 0 IR-PCI-MSI-edge em1-txrx-4 42: 69 1900 4 0 0 0 0 0 IR-PCI-MSI-edge em2-0 43: 128928 275115568 0 39385366 216629 0 0 0 IR-PCI-MSI-edge em2-txrx-1 44: 169952 79740 0 344998249 0 100541083 0 0 IR-PCI-MSI-edge em2-txrx-2 45: 112134 82161 0 0 0 277001930 234847 45811904 IR-PCI-MSI-edge em2-txrx-3 46: 32798668 77082 0 0 0 0 48738 277532385 IR-PCI-MSI-edge em2-txrx-4 Подскажите, где может быть проблема? Edited July 15, 2015 by asid2006 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
BETEPAH Posted July 10, 2015 · Report post Как-то странно ваш скрипт распределяет прерывания. Должно быть так: 116: 3869316300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-0 117: 1094 3775680288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-1 118: 796 0 79941942 0 0 0 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-2 119: 883 0 0 3951968091 0 0 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-3 120: 928 0 0 0 3830803244 0 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-4 121: 1002 0 0 0 0 3627204009 0 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-5 122: 936 0 0 0 0 0 4053896050 0 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-6 123: 939 0 0 0 0 0 0 3827428601 0 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-7 124: 839 0 0 0 0 0 0 0 4038520761 0 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-8 125: 958 0 0 0 0 0 0 0 0 3696457063 0 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-9 126: 943 0 0 0 0 0 0 0 0 0 4016745220 0 0 0 0 0 PCI-MSI-edge eth0-TxRx-10 127: 889 0 0 0 0 0 0 0 0 0 0 4101675116 0 0 0 0 PCI-MSI-edge eth0-TxRx-11 128: 976 0 0 0 0 0 0 0 0 0 0 0 3780320260 0 0 0 PCI-MSI-edge eth0-TxRx-12 129: 884 0 0 0 0 0 0 0 0 0 0 0 0 4204481537 0 0 PCI-MSI-edge eth0-TxRx-13 130: 905 0 0 0 0 0 0 0 0 0 0 0 0 0 3823332572 0 PCI-MSI-edge eth0-TxRx-14 131: 1091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3735548479 PCI-MSI-edge eth0-TxRx-15 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 10, 2015 · Report post BETEPAH, если обнулить статистику, то так и будет Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted July 10, 2015 · Report post сетевушку смените, кто-то тут на форуме на бродком плевался... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 10, 2015 · Report post NiTr0, старый сервак захлёбывается, сетевуха будет ехать какое-то время. Нужно что-то придумать хотябы на время Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted July 10, 2015 · Report post Попробуйте оффлоады погасить (кроме checksum оффлоадов и scatter-gather), и увеличить буферы до максимума. И да echo 32768 > /sys/module/nf_conntrack/parameters/hashsize - не отрабатывает. Размер хэша указывается в опциях модуля при загрузке. Лучше указать где-то не менее 1/4 ожидаемого макс. кол-ва сессий. Да, и чуть не забыл: указать в параметрах ядра intel_idle.max_cstate=0 processor.max_cstate=1 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 10, 2015 · Report post Попробуйте оффлоады погасить (кроме checksum оффлоадов и scatter-gather), и увеличить буферы до максимума. Не подскажите, как это сделать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted July 10, 2015 · Report post Да, и чуть не забыл: указать в параметрах ядра intel_idle.max_cstate=0 processor.max_cstate=1 Наверное самое важное замечание, IMHO вся печаль в этом idle. Броадкомы современные очень неплохи, нарекания были на позапрошлое поколение.. BMC5709 у меня работают как часы, на загруженной в хлам машине пропускают ровно гиг без потерь и чудес, вряд ли более новый 5720 хуже. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 10, 2015 · Report post указать в параметрах ядра intel_idle.max_cstate=0 processor.max_cstate=1 Извиняюсь за глупый вопрос, но можно применить их без перезагрузки сервера? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
BETEPAH Posted July 10, 2015 · Report post Не подскажите, как это сделать? ethtool -K eth0 gro off lro off gso off ethtool -G eth0 tx 2048 rx 2048 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 10, 2015 · Report post ethtool -G eth0 tx 2048 rx 2048 [root@srv1 ~]# ethtool -G em1 tx 2048 rx 2048 Cannot set device ring parameters: Invalid argument [root@srv1 ~]# ethtool -g em1 Ring parameters for em1: Pre-set maximums: RX: 2047 RX Mini: 0 RX Jumbo: 0 TX: 511 Current hardware settings: RX: 200 RX Mini: 0 RX Jumbo: 0 TX: 511 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted July 10, 2015 · Report post asid2006 ethtool -G rx 2047 tx 511 Маленький ring buffer может потери давать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted July 10, 2015 · Report post указать в параметрах ядра intel_idle.max_cstate=0 processor.max_cstate=1 Извиняюсь за глупый вопрос, но можно применить их без перезагрузки сервера? Вопрос не глупый. Вам надо прописать это как параметр ядра, что при следующем ребуте оно применилось. А чтоб не бутать - x86_energy_perf_policy в помощь Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
hsvt Posted July 10, 2015 · Report post А зачем на сетевушках в роли софтроутера отключают autoneg off ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 11, 2015 · Report post Маленький ring buffer может потери давать. Вы правы, после увеличения потери пакетов исчезли. А чтоб не бутать - x86_energy_perf_policy в помощь Со скоростью вроде всё исправилось. По крайней мере в 5 утра всё работает :) Осталась одна проблема - скачет пинг до сервера и от сервера до интернета. С клиента до сервера: C:\Users\AsusNote>ping 10.0.147.254 -t Обмен пакетами с 10.0.147.254 по с 32 байтами данных: Ответ от 10.0.147.254: число байт=32 время=3мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=7мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=1мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=2мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=15мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=6мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=8мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=3мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=10мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=11мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=10мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=6мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=3мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=2мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=4мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=7мс TTL=63 Ответ от 10.0.147.254: число байт=32 время=7мс TTL=63 Статистика Ping для 10.0.147.254: Пакетов: отправлено = 22, получено = 22, потеряно = 0 (0% потерь) Приблизительное время приема-передачи в мс: Минимальное = 1мсек, Максимальное = 15 мсек, Среднее = 5 мсек Должно быть 1 мс С сервера до интернета: [root@srv1 ~]# ping ya.ru PING ya.ru (213.180.204.3) 56(84) bytes of data. 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=57 time=34.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=57 time=30.3 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=3 ttl=57 time=36.1 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=4 ttl=57 time=37.6 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=5 ttl=57 time=42.2 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=6 ttl=57 time=32.3 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=7 ttl=57 time=32.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=8 ttl=57 time=32.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=9 ttl=57 time=32.8 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=10 ttl=57 time=49.3 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=11 ttl=57 time=44.5 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=12 ttl=57 time=30.2 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=13 ttl=57 time=54.9 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=14 ttl=57 time=30.6 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=15 ttl=57 time=35.9 ms ^C --- ya.ru ping statistics --- 15 packets transmitted, 15 received, 0% packet loss, time 14710ms rtt min/avg/max/mdev = 30.290/37.122/54.986/7.212 ms Нагрузка на канал минимальная (5:30 утра). Что может быть? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 12, 2015 · Report post Поправка: проблемы со скоростью остались Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted July 12, 2015 · Report post А зачем на сетевушках в роли софтроутера отключают autoneg off ? скорее всего, был какой-то баг на какой-нибудь кокретно карте, популярной лет 10-15 назад и эта "магия" качуют из одного howto в другой. в самом деле, смысла в этом нет asid2006 А tso офлод выключен? То, что порекомендовали выше не содержит отключения tso Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 13, 2015 · Report post s.lobanov отключил - не помогло: [root@srv1 ~]# ethtool -k em1 Features for em1: rx-checksumming: on tx-checksumming: on tx-checksum-ipv4: on tx-checksum-unneeded: off [fixed] tx-checksum-ip-generic: off [fixed] tx-checksum-ipv6: on tx-checksum-fcoe-crc: off [fixed] tx-checksum-sctp: off [fixed] scatter-gather: on tx-scatter-gather: on tx-scatter-gather-fraglist: off [fixed] tcp-segmentation-offload: off tx-tcp-segmentation: off tx-tcp-ecn-segmentation: off tx-tcp6-segmentation: off udp-fragmentation-offload: off [fixed] generic-segmentation-offload: off generic-receive-offload: off large-receive-offload: off [fixed] rx-vlan-offload: on [fixed] tx-vlan-offload: on [fixed] ntuple-filters: off [fixed] receive-hashing: off [fixed] highdma: on rx-vlan-filter: off [fixed] vlan-challenged: off [fixed] tx-lockless: off [fixed] netns-local: off [fixed] tx-gso-robust: off [fixed] tx-fcoe-segmentation: off [fixed] tx-gre-segmentation: off [fixed] tx-udp_tnl-segmentation: off [fixed] fcoe-mtu: off [fixed] loopback: off [fixed] [root@srv1 ~]# ping ya.ru PING ya.ru (213.180.204.3) 56(84) bytes of data. 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=57 time=29.7 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=57 time=29.7 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=3 ttl=57 time=33.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=4 ttl=57 time=40.9 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=5 ttl=57 time=31.6 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=6 ttl=57 time=30.6 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=7 ttl=57 time=31.0 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=8 ttl=57 time=30.5 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=9 ttl=57 time=30.8 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=10 ttl=57 time=32.3 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=11 ttl=57 time=33.9 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=12 ttl=57 time=31.7 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=13 ttl=57 time=30.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=14 ttl=57 time=37.6 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=15 ttl=57 time=39.0 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=16 ttl=57 time=32.5 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=17 ttl=57 time=36.4 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=18 ttl=57 time=31.0 ms ^C --- ya.ru ping statistics --- 18 packets transmitted, 18 received, 0% packet loss, time 18000ms rtt min/avg/max/mdev = 29.757/32.979/40.922/3.249 ms s.lobanov, Интернет получается через VLAN-интерфейс. Не нужно отключать vlan-offload? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 15, 2015 · Report post Поменял в /boot/grub/grub.conf строку с описанием параметров ядра (добавил intel_idle.max_cstate=0 processor.max_cstate=1). Сейчас она выглядит так: kernel /vmlinuz-2.6.32-504.23.4.el6.x86_64 ro root=/dev/mapper/vg_srv2-lv_root LANG=ru_RU.UTF-8 rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_srv2/lv_swap crashkernel=auto rd_LVM_LV=vg_srv2/lv_root intel_idle.max_cstate=0 processor.max_cstate=1 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet Перезагрузил сервер. В 5 утра вроде всё было ок - и пинги, и скорость, но в 10 заметил проблемы: несколько ядер процессора загружены на 100%. Оказалось, дело в dhcpd - их висело несколько процессов. Когда все убил по kill -9, нагрузка снизилась. Сейчас он запустился , но при рестарте пишет: [root@srv1 ~]# /etc/init.d/dhcpd restart Останавливается dhcpd: [СБОЙ ] Запускается dhcpd: [ OK ] Сейчас ещё большие проблемы и со скоростью (выдаёт 5-10 мбит вместо 25), и с пингами. Во время проверки скорости на спидтесте пинги до яндекса возрастают с 30 до 1000 и появляется потеря пакетов Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 15, 2015 · Report post Дополнение: интернет берётся с первой сетевухи, отдаётся абонентам через вторую. Отключил шейпер на второй - канал сразу забился, но проблема с пингами исчезла - стабильно 29 мс. После включения всё стало как раньше Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 15, 2015 · Report post perf top: 47,11% [kernel] [k] _spin_lock 21,84% [kernel] [k] u32_classify 5,84% [kernel] [k] __netif_receive_skb 5,67% [kernel] [k] dev_queue_xmit_nit 3,88% [kernel] [k] tc_classify_compat 0,67% [kernel] [k] net_tx_action 0,60% [kernel] [k] tg3_poll_work 0,53% [kernel] [k] ipt_do_table 0,40% [kernel] [k] __do_softirq 0,39% [kernel] [k] irq_entries_start 0,29% [kernel] [k] __nf_conntrack_find 0,28% [kernel] [k] htb_dequeue 0,26% [kernel] [k] apic_timer_interrupt 0,25% [kernel] [k] ip_route_input 0,22% [kernel] [k] dev_queue_xmit 0,20% [kernel] [k] tcp_packet 0,19% libdns.so.81.4.1 [.] 0x000000000006ab64 0,19% [kernel] [k] native_write_msr_safe 0,18% [kernel] [k] nf_iterate 0,18% perf [.] 0x000000000005d028 0,17% [kernel] [k] kfree Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted July 15, 2015 · Report post попробуйте ядро из elrepo (>=3.10) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 15, 2015 · Report post попробуйте ядро из elrepo (>=3.10) Огромное спасибо! Судя по всему проблема была именно в ядре. После обновления решился вопрос с пингом и скоростью, нагрузка на сервер упала в несколько раз! Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asid2006 Posted July 15, 2015 (edited) · Report post Итого, для решения проблемы потребовалось: 1. Добавить параметры ядра при загрузке intel_idle.max_cstate=0 processor.max_cstate=1 2. Отключить оффлоады и увеличить буферы: ethtool -G em1 rx 2047 tx 511 ethtool -G em2 rx 2047 tx 511 ethtool -K em1 gro off lro off gso off tso off ethtool -K em2 gro off lro off gso off tso off 3. Обновить ядро c 2.6.32-504.23.4.el6.x86_64 до 3.10.84-1.el6.elrepo.x86_64 Участникам обсуждения спасибо за помощь! Edited July 15, 2015 by asid2006 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted July 15, 2015 · Report post судя по oprofile-у, вы нарвались на BKL или что-то помельче. выпилено в 3.9, но он не LTS, поэтому посоветовал 3.10 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...