Обновить
28
0
Вадим Абрамчук@Obramko

Пользователь

Отправить сообщение
Увидел From Dust… Это ж Populous!
Когда выходит?
По-моему, мы с Вами на брудершафт не пили?

Если почему-то возникла необходимость разрешить запускать все — значит, недоработка где-то в другом месте.
> portable версии не требуют админских прав.
Зато запускать их политика разрешает.
Вот здесь, в самом внизу.
Arch Linux.
Сколько прокачиваю — не скажу, т.к. за это мне служба безопасности по кумполу настучит.
Скажу только, что там e1g44et.
Свежий драйвер от Intel:
filename: /lib/modules/2.6.35-ARCH/kernel/drivers/net/igb/igb.ko
version: 3.0.22
license: GPL
description: Intel® Gigabit Ethernet Network Driver
author: Intel Corporation, <e1000-devel@lists.sourceforge.net>
srcversion: 45B8078075068728A5A5573
alias: pci:v00008086d000010D6sv*sd*bc*sc*i*
alias: pci:v00008086d000010A9sv*sd*bc*sc*i*
alias: pci:v00008086d000010A7sv*sd*bc*sc*i*
alias: pci:v00008086d00001526sv*sd*bc*sc*i*
alias: pci:v00008086d000010E8sv*sd*bc*sc*i*
alias: pci:v00008086d0000150Dsv*sd*bc*sc*i*
alias: pci:v00008086d000010E7sv*sd*bc*sc*i*
alias: pci:v00008086d000010E6sv*sd*bc*sc*i*
alias: pci:v00008086d00001518sv*sd*bc*sc*i*
alias: pci:v00008086d0000150Asv*sd*bc*sc*i*
alias: pci:v00008086d000010C9sv*sd*bc*sc*i*
alias: pci:v00008086d00000440sv*sd*bc*sc*i*
alias: pci:v00008086d0000043Csv*sd*bc*sc*i*
alias: pci:v00008086d0000043Asv*sd*bc*sc*i*
alias: pci:v00008086d00000438sv*sd*bc*sc*i*
alias: pci:v00008086d00001527sv*sd*bc*sc*i*
alias: pci:v00008086d00001516sv*sd*bc*sc*i*
alias: pci:v00008086d00001511sv*sd*bc*sc*i*
alias: pci:v00008086d00001510sv*sd*bc*sc*i*
alias: pci:v00008086d0000150Fsv*sd*bc*sc*i*
alias: pci:v00008086d0000150Esv*sd*bc*sc*i*
alias: pci:v00008086d00001524sv*sd*bc*sc*i*
alias: pci:v00008086d00001523sv*sd*bc*sc*i*
alias: pci:v00008086d00001522sv*sd*bc*sc*i*
alias: pci:v00008086d00001521sv*sd*bc*sc*i*
depends: dca
vermagic: 2.6.35-ARCH SMP preempt mod_unload
parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (max 100000), default 3=adaptive (array of int)
parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)
parm: Node:set the starting node to allocate memory on, default -1 (array of int)
parm: LLIPort:Low Latency Interrupt TCP Port (0-65535), default 0=off (array of int)
parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1), default 0=off (array of int)
parm: LLISize:Low Latency Interrupt on Packet Size (0-1500), default 0=off (array of int)
parm: RSS:Number of Receive-Side Scaling Descriptor Queues (0-8), default 1=number of cpus (array of int)
parm: VMDQ:Number of Virtual Machine Device Queues: 0-1 = disable, 2-8 enable, default 0 (array of int)
parm: max_vfs:Number of Virtual Functions: 0 = disable, 1-7 enable, default 0 (array of int)
parm: QueuePairs:Enable TX/RX queue pairs for interrupt handling (0,1), default 1=on (array of int)
parm: EEE:Enable/disable on parts that support the feature (array of int)
parm: DMAC:Enable/disable on parts that support the feature (array of int)
parm: debug:Debug level (0=none, ..., 16=all) (int)
Да как угодно. Хоть cat /dev/urandom |nc x.x.x.x yy. А можно вот тут посмотреть: forum.nag.ru/forum/index.php?showtopic=66517.
Простите, а что случилось за два года?
При чем тут рейд? Я о сети.
Будет забито interrupt и system.
Кстати, да. Он у себя на Татуине все на фряхе строит.
Драйвера из ядра не умеют толком interrupt queues, interrupt throttle, offload-ы и так далее.
Снять счетчики с интерфейсов.
Странно. В лабораториях Intel из кожи вон лезут, чтобы 8 гигабит прокачать, а у Вас само работает.
Вы вводите людей в заблуждение. У Вас процессоры резиновые?
Oops. Исправляюсь.
О, гугл рулит и педалит.
Вроде вот так надо для прерываний:
loader.conf
net.isr.maxthreads=4
net.isr.numthreads=4
net.isr.bindthreads=0

