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

Софтроутер упирается в 700мбит

Здравствуйте. Сломал уже всю свою голову. Проблема следующая:

Имеется софтроутер DELL PowerEdge 2850 - два процессора Xeon 3ГГц (видимо какйто Xeon DP):

$ cat /proc/cpuinfo

 

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Xeon(TM) CPU 3.00GHz
stepping        : 1
microcode       : 0xd
cpu MHz         : 2992.912
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : 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 ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips        : 5985.82
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Xeon(TM) CPU 3.00GHz
stepping        : 1
microcode       : 0xd
cpu MHz         : 2992.912
cache size      : 1024 KB
physical id     : 3
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 6
initial apicid  : 6
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : 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 ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips        : 5985.25
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Xeon(TM) CPU 3.00GHz
stepping        : 1
microcode       : 0xd
cpu MHz         : 2992.912
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : 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 ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips        : 5985.23
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Xeon(TM) CPU 3.00GHz
stepping        : 1
microcode       : 0xd
cpu MHz         : 2992.912
cache size      : 1024 KB
physical id     : 3
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : 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 ht tm pbe syscall nx lm constant_tsc pebs bts nopl pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips        : 5985.24
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

 

 

Установлена сетевая карта Intel E1G42ET (чип 82576). Установлена в слот PCIe 1.0 4x. Драйвера igb 4.1.2. Загружаю с параметрами RSS=4,4 QueuePairs=0,0 InterruptThrottleRate=3,3.

Прерывания разбросаны по ядрам:

 

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:        120          0          0       4128   IO-APIC-edge      timer
  1:          0          0          0          2   IO-APIC-edge      i8042
  6:          0          0          0          3   IO-APIC-edge      floppy
  8:          0          0          0         66   IO-APIC-edge      rtc0
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          0          0          0          4   IO-APIC-edge      i8042
 14:          0          0          0    1209157   IO-APIC-edge      ata_piix
 15:          0          0          0          0   IO-APIC-edge      ata_piix
 16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb2
 18:          0          0          0      47136   IO-APIC-fasteoi   megaraid, uhci_hcd:usb4, radeon
 19:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
 23:          0          0          0         23   IO-APIC-fasteoi   ehci_hcd:usb1
104:          0          0          0          3   PCI-MSI-edge      eth2
105: 1600766068          0          0          2   PCI-MSI-edge      eth2-rx-0
106: 1598505601          0          0          2   PCI-MSI-edge      eth2-rx-1
107:          0 1602946548          0          2   PCI-MSI-edge      eth2-rx-2
108:          0 1603755269          0          2   PCI-MSI-edge      eth2-rx-3
109:          0          0  677569539          2   PCI-MSI-edge      eth2-tx-0
110:          0          0     619138          2   PCI-MSI-edge      eth2-tx-1
111:          0          0          0    3552617   PCI-MSI-edge      eth2-tx-2
112:          0          0          0    1408476   PCI-MSI-edge      eth2-tx-3
113:          0          0          0          5   PCI-MSI-edge      eth3
114:          0          0 2558838922       3627   PCI-MSI-edge      eth3-rx-0
115:          0          0 2610848755       3599   PCI-MSI-edge      eth3-rx-1
116:          0          0          0 2731687201   PCI-MSI-edge      eth3-rx-2
117:          0          0          0 2774769446   PCI-MSI-edge      eth3-rx-3
118: 1946839043          0          0         31   PCI-MSI-edge      eth3-tx-0
119: 1942826506          0          0          7   PCI-MSI-edge      eth3-tx-1
120:          0 1947117074          0          7   PCI-MSI-edge      eth3-tx-2
121:          0 1944459435          0         14   PCI-MSI-edge      eth3-tx-3
NMI:          0          0          0          0   Non-maskable interrupts
LOC: 1014479796 1071599820  728702880  970720650   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0   Performance monitoring interrupts
IWI:          0          0          0          0   IRQ work interrupts
RES:    5243255    4740412    2102288    3381303   Rescheduling interrupts
CAL:      25490         64         61         57   Function call interrupts
TLB:     380616     257022     320910     258865   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:       4127       4127       4127       4127   Machine check polls
ERR:          0
MIS:          0

 

 

