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

FreeBSD 7.2 vs 8.0 Роутингшейпинг на новой BSD

Ктонить уже тестил свежий релиз фри?

 

И какие у кого сложились впечатления?

Share this post


Link to post
Share on other sites
Ктонить уже тестил свежий релиз фри?

 

И какие у кого сложились впечатления?

свежая вроде как 9ка

Share this post


Link to post
Share on other sites
свежая вроде как 9ка
Верните машину времени на LOR :)

 

Share this post


Link to post
Share on other sites

Во первых прочитайте UPDATING/ERRATA.

Во вторых 8.0 по слухам медленнее.

В третьих, в ней пока проблемы с драйверами igb(4).

 

Я пока на 7.2

Share this post


Link to post
Share on other sites

У меня с igb и на 7.2 не сложилось почему-то. Прерываний дофига - в среднем одно прерывание rx на 6 принятых пакетов и одно прерывание tx на 2 переданых судя по дебагу. Привычные [rt]x_int_delay как в em отсутствуют, курение исходников драйвера показало - регистры в *.h описаны, в if_igb.c не используются, ковыряние aim не помогло. А, sysctl при изменении на одном igb меняется на всех, хотя ненада оно, на разных интерфейсах разная нагрузка. Может у меня руки не оттуда растут конечно, но на em получалось 50% idle на каждом ядре, тут получилось 20%, хотя карта вроде грамотнее.

 

А, и после перехода на ipfw nat паники какие-то начались, пришлось natd вкрутить и еще 1 тазик кинуть, пойду к железной дороге положу руки нарельсы и буду ждать поезда.

Edited by make.kernel

Share this post


Link to post
Share on other sites
make.kernel, перейдите на pf (только натв придется держать для pptp подключений пользователей), что сразу руки то рубить?)

Share this post


Link to post
Share on other sites
make.kernel, перейдите на pf (только натв придется держать для pptp подключений пользователей)
Нат на брасах работает, по 30-40 кппс на машинку в принципе всеравно чем натить, натд сжирает до 30% ядра при пиковых нагрузках. Сетевушек там две, ядер четыре, шедулер разложил все достаточно корректно - 2 ядра карточки, 1 ядро нат, еще 1 гуляет про запас. Радиус, мпд и оспф особо процессор не грузят, а больше там ничего и нету.
что сразу руки то рубить?)
Работает-же у других igb и не занимает процессора в 2 раза больше чем em. Карточка грамотнее должна быть, да мне кажется драйвера глупее.

Share this post


Link to post
Share on other sites

стоит еще с RC1 8-я фря. Были проблемы с арпами(вроде запилилось). Работает...

Share this post


Link to post
Share on other sites
Работает-же у других igb и не занимает процессора в 2 раза больше чем em. Карточка грамотнее должна быть, да мне кажется драйвера глупее.
драйвера какие?

 

стоит еще с RC1 8-я фря. Были проблемы с арпами(вроде запилилось). Работает...
а сравнить с 7.2 можете?

Share this post


Link to post
Share on other sites
драйвера какие?

Пробовал стандартные из 7.2-RELEASE и последние с интела скачаные. Разницы не заметил, сейчас стоят интеловые, ночью опять на стандартные откачусь, машина в работе.

Share this post


Link to post
Share on other sites
драйвера какие?
Пробовал стандартные из 7.2-RELEASE и последние с интела скачаные. Разницы не заметил, сейчас стоят интеловые, ночью опять на стандартные откачусь, машина в работе.

стоят Intel® PRO/1000 Network Connection version - 1.7.3

разницы по загрузке процессора с em не заметил.

Share this post


Link to post
Share on other sites

У меня сейчас Intel® PRO/1000 Network Connection version - 1.7.4, попробую откатить. Спасибо.

Share this post


Link to post
Share on other sites
Работает-же у других igb и не занимает процессора в 2 раза больше чем em. Карточка грамотнее должна быть, да мне кажется драйвера глупее.
драйвера какие?

 

стоит еще с RC1 8-я фря. Были проблемы с арпами(вроде запилилось). Работает...
а сравнить с 7.2 можете?

Не могу. Если раньше гейтом была 6.3 с quagga(bgp/ospf),apache-ssl,bind9 под core2 duo e6550, то 8.0 занимается исключительно форвардингом (ospf) и кеширующий днс.