Последнее, как я понял — это прибивание потоков к ядрам. Я бы ставил 1.
О, гугл рулит и педалит.
Вот так надо для прерываний:
loader.conf
<source lang=«bash>net.isr.maxthreads=4
net.isr.numthreads=4
net.isr.bindthreads=0
Последнее, как я понял — это прибивание потоков к ядрам. Я бы ставил 1.
У меня так:
loader.conf
hw.igb.rxd="4096"
hw.igb.txd="4096"
hw.igb.rx_process_limit="400"
net.isr.maxthreads=4

sysctl.conf
net.route.netisr_maxqlen=512
net.isr.direct=0

Не спрашивайте, что все эти цифры и буквы значат. Сам не знаю. Но работает :).
Либо я неправильно выразился, либо Вы неправильно поняли.
Пересекаются они тем, что xDSL & Wi-Fi инкапсулируют Ethernet. Он хоть сегодня и стандарт де-факто, но далеко не единственный протокол второго уровня.
Просто готовить не умеете :).
Конкретно для FreeBSD не скажу, но для Linux готовлю так:
1. Обязательно драйвер от Intel. Для FreeBSD — драйвер от Яндекса.
2. Обязательно выставить кол-во очередей прерываний равным количеству CPU в SMP (или ядер, или ядер*CPU — ну Вы поняли; дальше буду называть ядрами).
3. Прибить прерывания к ядрам. По умолчанию ОС балансирует прерывания на свободные ядра. Это хорошо для большинства случаев, но не для сети! Переключения контекста из-за балансировки занимают больше времени, чем собственно обработка прерываний. У меня выглядит где-то так:
#!/bin/sh
#
#  irq2smp -- distribute hardware interrupts from Ethernet devices by CPU cores.
#
#  Should be called from /etc/rc.local.
#

/bin/echo 1 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 2 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-rx-1' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 4 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-rx-2' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 8 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-rx-3' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 1 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 2 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-tx-1' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 4 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-tx-2' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 8 >    /proc/irq/`cat /proc/interrupts | grep 'eth0-tx-3' | awk -F \: '{printf "%i", $1}'`/smp_affinity



/bin/echo 1 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-rx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 2 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-rx-1' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 4 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-rx-2' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 8 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-rx-3' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 1 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-tx-0' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 2 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-tx-1' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 4 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-tx-2' | awk -F \: '{printf "%i", $1}'`/smp_affinity
/bin/echo 8 >    /proc/irq/`cat /proc/interrupts | grep 'eth1-tx-3' | awk -F \: '{printf "%i", $1}'`/smp_affinity

Парировать tx+rx по вкусу по обстоятельствам, одну физическую карту желательно вешать на один физический процессор.
4. Interrupt throttle rate — крутить вручную, читать документацию Intel-а. Если кратко, то обычно один пакет = одно прерывание. Это офигенно много прерываний. Intel-овские igb (и другие «матёрые» карты) умеют собирать пакеты в свой буфер и отдавать процессору пачкой, за одно прерывание. В драйвере от Intel по умолчанию стоит автоматическое определение размера (в зависимости от нагрузки) — я так и оставляю.
5. offload-ы по вкусу, но внимательно смотреть на всякие софтовые (вроде GSO) — могут нервов испортить. Вообще, лучше все что можно аппаратное включать.
6. ring buffer. По умолчанию — 256, что очень мало. Ставить 4096.
7. И конечно же, пилить firewall. Присмотритесь — может, можно что-нибудь вынести в отдельные таблицы, а то и вообще сделать дерево (вроде hash filter)?

Информация

В рейтинге
Не участвует
Откуда
Ковель, Волынская обл., Украина
Дата рождения
Зарегистрирован
Активность