Страница 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
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
Ух-ух
Во блин! Не знал!
Ставь нормальный поцессор.
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
Гость
Привет
Значит так друзья.
Заметил закономерность, если ставлю
или
то начитнаются дропы пакетов
если ставлю оба параметра в 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 поставил значения?
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
затем посмотрите выводы
сравните значения 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мбит интернета с учетом ната и файервола. Больше пока клиенты не гребут.

Сервер на 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
так вот после смены сервера на новый, та же сетевая карта может перетравить и больше.