К тому же под 8.0 стоит четырехгоршковый процессор.

Share this post


Link to post
Share on other sites
стоят Intel® PRO/1000 Network Connection version - 1.7.3

разницы по загрузке процессора с em не заметил.

Кстати, можно посмотреть systat -vmstat и примерный pps через соответствующие карты. У меня сейчас получается 6-7 пакетов на прерывание rx и 2 пакета на прерывание tx - вот они-то и убивают процессор наглухо переключением контекстов. Дневное воскурение исходников драйверов показало интересную весч - tx прерывания не модерируются вообще.

В исходниках есть классная штука - то, что мне нужно

/*
* IGB_TIDV - Transmit Interrupt Delay Value
* Valid Range: 0-65535 (0=off)
* Default Value: 64
*   This value delays the generation of transmit interrupts in units of
*   1.024 microseconds. Transmit interrupt reduction can improve CPU
*   efficiency if properly tuned for specific network traffic. If the
*   system is reporting dropped transmits, this value may be set too high
*   causing the driver to run out of available transmit descriptors.
*/
#define IGB_TIDV                         64

/*
* IGB_TADV - Transmit Absolute Interrupt Delay Value
* Valid Range: 0-65535 (0=off)
* Default Value: 64
*   This value, in units of 1.024 microseconds, limits the delay in which a
*   transmit interrupt is generated. Useful only if IGB_TIDV is non-zero,
*   this value ensures that an interrupt is generated after the initial
*   packet is sent on the wire within the set amount of time.  Proper tuning,
*   along with IGB_TIDV, may improve traffic throughput in specific
*   network conditions.
*/
#define IGB_TADV                         64

/*
* IGB_RDTR - Receive Interrupt Delay Timer (Packet Timer)
* Valid Range: 0-65535 (0=off)
* Default Value: 0
*   This value delays the generation of receive interrupts in units of 1.024
*   microseconds.  Receive interrupt reduction can improve CPU efficiency if
*   properly tuned for specific network traffic. Increasing this value adds
*   extra latency to frame reception and can end up decreasing the throughput
*   of TCP traffic. If the system is reporting dropped receives, this value
*   may be set too high, causing the driver to run out of available receive
*   descriptors.
*
*   CAUTION: When setting IGB_RDTR to a value other than 0, adapters
*            may hang (stop transmitting) under certain network conditions.
*            If this occurs a WATCHDOG message is logged in the system
*            event log. In addition, the controller is automatically reset,
*            restoring the network connection. To eliminate the potential
*            for the hang ensure that IGB_RDTR is set to 0.
*/
#define IGB_RDTR                         0

/*
* Receive Interrupt Absolute Delay Timer (Not valid for 82542/82543/82544)
* Valid Range: 0-65535 (0=off)
* Default Value: 64
*   This value, in units of 1.024 microseconds, limits the delay in which a
*   receive interrupt is generated. Useful only if IGB_RDTR is non-zero,
*   this value ensures that an interrupt is generated after the initial
*   packet is received within the set amount of time.  Proper tuning,
*   along with IGB_RDTR, may improve traffic throughput in specific network
*   conditions.
*/
#define IGB_RADV                         64

 

Нифига нигде не используется.

Share this post


Link to post
Share on other sites
стоят Intel® PRO/1000 Network Connection version - 1.7.3

разницы по загрузке процессора с em не заметил.

Кстати, можно посмотреть systat -vmstat и примерный pps через соответствующие карты.

systat -vmstat

    3 users    Load  0.22  0.29  0.30                  25 ноя 12:28

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act   62992   11064   129516    14172  297500  count
All  122540   11064 1073921k    14172          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow    118k total
  1          25      434k    4   34 110k 1999             zfod        atkbd0 1
                                                          ozfod       fdc0 irq6
4.8%Sys  26.8%Intr  0.0%User  0.0%Nice 68.5%Idle        %ozfod       ata0 irq14
|    |    |    |    |    |    |    |    |    |    |       daefr       atapci1 17
==++++++++++++++                                          prcfr  1999 cpu0: time
                                           dtbuf          totfr  7576 igb0 256
Namei     Name-cache   Dir-cache     68860 desvn          react  2376 igb0 260
   Calls    hits   %    hits   %     59206 numvn          pdwak  2216 igb0 261
                                     17214 frevn          pdpgs  2091 igb0 262
                                                          intrn  1453 igb0 263
Disks  ad12  ad14   ar0                            241192 wire        igb0 264
KB/t   0.00  0.00  0.00                             53344 act    7309 igb1 265
tps       0     0     0                            410588 inact  1808 igb1 269
MB/s   0.00  0.00  0.00                               272 cache  1816 igb1 270
%busy     0     0     0                            297228 free   1036 igb1 271
                                                   113328 buf    2936 igb1 272
                                                                      igb1 273
                                                                14292 igb2 274
                                                                 6905 igb2 278
                                                                 6350 igb2 279
                                                                 6022 igb2 280
                                                                 6569 igb2 281
                                                                      igb2 282
                                                                19233 igb3 283
                                                                 5090 igb3 287
                                                                 4930 igb3 288
                                                                 5463 igb3 289
                                                                 4598 igb3 290
                                                                      igb3 291
                                                                 1999 cpu1: time
                                                                 1999 cpu2: time
                                                                 1999 cpu3: time

 

netstat -w1d -I igb2

            input         (igb2)           output
   packets  errs      bytes    packets  errs      bytes colls
     40848     0   33315237      30154     0   20140366     0
     41507     0   34943654      31054     0   19777425     0
     42163     0   35653992      31307     0   20364236     0
     42121     0   34459739      33383     0   22728012     0
     41101     0   33516983      30639     0   20050883     0

Share this post


Link to post
Share on other sites

 

Проц-то указывать кто будет ?

Share this post


Link to post
Share on other sites

А работает уже

ipfw add 300 nat tablearg ip from table\(3\) to any

?

Share this post


Link to post
Share on other sites
А работает уже

ipfw add 300 nat tablearg ip from table\(3\) to any

?

man ipfw:

The tablearg argument can be used with the following
     actions: nat, pipe, queue, divert, tee, netgraph, ngtee, fwd, skipto
     action parameters: tag, untag, rule options: limit, tagged.

Edited by Latik

Share this post


Link to post
Share on other sites
стоят Intel® PRO/1000 Network Connection version - 1.7.3

разницы по загрузке процессора с em не заметил.

Кстати, можно посмотреть systat -vmstat и примерный pps через соответствующие карты.

systat -vmstat

    3 users    Load  0.22  0.29  0.30                  25 ноя 12:28

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act   62992   11064   129516    14172  297500  count
All  122540   11064 1073921k    14172          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow    118k total
  1          25      434k    4   34 110k 1999             zfod        atkbd0 1
                                                          ozfod       fdc0 irq6
4.8%Sys  26.8%Intr  0.0%User  0.0%Nice 68.5%Idle        %ozfod       ata0 irq14
|    |    |    |    |    |    |    |    |    |    |       daefr       atapci1 17
==++++++++++++++                                          prcfr  1999 cpu0: time
                                           dtbuf          totfr  7576 igb0 256
Namei     Name-cache   Dir-cache     68860 desvn          react  2376 igb0 260
   Calls    hits   %    hits   %     59206 numvn          pdwak  2216 igb0 261
                                     17214 frevn          pdpgs  2091 igb0 262
                                                          intrn  1453 igb0 263
Disks  ad12  ad14   ar0                            241192 wire        igb0 264
KB/t   0.00  0.00  0.00                             53344 act    7309 igb1 265
tps       0     0     0                            410588 inact  1808 igb1 269
MB/s   0.00  0.00  0.00                               272 cache  1816 igb1 270
%busy     0     0     0                            297228 free   1036 igb1 271
                                                   113328 buf    2936 igb1 272
                                                                      igb1 273
                                                                14292 igb2 274
                                                                 6905 igb2 278
                                                                 6350 igb2 279
                                                                 6022 igb2 280
                                                                 6569 igb2 281
                                                                      igb2 282
                                                                19233 igb3 283
                                                                 5090 igb3 287
                                                                 4930 igb3 288
                                                                 5463 igb3 289
                                                                 4598 igb3 290
                                                                      igb3 291
                                                                 1999 cpu1: time
                                                                 1999 cpu2: time
                                                                 1999 cpu3: time

 

netstat -w1d -I igb2

            input         (igb2)           output
   packets  errs      bytes    packets  errs      bytes colls
     40848     0   33315237      30154     0   20140366     0
     41507     0   34943654      31054     0   19777425     0
     42163     0   35653992      31307     0   20364236     0
     42121     0   34459739      33383     0   22728012     0
     41101     0   33516983      30639     0   20050883     0

Ну картина примерно такая-же как у меня была, на 40 кппс входа и 30 кппс выхода (итого 70 кппс на карточке) получается 14292+ 6905+6350+6022+6569 итого 40к прерываний, чуть меньше 2-х пакетов на одно. Это на самом деле очень много, попробуйте вот такую штуку

border# cat /boot/loader.conf | grep igb
if_igb_load="YES"
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.num_queues=1   #это мне просто больше потоков не нужно
hw.igb.enable_aim=1
hw.igb.low_latency=1000
hw.igb.ave_latency=2000
hw.igb.bulk_latency=4000
hw.igb.rx_process_limit=100
hw.igb.fc_setting=0
border#

reboot соответственно нужен. Есть аналогичные sysctl (dev.igb.*) - на полет нифига не влияют, 3 дня гулял по граблям пока тазик не ребутнул, красиво. Сейчас на

border# netstat -w1d -I igb2
            input         (igb2)           output
   packets  errs      bytes    packets  errs      bytes colls
     60665     0   32478568      61240     0   50576969     0
     58278     0   30754109      59666     0   49389671     0
     61981     0   32588650      62357     0   51941264     0
     60599     0   32044044      61389     0   50859404     0
     60537     0   31454928      61544     0   51254218     0
     58435     0   30654670      59283     0   49595065     0

2k tx + 2k rx = 4к прерываний за секунду от карточки, это по 30 пакетов за прерывание.

 

 

Share this post


Link to post
Share on other sites
А работает уже

ipfw add 300 nat tablearg ip from table\(3\) to any

?

man ipfw:

The tablearg argument can be used with the following
     actions: nat, pipe, queue, divert, tee, netgraph, ngtee, fwd, skipto
     action parameters: tag, untag, rule options: limit, tagged.

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

Share this post


Link to post
Share on other sites
Ну картина примерно такая-же как у меня была, на 40 кппс входа и 30 кппс выхода (итого 70 кппс на карточке) получается 14292+ 6905+6350+6022+6569 итого 40к прерываний, чуть меньше 2-х пакетов на одно. Это на самом деле очень много, попробуйте вот такую штуку

border# cat /boot/loader.conf | grep igb
if_igb_load="YES"
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.num_queues=1   #это мне просто больше потоков не нужно
hw.igb.enable_aim=1
hw.igb.low_latency=1000
hw.igb.ave_latency=2000
hw.igb.bulk_latency=4000
hw.igb.rx_process_limit=100
hw.igb.fc_setting=0
border#

reboot соответственно нужен. Есть аналогичные sysctl (dev.igb.*) - на полет нифига не влияют, 3 дня гулял по граблям пока тазик не ребутнул, красиво. Сейчас на

border# netstat -w1d -I igb2
            input         (igb2)           output
   packets  errs      bytes    packets  errs      bytes colls
     60665     0   32478568      61240     0   50576969     0
     58278     0   30754109      59666     0   49389671     0
     61981     0   32588650      62357     0   51941264     0
     60599     0   32044044      61389     0   50859404     0
     60537     0   31454928      61544     0   51254218     0
     58435     0   30654670      59283     0   49595065     0

2k tx + 2k rx = 4к прерываний за секунду от карточки, это по 30 пакетов за прерывание.

спасибо - как-нибудь попробую. сейчас ребутить жалко, да и процессор далёк от перегрузов

Share this post


Link to post
Share on other sites
Нат на брасах работает, по 30-40 кппс на машинку в принципе всеравно чем натить, натд сжирает до 30% ядра при пиковых нагрузках. Сетевушек там две, ядер четыре, шедулер разложил все достаточно корректно - 2 ядра карточки, 1 ядро нат, еще 1 гуляет про запас. Радиус, мпд и оспф особо процессор не грузят, а больше там ничего и нету.

А подскажыте пожалуйста как так сделать - "шедулер разложить"?

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