Перейти до

HP PROLIANT DL380 G6 загрузка ядра


Рекомендованные сообщения

Прошу помощи у линуксоидов.

Имеется 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)

post-4773-0-92623300-1419162169_thumb.png

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 65
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Почему много? С 1.5Г НАТа же.

Posted Images

Опубліковано: (відредаговано)

Пробовали компилировать ядро 3.18.1 или 3.17.7?

 

Нет. А что там изменено в сравнении с 3.2 в этом плане?

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Пока решил проблему с помощью 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

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах

У тебя по прерываниями проблема, имеющийся тюнинг не имеет к этому отношения.

irqbalance лучше не использовать.

Покажи cat /proc/interrupts | grep eth

Ссылка на сообщение
Поделиться на других сайтах

Временно решил:

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 ядра, но нет ошибок на интерфейсах, можно решение поискать спокойно) 

post-4773-0-95477000-1419169254_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит.

Задача абсолютно стандартна, никакой тюнинг не нужен.

irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную.

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Надо просто раскидать прерывания от сетевок и их очередей по ядрам, по умолчанию все на 0ом и висит.

Задача абсолютно стандартна, никакой тюнинг не нужен.

irqbalance один из вариантов решения, но лучше его выключить и раскидывать вручную.

Да, я так и сделал скриптом. Но на интерфейсах ошибки появляются...

 

del

скачивайте результат через download. дофига текста.

 

http://91.234.0.2/iter.htm

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Страшный ты человек.. Выключи HT, 24 ядра для роутера это явный перебор и причина бед.

Ну не очень страшный))

 

HT - Hyper Threading ? В биосе?

Поможет?

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Не помогло. Когда раскидаю прерывания по ядрам, на интерфейсах ошибки лезут, пинги с потерями и т.д...
 
Опять же при включенной 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. Может заменить?

post-4773-0-93397300-1419173173_thumb.png

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах

Не, карты нормальные, свой гиг пропускают гарантированно.

Покажи 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

Відредаговано KaYot
Ссылка на сообщение
Поделиться на других сайтах

А карты говно всетаки.

Ставь Интел, там плюшек больше. Да и платформа вообщето старенькая... Я бы сразу 10Г интеловую ставил и не морочился с гигами, ну и новая корка И7 сделает эти ксеоны.

Еще бы глянуть сколько правил фаервола )

Ссылка на сообщение
Поделиться на других сайтах

# 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

 

Сейчас не возле сервера, с включенными очередями не смогу показать, доступ потеряю.

Ссылка на сообщение
Поделиться на других сайтах

txqueuelen не повлияет на ошибки никак.

Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок.

 

Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ?

Ссылка на сообщение
Поделиться на других сайтах

txqueuelen не повлияет на ошибки никак.

Ring parameters - можно увеличить до 2048, но это уменьшит прерывания, но не избавит от ошибок.

 

Че там еще на серваке крутится ? фаервол, нат - сколько трансляций ?

NAT, фаервол

Сейчас загрузка ~1.5Г без ошибок с отключенными прерываниями на картах, 

Ссылка на сообщение
Поделиться на других сайтах

Ну если загрузка устраивает - так и оставьте.

Но лучше включите очереди и увеличивайте ring buffer. Заодно можно и очереди отправки увеличить, хуже точно не будет.

Весь мой "тюнинг":

echo 10000 > /proc/sys/net/core/netdev_max_backlog

ethtool -G eth0 rx 1024

ifconfig eth0 txqueuelen 10000

 

Карты нормальные, буфера большие, очереди умеют - что еще роутеру надо?

Відредаговано KaYot
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Покажи top и proc/interrupts с включенными очередями и раскиданными прерываниями.

http://91.234.0.2/iter.htm

 

Но это с включенным HT

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах

Нужны данные в момент глюков, с очередями и без HT.

Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала.

Відредаговано KaYot
Ссылка на сообщение
Поделиться на других сайтах

Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.

Ну без msi по другому никак, а зачем вам больше ядер?
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

 

Опять же при включенной disable_msi=1 раскидаю все по ядрам (4 ядра). Все работает, но только на 4 ядрах.

Ну без msi по другому никак, а зачем вам больше ядер?

 

Ну затем что загрузка каждого из 4 = ~80%

 

Нужны данные в момент глюков, с очередями и без HT.

Размеры буферов меняются в онлайне без потери сервера, попробуйте для начала.

Размеры буферов да, выставил. А чтобы включить прерывания на карте, нужно модуль перегрузить, доступ пропадет.

Відредаговано morfey
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...