morfey 82 Опубликовано: 2014-12-21 11:46:40 Share Опубликовано: 2014-12-21 11:46:40 (відредаговано) Прошу помощи у линуксоидов. Имеется 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) Відредаговано 2014-12-21 12:12:10 morfey Ссылка на сообщение Поделиться на других сайтах
Not found 38 Опубліковано: 2014-12-21 11:51:46 Share Опубліковано: 2014-12-21 11:51:46 Пробовали компилировать ядро 3.18.1 или 3.17.7? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 12:02:40 Автор Share Опубліковано: 2014-12-21 12:02:40 (відредаговано) Пробовали компилировать ядро 3.18.1 или 3.17.7? Нет. А что там изменено в сравнении с 3.2 в этом плане? Відредаговано 2014-12-21 12:02:49 morfey Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 12:08:27 Автор Share Опубліковано: 2014-12-21 12:08:27 (відредаговано) Пока решил проблему с помощью 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 Відредаговано 2014-12-21 12:43:16 morfey Ссылка на сообщение Поделиться на других сайтах
Abram 98 Опубліковано: 2014-12-21 12:49:20 Share Опубліковано: 2014-12-21 12:49:20 У тебя по прерываниями проблема, имеющийся тюнинг не имеет к этому отношения. irqbalance лучше не использовать. Покажи cat /proc/interrupts | grep eth Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 12:55:39 Автор Share Опубліковано: 2014-12-21 12:55:39 # cat /proc/interrupts | grep eth http://pastebin.com/h4ykqcv8 Ссылка на сообщение Поделиться на других сайтах
Melanxolik 63 Опубліковано: 2014-12-21 13:42:09 Share Опубліковано: 2014-12-21 13:42:09 (відредаговано) del скачивайте результат через download. дофига текста. Відредаговано 2014-12-21 13:43:09 Melanxolik Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 13:42:38 Автор Share Опубліковано: 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 ядра, но нет ошибок на интерфейсах, можно решение поискать спокойно) Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 13:50:14 Share Опубліковано: 2014-12-21 13:50:14 Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит. Задача абсолютно стандартна, никакой тюнинг не нужен. irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 13:52:52 Автор Share Опубліковано: 2014-12-21 13:52:52 (відредаговано) Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит. Задача абсолютно стандартна, никакой тюнинг не нужен. irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную. Да, я так и сделал скриптом. Но на интерфейсах ошибки появляются... del скачивайте результат через download. дофига текста. http://91.234.0.2/iter.htm Відредаговано 2014-12-21 13:53:12 morfey Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 13:58:37 Share Опубліковано: 2014-12-21 13:58:37 Страшный ты человек.. Выключи HT, 24 ядра для роутера это явный перебор и причина бед. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 14:01:00 Автор Share Опубліковано: 2014-12-21 14:01:00 (відредаговано) Страшный ты человек.. Выключи HT, 24 ядра для роутера это явный перебор и причина бед. Ну не очень страшный)) HT - Hyper Threading ? В биосе? Поможет? Відредаговано 2014-12-21 14:04:09 morfey Ссылка на сообщение Поделиться на других сайтах
Melanxolik 63 Опубліковано: 2014-12-21 14:25:46 Share Опубліковано: 2014-12-21 14:25:46 на роутерах как раз HT надо выключать, полезностей он не дает. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 14:30:45 Автор Share Опубліковано: 2014-12-21 14:30:45 (відредаговано) Не помогло. Когда раскидаю прерывания по ядрам, на интерфейсах ошибки лезут, пинги с потерями и т.д... Опять же при включенной 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. Может заменить? Відредаговано 2014-12-21 14:46:14 morfey Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 15:22:34 Share Опубліковано: 2014-12-21 15:22:34 (відредаговано) Не, карты нормальные, свой гиг пропускают гарантированно. Покажи 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 Відредаговано 2014-12-21 15:25:53 KaYot Ссылка на сообщение Поделиться на других сайтах
martin 170 Опубліковано: 2014-12-21 15:28:53 Share Опубліковано: 2014-12-21 15:28:53 А карты говно всетаки. Ставь Интел, там плюшек больше. Да и платформа вообщето старенькая... Я бы сразу 10Г интеловую ставил и не морочился с гигами, ну и новая корка И7 сделает эти ксеоны. Еще бы глянуть сколько правил фаервола ) Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 15:29:57 Автор Share Опубліковано: 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 Сейчас не возле сервера, с включенными очередями не смогу показать, доступ потеряю. Ссылка на сообщение Поделиться на других сайтах
martin 170 Опубліковано: 2014-12-21 15:34:10 Share Опубліковано: 2014-12-21 15:34:10 txqueuelen не повлияет на ошибки никак. Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок. Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 15:45:43 Автор Share Опубліковано: 2014-12-21 15:45:43 txqueuelen не повлияет на ошибки никак. Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок. Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ? NAT, фаервол Сейчас загрузка ~1.5Г без ошибок с отключенными прерываниями на картах, Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 15:51:14 Share Опубліковано: 2014-12-21 15:51:14 (відредаговано) Ну если загрузка устраивает - так и оставьте. Но лучше включите очереди и увеличивайте ring buffer. Заодно можно и очереди отправки увеличить, хуже точно не будет. Весь мой "тюнинг": echo 10000 > /proc/sys/net/core/netdev_max_backlog ethtool -G eth0 rx 1024 ifconfig eth0 txqueuelen 10000 Карты нормальные, буфера большие, очереди умеют - что еще роутеру надо? Відредаговано 2014-12-21 15:53:49 KaYot Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 15:52:52 Автор Share Опубліковано: 2014-12-21 15:52:52 (відредаговано) Покажи top и proc/interrupts с включенными очередями и раскиданными прерываниями. http://91.234.0.2/iter.htm Но это с включенным HT Відредаговано 2014-12-21 15:53:06 morfey Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 15:59:58 Share Опубліковано: 2014-12-21 15:59:58 (відредаговано) Нужны данные в момент глюков, с очередями и без HT. Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала. Відредаговано 2014-12-21 16:00:38 KaYot Ссылка на сообщение Поделиться на других сайтах
ttttt 195 Опубліковано: 2014-12-21 16:00:01 Share Опубліковано: 2014-12-21 16:00:01 Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.Ну без msi по другому никак, а зачем вам больше ядер? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2014-12-21 16:07:41 Автор Share Опубліковано: 2014-12-21 16:07:41 (відредаговано) Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.Ну без msi по другому никак, а зачем вам больше ядер? Ну затем что загрузка каждого из 4 = ~80% Нужны данные в момент глюков, с очередями и без HT. Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала. Размеры буферов да, выставил. А чтобы включить прерывания на карте, нужно модуль перегрузить, доступ пропадет. Відредаговано 2014-12-21 16:08:05 morfey Ссылка на сообщение Поделиться на других сайтах
KaYot 3 708 Опубліковано: 2014-12-21 16:11:06 Share Опубліковано: 2014-12-21 16:11:06 Дык в modprobe options запихните и в ребут. Если клиентов не жалко Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас