Страница 1 из 1

Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 15:39:00
blackjackchik
всем привет
шлюз на

Код: Выделить всё

FreeBSD gw.cn.km.ua 7.2-RELEASE-p6 FreeBSD 7.2-RELEASE-p6 #3: Mon Feb 15 16:17:44 EET 2010     admin@gw.cn.km.ua:/usr/obj/usr/src/sys/GATE  i386
при 120 мегабитах входящего трафика цпу идле уже равно 0.

Код: Выделить всё

last pid: 23832;  load averages:  5.55,  5.46,  5.08                                                                                            up 0+02:23:30  14:32:41
112 processes: 7 running, 87 sleeping, 18 waiting
CPU:  1.1% user,  0.0% nice, 98.2% system,  0.5% interrupt,  0.2% idle
Mem: 559M Active, 13M Inact, 166M Wired, 192K Cache, 23M Buf, 1259M Free
Swap: 5120M Total, 5120M Free

  PID USERNAME   THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   47 root         1  43    -     0K     8K RUN    1  58:36 76.07% em1_rx_kthread_1
   46 root         1  43    -     0K     8K CPU1   0  58:29 75.59% em1_rx_kthread_0
   36 root         1  43    -     0K     8K RUN    0  22:35 21.19% em0_rx_kthread_0
   37 root         1  43    -     0K     8K RUN    1  22:36 20.75% em0_rx_kthread_1
 3999 root         1  60  -15  9964K  7996K select 1   2:11  0.98% perl5.8.9
   45 root         1 -68    -     0K     8K WAIT   1   1:37  0.39% em1_txcleaner
 3998 root         1   8  -15 10552K  8688K nanslp 0   1:28  0.29% perl5.8.9
   14 root         1 -32    -     0K     8K WAIT   1   1:23  0.10% swi4: clock sio
   12 root         1 171 ki31     0K     8K RUN    0  30:09  0.00% idle: cpu0
   55 root         1 -68    -     0K     8K -      0  29:11  0.00% dummynet
   11 root         1 171 ki31     0K     8K RUN    1  26:38  0.00% idle: cpu1
грешил на драйвера сетевух, собрал яндексовые и с ними тоже самое.

Код: Выделить всё

netstat -w1 -h -I em1
            input          (em1)           output
   packets  errs      bytes    packets  errs      bytes colls
       56K     0        12M        56K     0        10M     0
       57K     0        12M        58K     0        10M     0
       58K     0        12M        59K     0        10M     0
       58K     0        12M        59K     0        10M     0
       51K     0        12M        52K     0        10M     0
       58K     0        12M        58K     0       9.9M     0
       58K     0        12M        58K     0       9.7M     0
       58K     0        12M        57K     0       9.6M     0
проц

Код: Выделить всё