На машине 3 влана от аплинка, quagga (bgp и rip), iptables 30 правил. Сервер работает только как маршрутизатор.

 

В ЧНН наблюдается следующая картина: трафик около 700/300, 80/70 kpps на каждом интерфейсе и больше не растет. При этом скорость у всех клиентов падает, пакеты теряются, к самому маршрутизатору в том числе.

Логи молчат.

Нагрузка в это время:

$ mpstat -P ALL 1
09:03:48 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
09:03:49 PM  all    0.24    0.00    0.24    0.00    0.00   57.25    0.00    0.00   42.27
09:03:49 PM    0    0.00    0.00    0.00    0.00    0.00   62.75    0.00    0.00   37.25
09:03:49 PM    1    0.00    0.00    0.00    0.00    0.00   57.55    0.00    0.00   42.45
09:03:49 PM    2    0.00    0.00    0.00    0.00    0.00   64.76    0.00    0.00   35.24
09:03:49 PM    3    0.00    0.00    0.00    0.00    0.00   45.36    0.00    0.00   54.64

На интерфейсе, который смотрит на провайдера:

 

# ethtool -S eth2
NIC statistics:
    rx_packets: 53929184742
    tx_packets: 43409132457
    rx_bytes: 55814789916919
    tx_bytes: 22978630617945
    rx_broadcast: 1298284
    tx_broadcast: 35441
    rx_multicast: 33036
    tx_multicast: 24
    multicast: 33036
    collisions: 0
    rx_crc_errors: 7
    rx_no_buffer_count: 1508
    rx_missed_errors: 627
    tx_aborted_errors: 0
    tx_carrier_errors: 0
    tx_window_errors: 0
    tx_abort_late_coll: 0
    tx_deferred_ok: 0
    tx_single_coll_ok: 0
    tx_multi_coll_ok: 0
    tx_timeout_count: 1
    rx_long_length_errors: 0
    rx_short_length_errors: 0
    rx_align_errors: 0
    tx_tcp_seg_good: 6306
    tx_tcp_seg_failed: 0
    rx_flow_control_xon: 0
    rx_flow_control_xoff: 0
    tx_flow_control_xon: 0
    tx_flow_control_xoff: 0
    rx_long_byte_count: 55814789916919
    tx_dma_out_of_sync: 0
    lro_aggregated: 0
    lro_flushed: 0
    lro_recycled: 0
    tx_smbus: 0
    rx_smbus: 0
    dropped_smbus: 0
    os2bmc_rx_by_bmc: 0
    os2bmc_tx_by_bmc: 0
    os2bmc_tx_by_host: 0
    os2bmc_rx_by_host: 0
    rx_errors: 13
    tx_errors: 0
    tx_dropped: 0
    rx_length_errors: 0
    rx_over_errors: 0
    rx_frame_errors: 0
    rx_fifo_errors: 627
    tx_fifo_errors: 0
    tx_heartbeat_errors: 0
    tx_queue_0_packets: 43406114559
    tx_queue_0_bytes: 22695304717868
    tx_queue_0_restart: 33024
    tx_queue_1_packets: 119
    tx_queue_1_bytes: 10312
    tx_queue_1_restart: 0
    tx_queue_2_packets: 2337558
    tx_queue_2_bytes: 159639942
    tx_queue_2_restart: 0
    tx_queue_3_packets: 680995
    tx_queue_3_bytes: 33577773
    tx_queue_3_restart: 0
    rx_queue_0_packets: 13590391566
    rx_queue_0_bytes: 14013185737677
    rx_queue_0_drops: 0
    rx_queue_0_csum_err: 74460
    rx_queue_0_alloc_failed: 0
    rx_queue_1_packets: 13542398942
    rx_queue_1_bytes: 13894504493092
    rx_queue_1_drops: 0
    rx_queue_1_csum_err: 109333
    rx_queue_1_alloc_failed: 0
    rx_queue_2_packets: 13389729171
    rx_queue_2_bytes: 13786750657364
    rx_queue_2_drops: 0
    rx_queue_2_csum_err: 131861
    rx_queue_2_alloc_failed: 0
    rx_queue_3_packets: 13406668469
    rx_queue_3_bytes: 13795885534998
    rx_queue_3_drops: 0
    rx_queue_3_csum_err: 95279
    rx_queue_3_alloc_failed: 0

 

