Jump to content

Recommended Posts

Posted (edited)

Итак, имеется Asus-платформа с двумя встроенными гигабитными картами BCM5721,

ядро 2.6.27 (планирую 2.6.30), драйвер tg3.

Работает как шлюз+NAT.

 

В данный момент vmstat показывает около 15k прерываний и 260 переключений контекста в секунду.

Загрузка сетевых карт: 50mbps и 7kpps в одну сторону, 20mbps и 6kpps в другую.

В час пик нагрузка в 6-7 раз выше, в conntrack до 270k записей.

Теоретически прерывание от сетевой карты даст 100% загрузку одного ядра CPU при 380-400mbps.

 

Вопрос: можно ли увеличить пропускную способность с помощью coalescing'a

и что куда менять? Сейчас значения следующие:

# ethtool -c eth0
...
rx-usecs: 20
rx-frames: 5
rx-usecs-irq: 0
rx-frames-irq: 5

tx-usecs: 72
tx-frames: 53
tx-usecs-irq: 0
tx-frames-irq: 5
...

Offload (ethtool -K) включен для всего, кроме udp fragmentation.

Короче, всё по умолчанию, ничего не менял (пока).

 

Igor Sysoev (см. http://lists.freebsd.org/pipermail/freebsd...ne/022227.html) использует под FreeBSD такие значения:

/boot/loader.conf:
hw.bge.rxd=512

/etc/sysctl.conf:
dev.bge.0.rx_coal_ticks=500
dev.bge.0.tx_coal_ticks=10000
dev.bge.0.rx_max_coal_bds=64
dev.bge.0.tx_max_coal_bds=128

Однако не совсем понятно, например, что такое bds и почему параметров всего 4, когда ethtool показывает 8.

И как у ethtool называется аналог hw.bge.rxd? Rx Ring Size?

 

В https://kerneltrap.org/mailarchive/linux-ne.../1441484/thread вообще рекомендуется отключить NAPI

(причём такое ощущение, что единственный способ это сделать - перекомпилировать драйвер карты)

и тюнить coalescing (но не приведено никаких советов).

 

В общем, интересует формула расчёта параметров для coalescing в зависимости от текущих intr/cs/mbps/kpps

для использования при трафике >350mbps, т.е. при загрузке ядер CPU от 90%.

И нужен ли/возможен coalescing при включённом NAPI?

Edited by Ilya Evseev
Posted

Опробовал сысоевский патчик на Фре 7.1.

Загрузка процессора (e7300) при том же трафике упала со 130% до 100%.

 

Вывод: coalescing - штука стОящая, но вопросы относительно её применимости в Линуксе остаются.

Posted (edited)

Обновил на linux-роутере ядро с 2.6.27 до 2.6.30.

Загрузка процессора при том же трафике упала примерно раза в два.

Кто-нибудь знает, из-за чего такой прогресс?

 

Пока единственное предположение, что это из-за фирмвари:

# locate tg3
/lib/firmware/2.6.30-std-def-alt14/tigon/tg3.bin
/lib/firmware/2.6.30-std-def-alt14/tigon/tg3_tso.bin
/lib/firmware/2.6.30-std-def-alt14/tigon/tg3_tso5.bin
/lib/modules/2.6.27-ovz-smp-alt9/kernel/drivers/net/tg3.ko
/lib/modules/2.6.30-std-def-alt14/kernel/drivers/net/tg3.ko

Edited by Ilya Evseev
  • 1 year later...
Posted (edited)

С учётом того, что bge coalescing patch во FreeBSD вызывает kernel trap при перезагрузке и выключении, пара обходных вариантов.

 

Грубый - в /etc/rc.conf:

dumpdev="NO"

dumpdir="NO"

Ядро будет автоматически перезапускаться через 20(?) секунд после kernel trap, не пытаясь создать дамп. Если попытается - повиснет полностью.

 

Занудный - явно гасить интерфейсы при остановке системы:

chmod +x /usr/local/etc/rc.d/ifbge_shutdown

#!/bin/sh
#
# PROVIDE: ifbge_shutdown
# REQUIRE: netif
# KEYWORD: nojail nostart shutdown
#

# Workaround for kernel trap ispired by coalescing patch to if_bge driver.
# Shutdown bge0,bge1,... before rebooting.

. /etc/rc.subr

name="ifbge_shutdown"

start_cmd=":"
stop_cmd="ifbge_shutdown"

ifbge_shutdown() {
        echo "if_bge..."
        for n in 0 1 2 3 4 5 6 7 8 9; do
                ifconfig bge$n down || break
                echo "bge$n: shutdown successful."
                sleep 1
        done
}

run_rc_command "$1"

 

UPD. Пишут, что kernel trap 12 в 7.1 может происходить даже без coalescing-патча:

http://svn.freebsd.org/viewvc/base?view=re...revision=192127

Edited by Ilya Evseev

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.