CPU: Intel(R) Pentium(R)  CPU       E5400  @ 2.70GHz (2700.02-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x1067a  Stepping = 10
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x309<SSE3,MON,TM2,SSSE3>
  AMD Features=0x20100000<NX,LM>
  AMD Features2=0x1<LAHF>
  Cores per package: 2
real memory  = 2146304000 (2046 MB)
avail memory = 2090627072 (1993 MB)
ACPI APIC Table: <GBT    GBTUACPI>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
что посоветуете?

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 16:08:15
Ух-ух
Что у тебя IPFW+NAT?

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 17:06:37
blackjackchik
да

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 17:27:31
Ух-ух
На PF переходи или проц меняй.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 17:36:16
blackjackchik
не могу перейти на пф
http://forum.lissyara.su/viewtopic.php?f=8&t=23956

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 17:46:36
hizel
где x порядкоовый номер

Код: Выделить всё

sysctl dev.em.х.tx_int_delay=250
sysctl dev.em.х.rx_abs_int_delay=250
sysctl dev.em.х.tx_abs_int_delay=250
sysctl dev.em.х.rx_processing_limit=4000

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 17:57:35
blackjackchik
сделал, не помогло

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-18 18:17:46
Ух-ух
blackjackchik писал(а):не могу перейти на пф
http://forum.lissyara.su/viewtopic.php?f=8&t=23956
Во блин! Не знал!
Ставь нормальный поцессор.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-19 5:28:32
arkan
Если машинко слабовата то может попробывать IPNAT

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-19 18:24:03
terminus
http://groups.google.kz/group/fido7.ru. ... 12f2e7f125?
21 янв 2009, среда, в 14:17 KRAT, Valentin Davydov написал(а):

VD> 2EG: а ты по листам рассылки смотрел? Там эту тему раз в пару лет
VD> подымают,
VD> и называли цифры то 600, а то и 750 (последнюю - не совсем понятно в каком
VD> контексте).

Стабильно 742Kpps я научился получать, иногда всплески чуть больше.
Hо это только в режиме поллинга, потому что одно ядро получается загружено
полностью и в режиме прерываний переключения контекста сьедают
производительность.

1) Читаем man polling. По дефолту параметры поллинга заточены
под 100Mbit, для гигабита их надо поменять. Грубо говоря, при использовании
поллинга каждый тик таймера (с частотой HZ) драйвер получает возможность
послать/принять из железа определенное количество пакетов, не более
чем HZ*kern.polling.burst_max, причем для увеличения burst_max в ядре
прописан жесткий предел в 1000. Без увеличения HZ достигнуть 700Kpps
на своем железе я не смог, а 750Kpps только при HZ=4000.

Пишем в /boot/loader.conf:
kern.hz=4000

Для тестового потока через один интерфейс:

sysctl kern.polling.each_burst=1000
sysctl kern.polling.burst_max=1000

2) Hастраиваем драйвер сетевой карты.

Каждый такой драйвер в FreeBSD имеет очередь (FIFO), в которую верхние
слои сетевого стека складывают пакеты, из неё данные прямиком идут в чип
сетевой карты. Если места в этой FIFO нет, пакеты остаются в буферах стека,
ожидая, пока железо разгребет очередь. Для уменьшения задержек можно
увеличить размер этой очереди. По умолчанию в драйвере em он равен
256 пакетам, для большинства обслуживаемых драйвером em сетевых он может
быть увеличен до 4096 (кроме чипов 82542 и 82543 - максимум 256)
через /boot/loader.conf, отдельно для приёма и передачи:

hw.em.rxd=4096
hw.em.txd=4096

Бесплатно ничего не бывает, и каждый элемент очереди состоит из дескриптора
в 16 байт, а для приемной очереди ещё и из буфера - с учетом того,
что максимальный MTU равен 16110 байт. Так что такая приёмная очередь
может занять почти 64Mb ядерной памяти под буфера.
А в стеке IP есть ещё ограничение net.inet.ip.intr_queue_maxlen,
максимальаня длина приёмной очереди, при переполнении которой стек
дропает входящие пакеты, по дефолту 50, можно тоже увеличить до 4096.

3) Собственно простейший бенчмарк на основе ng_source:

#!/bin/sh

stop_and_show() {

ngctl msg em0:orphans stop

ngctl msg em0:orphans getstats

ngctl shutdown em0:orphans

}

trap "stop_and_show; exit 1" SIGINT SIGTERM

ngctl mkpeer em0: source orphans output

nghook em0:orphans input < packet.cap

ngctl msg em0:orphans start 100000000

sleep 60

stop_and_show
#EOF

Для его работы надо изготовить IP-пакет, который будет посылаться непрерывно
в течение теста и положить в packet.cap (со всеми заголовками IP).
Запускаем: ./bench, ждем 60 секунд (можно прервать раньше по Ctrl-C)
и видим приблизительно следующее:

nghook: EOF(stdin)
Rec'd response "getstats" (1) from "[73]:":
Args: { outOctets=4736425984 outFrames=44683264 queueOctets=106
queueFrames=1 startTime={ tv_sec=1232569999 tv_usec=871790 } endTime={
tv_sec=1232570060 tv_usec=62699 } elapsedTime={ tv_sec=60 tv_usec=190909 }
lastTime={ tv_sec=1232569999 tv_usec=871790 } }

Берем значение outFrames - сколько фреймов успели послать и делим
на прошедшее время elapsedTime: 44683264/60.190909 = 742359pps, или 772Mbps.

Eugene

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-19 19:51:07
Гость
Привет
Значит так друзья.
Заметил закономерность, если ставлю

Код: Выделить всё

net.isr.direct=1
или

Код: Выделить всё

net.inet.ip.fastforwarding=1
то начитнаются дропы пакетов
если ставлю оба параметра в 0, то ни единой ошибки, но входщий трафик падает на процентов 25 а исход на 50 %.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-02-19 19:54:29
blackjackchik
примерно вот так

Код: Выделить всё

            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
       18K     0        14M        12K     0       2.3M     0
       17K     0        13M        11K     0       2.1M     0
       17K     0        12M        12K     0       2.1M     0
       17K     0        13M        12K     0       2.1M     0
^C
[root@gw /home/admin]# sysctl net.inet.ip.fastforwarding=1
net.inet.ip.fastforwarding: 0 -> 1
[root@gw /home/admin]# netstat -h -w1 -I em0
            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
       25K   128        18M        20K     0       4.7M     0
       26K    36        18M        19K     0       4.6M     0
       25K   125        18M        19K     0       4.4M     0
       25K   256        18M        18K     0       4.2M     0

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 15:03:38
Laa
Слушай, а вот карточки emX бывают разные.
Покажи pciconv -lcv для своих сетевушек.

В /boot/loader.conf поставил значения?

Код: Выделить всё

hw.em.rxd=4096
hw.em.txd=4096 

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 15:43:26
blackjackchik

Код: Выделить всё

em0@pci0:3:0:0:	class=0x020000 card=0x10828086 chip=0x107d8086 rev=0x06 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'PRO/1000 PT'
    class      = network
    subclass   = ethernet
    cap 01[c8] = powerspec 2  supports D0 D3  current D0
    cap 05[d0] = MSI supports 1 message, 64 bit enabled with 1 message
    cap 10[e0] = PCI-Express 1 endpoint
em1@pci0:6:1:0:	class=0x020000 card=0x002e8086 chip=0x100e8086 rev=0x02 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82540EM Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet
    cap 01[dc] = powerspec 2  supports D0 D3  current D0
    cap 07[e4] = PCI-X supports 2048 burst read, 1 split transaction
    cap 05[f0] = MSI supports 1 message, 64 bit 
поставил но сервер еще не перезагружался, поэтому пока эффекта от этого нет. Частично виной проблемы был юдп трафик который вырос полсе обновления торрент клиентов до версии 2. На графике видно как упали ошибки после запрета юдп.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 15:50:37
Laa
Еще сделайте попробуйте так:

Код: Выделить всё

sysctl dev.em.0.debug=1
sysctl dev.em.1.debug=1
затем посмотрите выводы

Код: Выделить всё

sysctl -a|grep ^em0
sysctl -a|grep ^em1
сравните значения Packet buffer для каждой из ваших карточек. На хороших и дорогих карточках значения выше, imho.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 15:52:47
blackjackchik

Код: Выделить всё