На интерфейсе, который смотрит в мою сеть:

 

# ethtool -S eth3
NIC statistics:
    rx_packets: 43455178419
    tx_packets: 53389898538
    rx_bytes: 22915061515985
    tx_bytes: 55604885931666
    rx_broadcast: 12274
    tx_broadcast: 1000785
    rx_multicast: 83090
    tx_multicast: 28
    multicast: 83090
    collisions: 0
    rx_crc_errors: 4
    rx_no_buffer_count: 0
    rx_missed_errors: 0
    tx_aborted_errors: 0
    tx_carrier_errors: 0
    tx_window_errors: 0
    tx_abort_late_coll: 0
    tx_deferred_ok: 64040
    tx_single_coll_ok: 0
    tx_multi_coll_ok: 0
    tx_timeout_count: 2
    rx_long_length_errors: 0
    rx_short_length_errors: 0
    rx_align_errors: 0
    tx_tcp_seg_good: 636461
    tx_tcp_seg_failed: 0
    rx_flow_control_xon: 431204
    rx_flow_control_xoff: 440935
    tx_flow_control_xon: 0
    tx_flow_control_xoff: 0
    rx_long_byte_count: 22915061515985
    tx_dma_out_of_sync: 0
    lro_aggregated: 0
    lro_flushed: 0
    lro_recycled: 0
    tx_smbus: 0
    rx_smbus: 0
    dropped_smbus: 0
    os2bmc_rx_by_bmc: 0
    os2bmc_tx_by_bmc: 0
    os2bmc_tx_by_host: 0
    os2bmc_rx_by_host: 0
    rx_errors: 8
    tx_errors: 0
    tx_dropped: 0
    rx_length_errors: 0
    rx_over_errors: 0
    rx_frame_errors: 0
    rx_fifo_errors: 0
    tx_fifo_errors: 0
    tx_heartbeat_errors: 0
    tx_queue_0_packets: 13461284416
    tx_queue_0_bytes: 13986281357541
    tx_queue_0_restart: 585734
    tx_queue_1_packets: 13404202361
    tx_queue_1_bytes: 13866460645095
    tx_queue_1_restart: 552272
    tx_queue_2_packets: 13252466482
    tx_queue_2_bytes: 13757757852767
    tx_queue_2_restart: 627568
    tx_queue_3_packets: 13271946741
    tx_queue_3_bytes: 13765966418884
    tx_queue_3_restart: 566809
    rx_queue_0_packets: 10757725998
    rx_queue_0_bytes: 5656835241021
    rx_queue_0_drops: 0
    rx_queue_0_csum_err: 44038
    rx_queue_0_alloc_failed: 0
    rx_queue_1_packets: 10896564383
    rx_queue_1_bytes: 5698996322714
    rx_queue_1_drops: 0
    rx_queue_1_csum_err: 47003
    rx_queue_1_alloc_failed: 0
    rx_queue_2_packets: 10847754235
    rx_queue_2_bytes: 5656266739575
    rx_queue_2_drops: 0
    rx_queue_2_csum_err: 44389
    rx_queue_2_alloc_failed: 0
    rx_queue_3_packets: 10954187852
    rx_queue_3_bytes: 5729195897628
    rx_queue_3_drops: 0
    rx_queue_3_csum_err: 44763
    rx_queue_3_alloc_failed: 0

 

 

Подскажите, куда копать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сервер древний как говно мамонта, больше он при всем желании не осилит. Он вероятно упирается в pps, больше пакетов через pentium4 с ddr2 не пропихнуть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сервер древний как говно мамонта, больше он при всем желании не осилит. Он вероятно упирается в pps, больше пакетов через pentium4 с ddr2 не пропихнуть.

Спасибо. Были иногда такие предположения, но хотелось получить комментарий опытных людей.

Буду мучить начальника. К тому же их у нас три ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну где uname -a , ethtool -g eth2 и прочее? правила iptables и sysctl -a | grep conntrack

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

rx_no_buffer_count: 1508 - нужно увеличить ring buffer, хотя цифра небольшая не ней проблема.

А conntrack отключен? Если нет, то отключение поможет прожевать честный гигабит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну где uname -a , ethtool -g eth2 и прочее? правила iptables и sysctl -a | grep conntrack

?

 

uname -a
Linux router 3.2.29 #2 SMP Mon Sep 17 14:19:22 CDT 2012 x86_64 Intel(R) Xeon(TM) CPU 3.00GHz GenuineIntel GNU/Linux

rx_no_buffer_count не растет.

ethtool -g eth2 (на eth3 аналогично)
Ring parameters for eth2:
Pre-set maximums:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096
Current hardware settings:
RX:		2048
RX Mini:	0
RX Jumbo:	0
TX:		2048

 

sysctl -a|grep conntrack
error: permission denied on key 'vm.compact_memory'
error: permission denied on key 'net.ipv4.route.flush'
net.netfilter.nf_conntrack_generic_timeout = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 120
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_count = 103803
net.netfilter.nf_conntrack_buckets = 1048576
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_expect_max = 256
net.ipv4.netfilter.ip_conntrack_generic_timeout = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300
net.ipv4.netfilter.ip_conntrack_tcp_loose = 1
net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0
net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3
net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30
net.ipv4.netfilter.ip_conntrack_max = 1048576
net.ipv4.netfilter.ip_conntrack_count = 103720
net.ipv4.netfilter.ip_conntrack_buckets = 1048576
net.ipv4.netfilter.ip_conntrack_checksum = 1
net.ipv4.netfilter.ip_conntrack_log_invalid = 0
net.nf_conntrack_max = 1048576
error: permission denied on key 'net.ipv6.route.flush'

 

А conntrack отключен? Если нет, то отключение поможет прожевать честный гигабит.

попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А conntrack отключен? Если нет, то отключение поможет прожевать честный гигабит.

Если NATа нет, то отключение этого ничего не даст, кроме проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если NATа нет, то отключение этого ничего не даст, кроме проблем.

 

какого рода проблемы? просто нужно понимать, что подгруженный одним единственным стейтфулл правилом модуль ip_conntrack начинает трекать все подряд, поэтому нужно прописывать NOTRACK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

replicant

Дает его отключение эффект, дает. И единственная 'проблема' - невозможность использовать модули типа state, так их лучше в любом случае не использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

replicant

Дает его отключение эффект, дает. И единственная 'проблема' - невозможность использовать модули типа state, так их лучше в любом случае не использовать.

Дело не в этом. У него cpu idle достаточный, чтобы все работало нормально и без потерь (сервер должен быть работоспособен даже при 90% загрузке CPU и должен пропускать трафик без задержек), а не работает по другой причине.

 

Думается, что когда топикстартер покажет правила iptables (требуется оценить масштаб бедствий) и загрузит модуль вместо

RSS=4,4 QueuePairs=0,0 InterruptThrottleRate=3,3

хотя бы с комбинированными очередями по одной очереди на одно ядро CPU (сейчас там просто невразумительный зоопарк и масса лишней работы для CPU) и без ITR=3,3, а скажем с 10000-20000, тогда можно судить об изменениях.

 

На подобных серверах пропихивали больше гигабита при простом форвардинге (в данном случае тоже тупой форвард) без всяких проблем еще несколько лет назад, а тут даже до гигабита не добирает. Дело не в CPU и не в conntrack и тем более не в ddr2 (это уже вообще смешно), хотя conntrack_count конечно великоват, но дело не в нем.

 

Когда в 2001-2004 годах собирали у себя маршрутизаторы на каких-то Celeron/Pentium III и даже в то время проброс трафика на Realtek 8169 (вроде такая карточка была помимо 3Com и Broadcom) достигал 400-500 Мбит/с, а тут два двухголовых Xeon... :)

-------------------------------------

 

Задачка про conntrack для знатоков:

 

iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 4820M packets, 377G bytes)
pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 47M packets, 6509M bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 2068 packets, 140K bytes)
pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 4750M packets, 370G bytes)
pkts bytes target     prot opt in     out     source               destination

 

iptables -nvL -t mangle
Chain PREROUTING (policy ACCEPT 3915G packets, 3052T bytes)
pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 244M packets, 59G bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 3914G packets, 3052T bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 338M packets, 33G bytes)
pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 3914G packets, 3052T bytes)
pkts bytes target     prot opt in     out     source               destination

 

 iptables -nvL -t raw
Chain PREROUTING (policy ACCEPT 3915G packets, 3052T bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 338M packets, 33G bytes)
pkts bytes target     prot opt in     out     source               destination

 

iptables -nvL -t filter
Chain INPUT (policy ACCEPT 28M packets, 3249M bytes)
pkts bytes target     prot opt in     out     source               destination
11671 1252K SSH        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:ХХХХ

Chain FORWARD (policy ACCEPT 797G packets, 617T bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 68M packets, 6049M bytes)
pkts bytes target     prot opt in     out     source               destination

Chain SSH (1 references)
pkts bytes target     prot opt in     out     source               destination
3263  279K ACCEPT     all  --  *      *       192.168.ХХХ        0.0.0.0/0
6303  807K ACCEPT     all  --  *      *       192.168.ХХХ        0.0.0.0/0
1249  100K ACCEPT     all  --  *      *       192.168.ХХХ        0.0.0.0/0
 856 65768 ACCEPT     all  --  *      *       192.168.ХХХ        0.0.0.0/0
   0     0 DROP       all  --  *      *       0.0.0.0/0          0.0.0.0/0

 

sysctl -a | grep conntrack_count

net.netfilter.nf_conntrack_count = 18614

 

Incoming:


                    ....    . ..... . .      ..   .   Curr: 105.45 MByte/s
                    ######|#############|###########  Avg: 107.11 MByte/s
                    ################################  Min: 98.83 MByte/s
                    ################################  Max: 117.48 MByte/s
                    ################################  Ttl: 1848418.88 GByte
Outgoing:


                                                      Curr: 44.16 MByte/s
                                                      Avg: 45.02 MByte/s
                                                      Min: 40.04 MByte/s
                    .||.|||||#||||||||||||||||...|||  Max: 52.68 MByte/s
                    ################################  Ttl: 1020552.56 GByte

 

Сервер работает маршрутизатором, пропускает через себя трафик пачки vlan и маршрутизирует три с половиной десятка подсетей /24.

Нагрузка не превышает 5-7% CPU si. В пиковые моменты трафик более 2 Гбит/с в одну сторону и около 1 Гбит/с в другую.

Кобминация Intel Core Quad 9400 + DDR2 + Intel 82576 4-х портовая в bond.

/sbin/modprobe igb IntMode=2,2,2,2 InterruptThrottleRate=30000,30000,30000,30000 RSS=1,1,1,1

 

Что здесь не так и почему?

Изменено пользователем replicant

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Правила iptables. eth2 смотрит на провайдера, eth3 - ко мне в сеть. 194.xxx.xxx.0/24 - моя сеть

