morfey 82 Posted 2014-12-21 11:46:40 Share Posted 2014-12-21 11:46:40 (edited) Прошу помощи у линуксоидов. Имеется HP PROLIANT DL380 G6 2xL5640 Траффик ~1.5Gb Загружается только 1 ядро, на ~100%. Как распаралелить нагрузку по ядрам? # uname -a Linux bras 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u2 x86_64 GNU/Linux Используется linux bonding. # lspci| grep -i ether 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 03:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) Edited 2014-12-21 12:12:10 by morfey Link to post Share on other sites
Not found 38 Posted 2014-12-21 11:51:46 Share Posted 2014-12-21 11:51:46 Пробовали компилировать ядро 3.18.1 или 3.17.7? Link to post Share on other sites
morfey 82 Posted 2014-12-21 12:02:40 Author Share Posted 2014-12-21 12:02:40 (edited) Пробовали компилировать ядро 3.18.1 или 3.17.7? Нет. А что там изменено в сравнении с 3.2 в этом плане? Edited 2014-12-21 12:02:49 by morfey Link to post Share on other sites
morfey 82 Posted 2014-12-21 12:08:27 Author Share Posted 2014-12-21 12:08:27 (edited) Пока решил проблему с помощью irqbalance Это правильное решение? ~ Появильсь ошибки на интерфейсах. Тюнинг такой: net.ipv4.ip_forward = 1 net.ipv4.neigh.default.gc_thresh1 = 4096 net.ipv4.neigh.default.gc_thresh2 = 8192 net.ipv4.neigh.default.gc_thresh3 = 12288 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_rmem = 4096 87380 8388608 net.ipv4.tcp_wmem = 4096 87380 8388608 net.core.rmem_max = 8388608 net.core.wmem_max = 8388608 net.core.netdev_max_backlog = 5000 net.nf_conntrack_max = 9548576 net.ipv4.netfilter.ip_conntrack_max = 9548576 net.netfilter.nf_conntrack_max = 9548576 net.ipv4.tcp_fin_timeout = 10 #Disable IPV6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.all.accept_ra = 0 net.core.warnings = 0 net.ipv4.tcp_mem = 786432 1048576 1572864 net.netfilter.nf_conntrack_tcp_timeout_established = 120 net.netfilter.nf_conntrack_generic_timeout = 120 # cat /sys/module/nf_conntrack/parameters/hashsize 1193572 # sysctl -a | grep nf_conntrack_count net.netfilter.nf_conntrack_count = 221533 Edited 2014-12-21 12:43:16 by morfey Link to post Share on other sites
Abram 98 Posted 2014-12-21 12:49:20 Share Posted 2014-12-21 12:49:20 У тебя по прерываниями проблема, имеющийся тюнинг не имеет к этому отношения. irqbalance лучше не использовать. Покажи cat /proc/interrupts | grep eth Link to post Share on other sites
morfey 82 Posted 2014-12-21 12:55:39 Author Share Posted 2014-12-21 12:55:39 # cat /proc/interrupts | grep eth http://pastebin.com/h4ykqcv8 Link to post Share on other sites
Melanxolik 63 Posted 2014-12-21 13:42:09 Share Posted 2014-12-21 13:42:09 (edited) del скачивайте результат через download. дофига текста. Edited 2014-12-21 13:43:09 by Melanxolik Link to post Share on other sites
morfey 82 Posted 2014-12-21 13:42:38 Author Share Posted 2014-12-21 13:42:38 Временно решил: modprobe bnx2 disable_msi=1 ncpus=`grep -ciw ^processor /proc/cpuinfo` test "$ncpus" -gt 1 || exit 1 n=0 for irq in `cat /proc/interrupts | grep eth | awk '{print $1}' | sed s/\://g` do f="/proc/irq/$irq/smp_affinity" test -r "$f" || continue cpu=$[$ncpus - ($n % $ncpus) - 1] if [ $cpu -ge 0 ] then mask=`printf %x $[2 ** $cpu]` echo "Assign SMP affinity: eth$n, irq $irq, cpu $cpu, mask 0x$mask" echo "$mask" > "$f" let n+=1 fi done Распределилось только на 4 ядра, но нет ошибок на интерфейсах, можно решение поискать спокойно) Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 13:50:14 Share Posted 2014-12-21 13:50:14 Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит. Задача абсолютно стандартна, никакой тюнинг не нужен. irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную. Link to post Share on other sites
morfey 82 Posted 2014-12-21 13:52:52 Author Share Posted 2014-12-21 13:52:52 (edited) Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит. Задача абсолютно стандартна, никакой тюнинг не нужен. irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную. Да, я так и сделал скриптом. Но на интерфейсах ошибки появляются... del скачивайте результат через download. дофига текста. http://91.234.0.2/iter.htm Edited 2014-12-21 13:53:12 by morfey Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 13:58:37 Share Posted 2014-12-21 13:58:37 Страшный ты человек.. Выключи HT, 24 ядра для роутера это явный перебор и причина бед. Link to post Share on other sites
morfey 82 Posted 2014-12-21 14:01:00 Author Share Posted 2014-12-21 14:01:00 (edited) Страшный ты человек.. Выключи HT, 24 ядра для роутера это явный перебор и причина бед. Ну не очень страшный)) HT - Hyper Threading ? В биосе? Поможет? Edited 2014-12-21 14:04:09 by morfey Link to post Share on other sites
Melanxolik 63 Posted 2014-12-21 14:25:46 Share Posted 2014-12-21 14:25:46 на роутерах как раз HT надо выключать, полезностей он не дает. Link to post Share on other sites
morfey 82 Posted 2014-12-21 14:30:45 Author Share Posted 2014-12-21 14:30:45 (edited) Не помогло. Когда раскидаю прерывания по ядрам, на интерфейсах ошибки лезут, пинги с потерями и т.д... Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах. # cat /proc/interrupts | grep eth 16: 3 0 0 0 0 0 0 0 0 0 0 771894 IO-APIC-fasteoi eth0 17: 3 0 0 0 0 0 0 0 0 0 3420298 0 IO-APIC-fasteoi eth1 18: 2 0 0 0 0 0 0 0 0 2507771 0 0 IO-APIC-fasteoi eth2 19: 2 0 0 0 0 0 0 0 2139051 0 0 0 IO-APIC-fasteoi eth3 Не пойму, карты говно? Есть в наличии Intel® Gigabit ET Dual Port Server Adapter на чипе 82576. Может заменить? Edited 2014-12-21 14:46:14 by morfey Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 15:22:34 Share Posted 2014-12-21 15:22:34 (edited) Не, карты нормальные, свой гиг пропускают гарантированно. Покажи top и proc/interrupts с включенными очередями и раскиданными прерываниями. Должно быть как-то так http://pastebin.com/ZJxciqPa (dl380 g6 с теми же картами, прерывания раскиданы "лесенкой" на 6 ядер). Еще покажите ethtool -g eth0 cat /proc/sys/net/core/netdev_max_backlog ifconfig eth0 | grep txqueuelen Edited 2014-12-21 15:25:53 by KaYot Link to post Share on other sites
martin 170 Posted 2014-12-21 15:28:53 Share Posted 2014-12-21 15:28:53 А карты говно всетаки. Ставь Интел, там плюшек больше. Да и платформа вообщето старенькая... Я бы сразу 10Г интеловую ставил и не морочился с гигами, ну и новая корка И7 сделает эти ксеоны. Еще бы глянуть сколько правил фаервола ) Link to post Share on other sites
morfey 82 Posted 2014-12-21 15:29:57 Author Share Posted 2014-12-21 15:29:57 # ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256 # cat /proc/sys/net/core/netdev_max_backlog 1000 # ifconfig eth0 | grep txqueuelen collisions:0 txqueuelen:1000 Увеличивал до 10000 Сейчас не возле сервера, с включенными очередями не смогу показать, доступ потеряю. Link to post Share on other sites
martin 170 Posted 2014-12-21 15:34:10 Share Posted 2014-12-21 15:34:10 txqueuelen не повлияет на ошибки никак. Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок. Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ? Link to post Share on other sites
morfey 82 Posted 2014-12-21 15:45:43 Author Share Posted 2014-12-21 15:45:43 txqueuelen не повлияет на ошибки никак. Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок. Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ? NAT, фаервол Сейчас загрузка ~1.5Г без ошибок с отключенными прерываниями на картах, Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 15:51:14 Share Posted 2014-12-21 15:51:14 (edited) Ну если загрузка устраивает - так и оставьте. Но лучше включите очереди и увеличивайте ring buffer. Заодно можно и очереди отправки увеличить, хуже точно не будет. Весь мой "тюнинг": echo 10000 > /proc/sys/net/core/netdev_max_backlog ethtool -G eth0 rx 1024 ifconfig eth0 txqueuelen 10000 Карты нормальные, буфера большие, очереди умеют - что еще роутеру надо? Edited 2014-12-21 15:53:49 by KaYot Link to post Share on other sites
morfey 82 Posted 2014-12-21 15:52:52 Author Share Posted 2014-12-21 15:52:52 (edited) Покажи top и proc/interrupts с включенными очередями и раскиданными прерываниями. http://91.234.0.2/iter.htm Но это с включенным HT Edited 2014-12-21 15:53:06 by morfey Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 15:59:58 Share Posted 2014-12-21 15:59:58 (edited) Нужны данные в момент глюков, с очередями и без HT. Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала. Edited 2014-12-21 16:00:38 by KaYot Link to post Share on other sites
ttttt 195 Posted 2014-12-21 16:00:01 Share Posted 2014-12-21 16:00:01 Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.Ну без msi по другому никак, а зачем вам больше ядер? Link to post Share on other sites
morfey 82 Posted 2014-12-21 16:07:41 Author Share Posted 2014-12-21 16:07:41 (edited) Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.Ну без msi по другому никак, а зачем вам больше ядер? Ну затем что загрузка каждого из 4 = ~80% Нужны данные в момент глюков, с очередями и без HT. Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала. Размеры буферов да, выставил. А чтобы включить прерывания на карте, нужно модуль перегрузить, доступ пропадет. Edited 2014-12-21 16:08:05 by morfey Link to post Share on other sites
KaYot 3,732 Posted 2014-12-21 16:11:06 Share Posted 2014-12-21 16:11:06 Дык в modprobe options запихните и в ребут. Если клиентов не жалко Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now