[root@gw /home/admin]# sysctl -a|grep em0
em0: Adapter hardware address = 0xc5618218 
em0: CTRL = 0x400c0241 RCTL = 0x8002 
em0: Packet buffer = Tx=16k Rx=32k 
em0: Flow control watermarks high = 30720 low = 29220
em0: tx_int_delay = 244, tx_abs_int_delay = 244
em0: rx_int_delay = 244, rx_abs_int_delay = 244
em0: fifo workaround = 0, fifo_reset_count = 0
em0: hw tdh = 37, hw tdt = 37
em0: hw rdh = 68, hw rdt = 54
em0: Num Tx descriptors avail = 254
em0: Tx Descriptors not avail1 = 0
em0: Tx Descriptors not avail2 = 0
em0: Std mbuf failed = 0
em0: Std mbuf cluster failed = 0
em0: Driver dropped packets = 0
em0: Driver tx dma failure in encap = 0
[root@gw /home/admin]# sysctl -a|grep em1
em1: Adapter hardware address = 0xc5671218 
em1: CTRL = 0x58340249 RCTL = 0x8002 
em1: Packet buffer = Tx=16k Rx=48k 
em1: Flow control watermarks high = 47104 low = 45604
em1: tx_int_delay = 244, tx_abs_int_delay = 244
em1: rx_int_delay = 244, rx_abs_int_delay = 244
em1: fifo workaround = 0, fifo_reset_count = 0
em1: hw tdh = 222, hw tdt = 222
em1: hw rdh = 108, hw rdt = 107
em1: Num Tx descriptors avail = 256
em1: Tx Descriptors not avail1 = 81422
em1: Tx Descriptors not avail2 = 0
em1: Std mbuf failed = 0
em1: Std mbuf cluster failed = 0
em1: Driver dropped packets = 0
em1: Driver tx dma failure in encap = 0

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 15:54:20
Laa
Посмотрите разницу:

Код: Выделить всё

em0: Packet buffer = Tx=16k Rx=32k 
...
em1: Packet buffer = Tx=16k Rx=48k 

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 17:28:26
blackjackchik
так, разницу увидел, а просветите меня пожалуйста сколько надо буфера чтобы могло перелопатить 500-1000м трафика и подскажите модель сетевушки.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 18:39:06
Laa
Я читал, что теоретически шина pci может переварить до 1гбита. Это вся шина. Ну или около 1гбит. Если у вас две сетевушки, то получается теоретический предел 500мбит на каждой или 1гбит в сумме. Реально должно быть меньше, так как на шине сидят еще устройства, есть еще потребители как аппаратные, так и программные (нат, файервол и тд). На шине pci-e/pci-x пределы выше. Опять же, хорошо бы отключать все лишнее в биосе (звук, усб, лпт и тд и тп, все то, что не будет использоваться). Нужны мощне процессоры и классное охлаждение. Сетевушки интел не все хорошие, но четко знаю, что сетевушки ...Intel Server adapter .. лучше чем ...Intel Desktop adapter...

Думаю, что стоит для дальнейшего развития вам завести сервер (лучше именно сервер, а не ПК) с шиной pci-e (4x-8x-16x) и с хорошим процессором, на эту шину поставьте сетевушку с двумя портами, например Intel® PRO/1000 MT Dual Port Server Adapter (сам пока такую не юзал, еще руки не дошли, но выбрал на будущее такую), а может быть и будет у вас на сервере пара встроенных сетевух (зависит от сервера). Ну и подтюньте как тут рекомендуют ядро и систему.

У меня сейчас переливается пока около 150мбит интернета с учетом ната и файервола. Больше пока клиенты не гребут. :sorry: Сервер на 2x Intel Xeon 3.00Ghz с двумя набортными сетевушками в шине pci-x.

Все сказанное -- IMHO, критика приветствуется.

Re: Ставить новую сетевую, проц или тюнинг?

Добавлено: 2010-03-03 20:54:44
blackjackchik
вот на графике видно что сейчас переваривает сервер, это с натом, шейпером думминет и 3 фуллвью.
насчет шины pci вот здесь когдато я поднимал эту тему http://local.com.ua/forum/topic/13989-n ... ntry106433

так вот после смены сервера на новый, та же сетевая карта может перетравить и больше.