# Generated by iptables-save v1.4.14 on Fri Apr  5 11:16:36 2013
*raw
:PREROUTING ACCEPT [10968591:9816437007]
:OUTPUT ACCEPT [13059:2108130]
-A PREROUTING -j NOTRACK
COMMIT
# Completed on Fri Apr  5 11:16:36 2013
# Generated by iptables-save v1.4.14 on Fri Apr  5 11:16:36 2013
*nat
:PREROUTING ACCEPT [99665:7719305]
:INPUT ACCEPT [364:21962]
:OUTPUT ACCEPT [1751:91472]
:POSTROUTING ACCEPT [100706:7764918]
COMMIT
# Completed on Fri Apr  5 11:16:36 2013
# Generated by iptables-save v1.4.14 on Fri Apr  5 11:16:36 2013
*mangle
:PREROUTING ACCEPT [13361346:11930391120]
:INPUT ACCEPT [17470:8049437]
:FORWARD ACCEPT [13343785:11922333340]
:OUTPUT ACCEPT [15090:2234572]
:POSTROUTING ACCEPT [13346791:11923103654]
COMMIT
# Completed on Fri Apr  5 11:16:36 2013
# Generated by iptables-save v1.4.14 on Fri Apr  5 11:16:36 2013
*filter
:INPUT DROP [376:47372]
:FORWARD DROP [11324:524626]
:OUTPUT ACCEPT [14921:2224594]
-A INPUT -p tcp -m tcp --dport 179 -j ACCEPT
-A INPUT -p udp -m udp --dport 520 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth3 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth3 -p tcp -m tcp --dport 10050 -j ACCEPT
-A INPUT -i eth3 -p udp -m udp --dport 10050 -j ACCEPT
-A FORWARD -s 194.xxx.xxx.0/24 -o eth2.61 -j ACCEPT
-A FORWARD -d 194.xxx.xxx.0/24 -i eth2.61 -j ACCEPT
-A FORWARD -s 194.xxx.xxx.0/24 -o eth2.64 -j ACCEPT
-A FORWARD -d 194.xxx.xxx.0/24 -i eth2.64 -j ACCEPT
-A FORWARD -s 194.xxx.xxx.0/24 -o eth2.205 -j ACCEPT
-A FORWARD -d 194.xxx.xxx.0/24 -i eth2.205 -j ACCEPT
COMMIT
# Completed on Fri Apr  5 11:16:36 2013

 

Драйвер теперь подгружаю с такими опциями: RSS=2,2 QueuePairs=1,1 InterruptThrottleRate=10000,10000

Прерывания раскидал по 1 на ядро. Кстати, процессоры не двухголовые.

Отключение conntrack снизил нагрузку на ~10% на каждое ядро.

Сегодня отпишусь о результатах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ситуация не изменилась. Хотя нагрузка на процессор меньше.

08:06:17 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
08:06:18 PM  all    0.00    0.00    0.24    0.00    0.00   40.34    0.00    0.00   59.41
08:06:18 PM    0    0.00    0.00    0.94    0.00    0.00   44.34    0.00    0.00   54.72
08:06:18 PM    1    0.00    0.00    0.00    0.00    0.00   44.86    0.00    0.00   55.14
08:06:18 PM    2    0.00    0.00    0.00    0.00    0.00   36.73    0.00    0.00   63.27
08:06:18 PM    3    0.00    0.00    0.00    0.00    0.00   35.71    0.00    0.00   64.29

График подозрительно крутится около 1 Гбит/с суммарного трафика.

post-66313-009616800 1365184383_thumb.jpg

Изменено пользователем zarguni

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ситуация не изменилась. Хотя нагрузка на процессор меньше.

График подозрительно крутится около 1 Гбит/с суммарного трафика.

Нормально изменилась ситуация, если нагрузка хоть немного упала.

Трафика походу просто больше нет, чтобы загрузить машинку больше.

Важно чтобы тормоза с транзитным трафиком исчезли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если у вас там еще и HT включен - тогда как раз никаких чудес, реальная загрузка каждого CPU ровно 100%, а не 50 как система говорит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Апгрейд сервера. Собрать можно за 1000-1300$ на corei3 i5, он такой трафик как семечки прожуёт.

Всё равно по pps-у почти на пределе работает, и HT вырубить, как уже выше не раз писали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Научите пожалуйста, как вы определяете что pps на пределе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Научите пожалуйста

При включёнм HT, оба "полуядра" одного проца softirq 44.34%+44.86%, второго 36+35.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А conntrack отключен? Если нет, то отключение поможет прожевать честный гигабит.

Если NATа нет, то отключение этого ничего не даст, кроме проблем.

 

Простите, а есть ли смысл сделать rmmod nf_conntrack на тазике, где есть и простой роутинг и НАТ ?

На что повлияет, слышал возможны проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.