Перейти к содержимому
Калькуляторы

QWE

VIP
  • Публикации

    1251
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем QWE


  1. ок, установил модуль

    [root@testrouter src]# modinfo igb | grep -E "version|parm"

    version: 3.4.7

    srcversion: 84D0F70C7DF9FC65710D5E8

    vermagic: 2.6.32-220.7.1.el6.alex.rps.2.x86_64 SMP mod_unload modversions

    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: MDD:Malicious Driver Detection (0/1), default 1 = enabled. Only available when max_vfs is greater than 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:Disable or set latency for DMA Coalescing ((0=off, 1000-10000(msec), 250, 500 (usec)) (array of int)

    parm: LRO:Large Receive Offload (0,1), default 0=off (array of int)

    parm: debug:Debug level (0=none, ..., 16=all) (int)

    [root@testrouter src]#

     

    гружу с одним параметром

    modprobe igb RSS=8,8

    сдвоенных очередей на каждый интерфейс получилось по 8

    overruns ошибки исчезли.

    Проблема с тем что драйвер разгребает пакеты одной очередью остается

    тестирую программой iperf

    сервер клиент включен в интерфейс eth0 тестируемого сервера

    iperf -c 192.168.20.1 -i 5 --format k -u -l64 -b6200k -p 5002 -P 40 -t 1800

    сервер - сервер включен в интерфейс eth1 тестируемого сервера

    iperf -B 192.168.20.1 -u -s -i5 -p 5002

     

    при этом на eth0 тестируемого сервера влетает 483к пакетов в секунду

    далее идут непонятные мне цифры

    очередь (через которую пакеты прилетают) eth0-TxRx-6 генерит на каждое ядро 130/1с прерываний, а очередь (через которую пакеты улетают) eth1-TxRx-3 2200/1с на каждое ядро. На отправку прерываний больше почему то чем на прием!!!

    top

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

     

    13 root 20 0 0 0 0 R 12.3 0.0 3:49.33 ksoftirqd/2

    21 root 20 0 0 0 0 S 3.7 0.0 0:43.14 ksoftirqd/4

    25 root 20 0 0 0 0 S 3.7 0.0 1:15.39 ksoftirqd/5

    29 root 20 0 0 0 0 S 3.3 0.0 1:26.70 ksoftirqd/6

    33 root 20 0 0 0 0 S 3.0 0.0 0:57.72 ksoftirqd/7

    17 root 20 0 0 0 0 S 2.7 0.0 2:37.13 ksoftirqd/3

    9 root 20 0 0 0 0 S 1.7 0.0 1:13.25 ksoftirqd/1

    4 root 20 0 0 0 0 S 0.3 0.0 0:53.82 ksoftirqd/0

    стоит увеличить полосу с -b6200k до -b6500k как в топе залипает 100% загрузка одного ядра, т.е. 483к PPS предел для 8 ядерной системы с супер интеловыми сетевухами ((( это с модулем ipt_NETFLOW но без FV

    единственный положительный момент как уже писал - на интерфейсах отсутствуют какие либо ошибки

    че делать то?

     

    и еще заметил в отчете iperf много вот таких пакетов 49011 datagrams received out-of-order

     

    [ 31] Server Report:

    [ 31] 0.0-1344.0 sec 1012975 KBytes 6174 Kbits/sec 0.062 ms 96974/16304569 (0.59%)

    [ 31] 0.0-1344.0 sec 49011 datagrams received out-of-order

     

    выгрузил ipt_NETFLOW система стала прокачивать 575к PPS количество прерываний не увеличилось где то 20000/сек

     

    если добавить еще пакетов опять вылезает ksoftirqd

     

    perf top

    701.00 6.8% _spin_lock /usr/lib/debug/lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/vmlinux

    605.00 5.9% __alloc_skb /usr/lib/debug/lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/vmlinux

    568.00 5.5% igb_poll /lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/kernel/drivers/net/igb/igb.ko

    529.00 5.1% igb_xmit_frame_ring /lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/kernel/drivers/net/igb/igb.ko

    417.00 4.0% igb_tx_ctxtdesc /lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/kernel/drivers/net/igb/igb.ko

    342.00 3.3% ipt_do_table /lib/modules/2.6.32-220.7.1.el6.alex.rps.2.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko

     

    и при 575к PPS как то стали только 4 ядра процессоров выделяться по загрузке

  2. "PKGPATH не определен в параметрах ядра. Ессно, никто никуда не сможет грузиться. Смотрите конфиги ваши сислинукса..."

     

    [root@testrouter syslinux]# more syslinux.cfg

    DISPLAY syslinux.dpy

    TIMEOUT 2

    APPEND reboot=bios

    DEFAULT /syslinux/linux initrd=/initrd.lrp rw root=/dev/ram0 LEAFCFG=/dev/sda1:vfat

     

    Почему его сразу нельзя сконфигурить в полном объеме на этапе формирования файла tar.gz

    Интересно, получается что-то еще нужно руками делать?

    А есть полная пошаговая инструкция?

  3. Попробовал создать флешку по алгоритму OK-2004 см. пост выше.

     

    sudo dd if=/dev/zero of=/dev/sdb bs=10M

    sudo fdisk /dev/sdb ( n 1 (default) , t ( win fat32 lba ) a 1 ,w )

    sudo mkdosfs -F 32 -n leaf -v /dev/sdb1

    sudo dd conv=notrunc bs=440 count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sdb

    sudo syslinux /dev/sdb1

    sudo mount -t vfat -o rw,nosuid,nodev,quiet,shortname=mixed,uid=1000,gid=1000,umask=077,iocharset=utf8 /dev/sdb1 /home/ok/usbflash

    tar -zxpvf ..686...vga.tgz -C /home/ok/usbflash

     

    при загрузке мигает курсор (_) и все,

    причем повторное изготовление флешки по инструкции http://sourceforge.net/apps/mediawiki/leaf/index.php?title=Bering-uClibc_4.x_-_User_Guide_-_Installing_the_Disk_Image не помогает (((

    похоже убита флешка

  4. Сделал загрузочную флешку по этой инструкции

    http://sourceforge.net/apps/mediawiki/leaf/index.php?title=Bering-uClibc_4.x_-_User_Guide_-_Installing_the_Disk_Image

    ядро грузится но далее получаю ошибку - см скриншот.

    post-93795-006794400 1339767830_thumb.jpg

  5. Настроил таки сервер

    Ядро вот отсюда http://alex-at.ru/linux/centos-6-2-rps

    [root@testrouter ~]# uname -a

    Linux testrouter.mservice 2.6.32-220.7.1.el6.alex.rps.2.x86_64 #1 SMP Sat Mar 24 11:36:12 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux

    [root@testrouter ~]#

     

    Сетевая

    06:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

    06:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

     

    Драйвер по умолчанию который шел с ядром

     

    [root@testrouter ~]# ethtool -i eth0

    driver: igb

    version: 3.0.6-k

    firmware-version: 1.2-1

    bus-info: 0000:06:00.0

    [root@testrouter ~]#

     

    Драйвер грузится по умолчанию, хотя поиграться можно всего только одним параметром

    [root@testrouter src]# modinfo igb | grep parm

    parm: max_vfs:Maximum number of virtual functions to allocate per physical function (uint)

    [root@testrouter src]#

    хотя в исходниках более нового драйвера параметров для тюнинга очень много.

     

    Очереди создаются как надо. но во время тестов картина по рерываниям такая

     

    58: 0 0 0 1 0 0 0 0 PCI-MSI-edge eth1

    59: 4388 4368 4462 4469 4449 4370 4394 4409 PCI-MSI-edge eth1-TxRx-0

    60: 4434 4353 4377 4393 4449 4457 4355 4374 PCI-MSI-edge eth1-TxRx-1

    61: 4568 4573 4481 4502 4507 4513 4465 4560 PCI-MSI-edge eth1-TxRx-2

    62: 4377 4393 4352 4434 4356 4374 4457 4449 PCI-MSI-edge eth1-TxRx-3

    63: 4354 4379 4456 4449 4353 4430 4393 4378 PCI-MSI-edge eth1-TxRx-4

    64: 4354 4430 4395 4378 4456 4450 4379 4355 PCI-MSI-edge eth1-TxRx-5

    65: 2062948 2066143 2076223 2075504 2049662 2053214 2060639 2057563 PCI-MSI-edge eth1-TxRx-6

    66: 4384 4396 4445 4351 4363 4350 4439 4464 PCI-MSI-edge eth1-TxRx-7

     

    Все пакеты обрабатываются одной очередью eth1-TxRx-6 но равномерно размазываются по всем ядрам. Какой смысл тогда в таком количестве очередей или както по особенному грузить модуль сетевой карты? Или это глюки?

    Во время тестов в одну сторону 465k PPS на интерфейсе появились overruns:1002943

    [root@testrouter ~]# ifconfig eth0

    eth0 Link encap:Ethernet HWaddr 90:E2:BA:06:FF:50

    inet6 addr: fe80::92e2:baff:fe06:ff50/64 Scope:Link

    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

    RX packets:332723284 errors:0 dropped:0 overruns:1002943 frame:0

    TX packets:1306 errors:0 dropped:0 overruns:0 carrier:0

    collisions:0 txqueuelen:1000

    RX bytes:80117618310 (74.6 GiB) TX bytes:429633 (419.5 KiB)

    Memory:d8520000-d8540000

     

    [root@testrouter ~]#

     

    [root@testrouter ~]# ethtool -S eth0 | grep rx_queue_6

    rx_queue_6_packets: 332723161

    rx_queue_6_bytes: 80117611254

    rx_queue_6_drops: 1002943 совпадает с overruns:1002943

    rx_queue_6_csum_err: 0

    rx_queue_6_alloc_failed: 0

    [root@testrouter ~]#

    [root@testrouter ~]# ethtool -g eth0

    Ring parameters for eth0:

    Pre-set maximums:

    RX: 4096

    RX Mini: 0

    RX Jumbo: 0

    TX: 4096

    Current hardware settings:

    RX: 256

    RX Mini: 0

    RX Jumbo: 0

    TX: 256

     

    [root@testrouter ~]#

    [root@testrouter ~]# ethtool -c eth0

    Coalesce parameters for eth0:

    Adaptive RX: off TX: off

    stats-block-usecs: 0

    sample-interval: 0

    pkt-rate-low: 0

    pkt-rate-high: 0

     

    rx-usecs: 3

    rx-frames: 0

    rx-usecs-irq: 0

    rx-frames-irq: 0

     

    tx-usecs: 0

    tx-frames: 0

    tx-usecs-irq: 0

    tx-frames-irq: 0

     

    rx-usecs-low: 0

    rx-frame-low: 0

    tx-usecs-low: 0

    tx-frame-low: 0

     

    rx-usecs-high: 0

    rx-frame-high: 0

    tx-usecs-high: 0

    tx-frame-high: 0

     

    Нагрузка ядер по top во время тестов показывала нагрузку на SI 0,3-0,7% процы были совсем не нагружены.

    При нагрузке в 300к PPS на каждое ядро высыпалось по 700-800 прерываний в секунду т.е. 6000 (Но мог и ошибиться, по доке драйвер по умолчанию генерит 8000) прерываний при 300к PPS.

     

     

     

    Чем лечить?

  6. Делаете по 8 комбо очередей

    так ?

     

    eth0-txrx-0 cpu0-0

    eth0-txrx-1 cpu0-1

    eth0-txrx-2 cpu0-2

    eth0-txrx-3 cpu0-3

    eth0-txrx-4 cpu1-0

    eth0-txrx-5 cpu1-1

    eth0-txrx-6 cpu1-2

    eth0-txrx-7 cpu1-3

     

    eth1-txrx-0 cpu0-0

    eth1-txrx-1 cpu0-1

    eth1-txrx-2 cpu0-2

    eth1-txrx-3 cpu0-3

    eth1-txrx-4 cpu1-0

    eth1-txrx-5 cpu1-1

    eth1-txrx-6 cpu1-2

    eth1-txrx-7 cpu1-3

     

    а вместо Zebra bird установить можно на LEAF?

  7. собрал сервер на http://www.supermicro.com/products/motherboard/Xeon1333/5000P/X7DBR-8.cfm + Intel EXPI9402PT (на шине PCIe) чип Intel 82576, решаемые задачи BGP fv + ipt_netflow + будут VLANы

    планирую поставить CentOS6.2 (2.6.32) x86_64 + ipt_netflow под эту систему (на наг есть ссылка на репозиторий) + igb последний драйвер 3.4.7

     

    1. Насколько лучше с точки зрения производительности системы (маршрутизация, прерывания CPU), остаться на этой версии ядра или обновить его то до какой? Или перейти на другой дистр linux если лучше менять версию ядра?

    2. Насколько будет эффективнее поднять bonding (eth0+eth1) с точки зрения раходования прерываний CPU и маршрутизации? Есть ли в нем необходимость?

    3. В системе 8 ядер, как лучше распределить прерывания и сколько сделать очередей RX,TX от каждого интерфейса?

  8. подскажите подходящий дистр Linux для работы модуля ipt_netflow

    судя из описания ipt_netflow максимальная версия ядра может быть 2.6.37

    2011-01-25 ABC

     

    * ipt_NETFLOW.c: compile compatibility with 2.6.37 (ipt_*)

    * ipt_NETFLOW.c: compile compatibility with 2.6.36.3 (NIPQUAD)

     

    CentOS6.2 на сервер не ставиться (

  9. Хочу собрать бордер на БУ железке HP Proliant DL360G5 2 х Quad-Core Intel® Xeon® Processor E5320 (1.86 GHz 80 Watts, 1066 FSB) или HP ProLiant DL365 G5 2x Quad Core AMD 2.3GHz

     

    Встроенная сетевуха - 2 многофункциональных 1-портовых 1 Gb/s HP NC373i (на базе Broadcom 5708S) c поддержкой iSCSI Boot & Acceleration, TCP Offload Engine и RDMA

     

    На сайте broadcom http://www.broadcom.com/collateral/pb/5708S-PB08-R.pdf

     

    Performance-focused – optimized for throughput and CPU utilization

    • Adaptive interrupts

    • 2.5 Gigabit Ethernet

    • RSS reduces CPU utilization on multi-CPU systems.

    • MSI allows interrupt distribution in a multi-CPU host system.

    • PCI Express host interface allows a low-latency access to CPU and memory resources.

     

    В случае проблем с сетевой картой доустановить сетевуху Intel EXPI9402PT (на шине PCIe) чип Intel 82576 которая умеет:

     

    Intel® I/O Acceleration Technology (Intel® QuickData Technology, MSI-X, RSS, Direct Cache Access, checksum and segmentation offload, header splitting/replication, low latency interrupts), 16Rx/16Tx queues/port, jumbo frames, Intel® VT for Connectivity (Virtual Machine Device Queues (VMDq), Virtual Machine Direct Connect (VMDc - PCI-SIG SR-IOV based), Security (IPsec offload, LinkSec3), IEEE 1588 (time stamp)

     

    До какого значения pps и Мбит/с хватит такого сервера? Не уткнется эта платформа в частоту работы памяти (DDR2-667/533) ? Проц вроде на шине 1066

    Если у кого есть опыт сборки бордера на БУ железе буду благодарен за советы/рекомендации/мнения.

     

    PS

    Может несовсем по теме, но в этой ветке очень интересно.

  10. Задача такая.

    Необходимо максимально эффективно распределять полосу пропускания скажем 10 мбит/с между 20 пользователями.

    Например если 10 пользователей в данный момент не используют интернет то недоиспользованная ими полоса распределяется между остальными. Если все одинаково интенсивно используют интернет то всем гарантировано поровну. По сути нужен динамический шейпер как в циско только чтобы он мог перераспределять недозагруз одних другим.

     

    Есть ли подобное оборудование или софт в природе?

     

     

    Вашу проблему решает без проблем Cisco Sce 2020. Но железка за 10 000$ дороговата для 20 пользователей.

    Приобрел по рекомендации микротик 750 за 1700р. Пока на ней тренируюсь.

  11. Думаю что такой алгоритм будет дергать абонентов

     

    и каким образом будет выглядеть дерганье абонентов?

     

    фичи HTB используют "перестраивание" шейпера практически в реале и работают на уровне ядра. В принципе и скриптом можно часто дергать. да и вряд ли заметишь перестраивание если лазишь по сайтам.

    Теоретизированное размышление снимается.

  12. Ну поставьте систему мониторинга, сделайте тригеры на загрузку канала и портов, распишите, проверяйте канал к примеру раз в пару минут и динамически меняйте скорость по всем класам, в чем проблема то?

    писюк с zabbix на борту решает задачу как 2 пальца.

    ну скриптец сверху который дергает tc

    Думаю что такой алгоритм будет дергать абонентов, точнее вот такое не плавное перестраивание не желательно. То что будет перестраиваться это согласен.

  13. если у абонента нет трафика то на кой куй ему его зажимать? вы себя послушайте, что вы пишите...

     

    Написано было не так а вот так

     

    т.е. полностью до нуля зажимать абонентов ... нельзя, иначе невозможно будет определить это.

  14. Поставьте роутер за 900 рублей и посмотрите как он будет работать, а работать он будет именно так, как вы и написали в своём САМОМ ПЕРВОМ посте.

    Не, один юзер с торентом убъет весь канал. Конкурировать с ним будут другие клиенты с торентами.

     

    Задача абсолютно справедливости не решаема в принципе.

    Помимо того, что мир, в целом, несправедлив, определите, как вы будете считать, сколько клиентов online, кому гарантировать полосу, а кому нет?

     

    Но, какое-то подобие можно сделать, настроив на интерфейсе иерархический QoS и каждому пользователю гарантированую полосу.

    В этом случае, если есть сводобное место в полосе - трафика идет сколько требуется. Как образуется очередь - согласно настроенной полосе.

     

    Никто не собирается менять мир.

    Торренты,вирусы - вот это все и опасно если ничего не настроить.

     

    Чтобы определить клиент online или нет - просто, присутствует исходящий+входящий трафик. т.е. полностью до нуля зажимать абонентов (на исход в принципе не планировалось зажимать) нельзя иначе невозможно будет определить это. Гарантировать полосу нужно всем во время перегрузки. К примеру 10 Мбит/с между 20 абонентов - не ниже 512Кбит/с.

     

    А вот про это "Но, какое-то подобие можно сделать, настроив на интерфейсе иерархический QoS и каждому пользователю гарантированую полосу.

    В этом случае, если есть сводобное место в полосе - трафика идет сколько требуется. Как образуется очередь - согласно настроенной полосе." можно поподробнее ?

  15. Один шеёпер на 10 мегабит нужен и больше ничего. И будут это 10 мегабит делиться между всеми.

     

    как вы задачу ставите так вам её и помогают решать.

     

    Хорошо.

    Скорость 10Мбит - внешнего канала (внешний интерфейс)

    20 Абонентов - 20 Шейперов (шейпер - условное название алгоритма ограничения) на внутреннем интерфейсе.

    Есть ли некий объединяющий алгоритм работы группы шейперов для динамического изменения их параметров в зависимости от текущей загрузки внешнего интерфейса.

    Допустим 18 абонентов не используют интернет 5 мбит (или больше) можно отдать двум абонентам. Если появляется необходимость в интернете у тех кто не пользовал, то происходит опять перераспределение и т.д.

  16. Например если 10 пользователей в данный момент не используют интернет то недоиспользованная ими полоса распределяется между остальными. Если все одинаково интенсивно используют интернет то всем гарантировано поровну.

    И

    в режиме недозагруза полосы пропускания внешнего интернет канала изменять настройки шейперов

    Разные вещи.

    То что написано в первой моей цитате происходит автоматически без дополнительных фич.

     

    Вот именно. Это разные вещи для разных ситуаций. Можно руками мониторить утилизацию внешнего интерфейса и менять настройки шейпера для того и другого случая, а хотелось бы автоматически.

  17. Он уже умеет форвардить и натить

    Это к поставленному вопросу не имеет никакого отношения. динамический шейпер/полисер - вот суть вопроса.

    Есть ли железки которые могут в режиме недозагруза полосы пропускания внешнего интернет канала изменять настройки шейперов?

  18. Задача такая.

    Необходимо максимально эффективно распределять полосу пропускания скажем 10 мбит/с между 20 пользователями.

    Например если 10 пользователей в данный момент не используют интернет то недоиспользованная ими полоса распределяется между остальными. Если все одинаково интенсивно используют интернет то всем гарантировано поровну. По сути нужен динамический шейпер как в циско только чтобы он мог перераспределять недозагруз одних другим.

     

    Есть ли подобное оборудование или софт в природе?