Jump to content
Калькуляторы

Можно ли выжать из BCM5721 больше 100kpps?

Имеется сервер с двумя встроенными сетевыми картами Broadcom BCM5721 PCI-Express.

На приблизительно 600mbps и 100kpps возник следующий эффект:

при небольшом увеличении нагрузки пинг скачком увеличивается с 1-2 до 10мс и появляются потери 1-5%.

Ядра процессора при этом заняты не полностью, процессорная нагрузка растёт плавно, пропорционально mbps/kpps.

 

Есть подозрение, что это потолок для сетевых карт.

iperf с параметрами по умолчанию между двумя одинаковыми соседними серверами

показал 450-480 mbps (+60mbps рабочего трафика).

 

Какие ручки крутил (FreeBSD-7.1):

1) coalescing patch для if_bge: http://forum.nag.ru/forum/index.php?showtopic=53447

2) /boot/loader.conf:

- kern.hz=2000 и 4000

- hw.bge.rxd=512

3) /etc/sysctl.conf:

net.inet.ip.dummynet.io_fast=1
net.inet.ip.fastforwarding=0
net.inet.ip.fw.dyn_buckets=2048
net.inet.ip.dummynet.hash_size=2048

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
dev.bge.0.program_coal=1

dev.bge.1.rx_coal_ticks=500
dev.bge.1.tx_coal_ticks=10000
dev.bge.1.rx_max_coal_bds=64
dev.bge.1.tx_max_coal_bds=128
dev.bge.1.program_coal=1

 

Статистика:

# sysctl net.inet.ip | grep intr_
net.inet.ip.intr_queue_maxlen: 50
net.inet.ip.intr_queue_drops: 0

# sysctl net.isr
net.isr.swi_count: 22302955
net.isr.drop: 0
net.isr.queued: 3040
net.isr.deferred: 0
net.isr.directed: -1524784307
net.isr.count: -1533290500
net.isr.direct: 1

# vmstat -i
interrupt                          total       rate
irq1: atkbd0                         198          0
irq14: ata0                           58          0
irq19: uhci1+                     276092          1
cpu0: timer                    721129049       4032
irq256: bge0                   335093609       1873
irq257: bge1                   342699102       1916
cpu1: timer                    721129198       4032
Total                         2120327306      11856

vmstat -z | grep -v ' 0$' выдаёт пустой список.

 

Вопрос: можно ли выжать из данной аппаратной конфигурации больше?

Поможет ли увеличение hw.bge.rxd? обновление системы до 8.1?

Share this post


Link to post
Share on other sites

Обновил FreeBSD 7.1 до 8.2.

iperf показал 916 Mbits/sec.

На соседней машинке с 7.1+bge coalescing patch - всего 619 Mbits/sec.

На первой до обновления результат был похожим.

Единственное отличие между машинками - на первой cpu e8500, на второй e7300.

 

UPD. Видимо, виновато обновление драйвера bge между 7.x и 8.x.

В Линуксе смена ядра с 2.6.27 на 2.6.32 на шлюзе с broadcom'ами

привела к снижению процессорной нагрузки вдвое.

Но там драйвер tg3 написан broadcom'ом и использует закрытую фирмварь.

А во FreeBSD осталось непонятным и ограничение в 600mbps, и его исчезновение,

и сопоставимая с Линуксом производительность без фирмвари.

Edited by Ilya Evseev

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this