Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Active flows -> maxflows #8

Closed
hotid opened this issue Mar 26, 2014 · 163 comments
Closed

Active flows -> maxflows #8

hotid opened this issue Mar 26, 2014 · 163 comments
Assignees

Comments

@hotid
Copy link

hotid commented Mar 26, 2014

Возникла проблема — при включении сбора netflow с ядром 3.12-0.bpo.1-amd64 (debian) наблюдаем странную картину — количество активных потоков быстро доходит до значения Maxflows (независимо от того что прописываем в Maxflows - если 2млн, то будет около 2млн active flows, если 5 - то около 5... и hashsize), при этом все ядра CPU загружаются на 100%.

Без включения модуля загрузка сервера около 45-55%.
Пробовал собирать gcc-4.6 и 4.7, версию из гита и пропатченую под 3.12 ядро версию 1.8 sf.net — поведение одинаковое.

filename:       /lib/modules/3.12-0.bpo.1-amd64/extra/ipt_NETFLOW.ko
alias:          ip6t_NETFLOW
version:        v1.8-88-g3d95a40
description:    iptables NETFLOW target module
author:         <abc@telekom.ru>
license:        GPL
srcversion:     BB81820A4B072ABC44F32FF
depends:        x_tables,nf_conntrack
vermagic:       3.12-0.bpo.1-amd64 SMP mod_unload modversions
parm:           destination:export destination ipaddress:port (charp)
parm:           inactive_timeout:inactive flows timeout in seconds (int)
parm:           active_timeout:active flows timeout in seconds (int)
parm:           debug:debug verbosity level (int)
parm:           sndbuf:udp socket SNDBUF size (int)
parm:           protocol:netflow protocol version (5, 9, 10) (int)
parm:           refresh_rate:NetFlow v9/IPFIX refresh rate (packets) (uint)
parm:           timeout_rate:NetFlow v9/IPFIX timeout rate (minutes) (uint)
parm:           natevents:send NAT Events (int)
parm:           hashsize:hash table size (int)
parm:           maxflows:maximum number of flows (int)
parm:           aggregation:aggregation ruleset (charp)

Через пару минут после включения сбора netflow:

cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 2097152 (peak 2097154 reached 0d0h0m ago), mem 344064K, worker delay 1/250.
Hash: size 2097152 (mem 16384K), metric 1.80 [1.38, 1.06, 1.00]. MemTraf: 59360950 pkt, 43921086 K (pdu 47, 16777), Out 21793 pkt, 5661 K.
Rate: 8319109422 bits/sec, 1330298 packets/sec; Avg 1 min: 6033292747 bps, 997744 pps; 5 min: 1889587881 bps, 313228 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 29079737 57272837 2898410 [1.48],    0    0    0 788547, sock:    846 0 35, 1209 K, traffic: 59382696, 42897 MB, drop: 788547, 319615 K
cpu0  stat: 2406612 4955822 199760 [1.46],    0    0    0 61611, sock:      0 0 35, 0 K, traffic: 5093970, 4580 MB, drop: 61611, 42631 K
cpu1  stat: 2454484 4977685 201735 [1.47],    0    0    0 63587, sock:      0 0 0, 0 K, traffic: 5115833, 4571 MB, drop: 63587, 45853 K
cpu2  stat: 2422489 4989779 193239 [1.46],    0    0    0 61672, sock:      0 0 0, 0 K, traffic: 5121346, 4473 MB, drop: 61672, 43263 K
cpu3  stat: 2500132 4978297 195012 [1.48],    0    0    0 63033, sock:      0 0 0, 0 K, traffic: 5110276, 4603 MB, drop: 63033, 45550 K
cpu4  stat: 2500892 4993194 195650 [1.48],    0    0    0 63398, sock:      0 0 0, 0 K, traffic: 5125446, 4433 MB, drop: 63398, 45671 K
cpu5  stat: 2356626 4989722 197091 [1.45],    0    0    0 63508, sock:      0 0 0, 0 K, traffic: 5123304, 4812 MB, drop: 63508, 45162 K
cpu6  stat: 2429022 4574374 292711 [1.49],    0    0    0 67261, sock:      0 0 0, 0 K, traffic: 4799824, 2545 MB, drop: 67261, 8198 K
cpu7  stat: 2416686 4612401 280267 [1.49],    0    0    0 67481, sock:      0 0 0, 0 K, traffic: 4825187, 2509 MB, drop: 67481, 8199 K
cpu8  stat: 2410662 4534426 281994 [1.50],    0    0    0 65065, sock:      0 0 0, 0 K, traffic: 4751354, 2539 MB, drop: 65065, 7733 K
cpu9  stat: 2311269 4485719 278285 [1.48],    0    0    0 66667, sock:      0 0 0, 0 K, traffic: 4697337, 2573 MB, drop: 66667, 8430 K
cpu10  stat: 2421223 4594682 288828 [1.49],    0    0    0 74741, sock:    846 0 0, 1209 K, traffic: 4808769, 2646 MB, drop: 74741, 9488 K
cpu11  stat: 2449659 4586758 293838 [1.50],    0    0    0 70524, sock:      0 0 0, 0 K, traffic: 4810071, 2606 MB, drop: 70524, 9433 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2097152
Natevents disabled, count start 0, stop 0.
sock0: xxxx:9996, sndbuf 212992, filled 1, peak 11521; err: sndbuf reached 0, connect 0, other 0
sock1: xxxx:10008, sndbuf 212992, filled 1, peak 11521; err: sndbuf reached 0, connect 0, other 0

c hashsize=4194304 maxflows=8388608, времени проходит несколько больше, не стал дожидаться пока дойдёт до maxflows, но суть та же:

cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 4359473 (peak 4359473 reached 0d0h0m ago), mem 715226K, worker delay 1/250.
Hash: size 4194304 (mem 32768K), metric 1.73 [1.52, 1.13, 1.00]. MemTraf: 129754830 pkt, 95334258 K (pdu 35, 2702), Out 19258 pkt, 4153 K.
Rate: 8006027836 bits/sec, 1326686 packets/sec; Avg 1 min: 7662537184 bps, 1271420 pps; 5 min: 3652303220 bps, 606691 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 55858373 125403065 4370993 [1.43],    0    0    0    0, sock:    766 0 93, 1095 K, traffic: 129774053, 93103 MB, drop: 0, 0 K
cpu0  stat: 4946433 10808378 287580 [1.44],    0    0    0    0, sock:      0 0 93, 0 K, traffic: 11095958, 9828 MB, drop: 0, 0 K
cpu1  stat: 4512064 10867387 286588 [1.40],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 11153974, 10018 MB, drop: 0, 0 K
cpu2  stat: 4621263 10871584 272504 [1.41],    0    0    0    0, sock:    766 0 0, 1095 K, traffic: 11144088, 9558 MB, drop: 0, 0 K
cpu3  stat: 4465696 10886852 274333 [1.40],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 11161184, 9814 MB, drop: 0, 0 K
cpu4  stat: 4925458 10884990 274303 [1.44],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 11159293, 9793 MB, drop: 0, 0 K
cpu5  stat: 4529192 10837435 279523 [1.40],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 11116957, 10287 MB, drop: 0, 0 K
cpu6  stat: 4387833 10047587 459515 [1.41],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10507101, 5687 MB, drop: 0, 0 K
cpu7  stat: 4674387 10104007 444188 [1.44],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10548194, 5463 MB, drop: 0, 0 K
cpu8  stat: 4472014 9978629 447215 [1.42],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10425843, 5608 MB, drop: 0, 0 K
cpu9  stat: 4882551 9907934 445192 [1.47],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10353126, 5548 MB, drop: 0, 0 K
cpu10  stat: 4711265 10093532 441876 [1.44],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10535408, 5660 MB, drop: 0, 0 K
cpu11  stat: 4730233 10114770 458177 [1.44],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 10572946, 5836 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608
Natevents disabled, count start 0, stop 0.

При этом

conntrack -S
entries                 979862
searched                474526113
found                   3928426135
new                     341025794
invalid                 4273569
ignore                  11428
delete                  375566856
delete_list             70045157
insert                  19763147
insert_failed           125
drop                    0
early_drop              0
icmp_error              1132658
expect_new              4921
expect_create           22802
expect_delete           4952
search_restart          2

perf top с netflow:

 55.87%  [kernel]                  [k] _raw_spin_lock
  4.65%  [kernel]                  [k] netflow_target
  4.45%  [kernel]                  [k] ____nf_conntrack_find
  3.13%  [kernel]                  [k] _raw_read_unlock_bh
  3.08%  [kernel]                  [k] fib_table_lookup
  1.70%  [kernel]                  [k] _raw_read_lock_bh
  1.62%  [kernel]                  [k] ixgbe_clean_rx_irq
  1.45%  [kernel]                  [k] ipt_do_table
  1.18%  [kernel]                  [k] ixgbe_xmit_frame_ring
  0.90%  [kernel]                  [k] ip_route_input_noref
  0.83%  [kernel]                  [k] nf_nat_setup_info
  0.77%  [kernel]                  [k] __netif_receive_skb_core
  0.73%  [kernel]                  [k] tcp_packet
  0.72%  [kernel]                  [k] memcmp
  0.67%  [kernel]                  [k] nf_iterate
  0.54%  [kernel]                  [k] kmem_cache_free

perf top без netflow:

  9.57%  [kernel]             [k] ____nf_conntrack_find
  7.78%  [kernel]             [k] fib_table_lookup
  6.09%  [kernel]             [k] _raw_spin_lock
  4.42%  [kernel]             [k] ixgbe_clean_rx_irq
  3.19%  [kernel]             [k] ixgbe_xmit_frame_ring
  3.18%  libc-2.13.so         [.] 0x000000000011aee9
  2.72%  [kernel]             [k] ipt_do_table
  2.27%  [kernel]             [k] ip_route_input_noref
  2.09%  [kernel]             [k] _raw_spin_lock_bh
  2.03%  [kernel]             [k] __netif_receive_skb_core

В контреке около 900 тыс записей, суммарный трафик проходящий через сервер — около 10гбит.

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

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

10гбит мы не тестировали. Подумаю над вашими данными. Как я понял Natevents вы не используете (эту фичу я хочу удалить в будущем). Интересно "55.87% [kernel] [k] _raw_spin_lock" какой там stack trace.

В git версии уже есть оптимизация для лучшего распараллеливания, но может её недостаточно, надо думать и смотреть, но к сожалению у меня настолько загруженного сервера нет.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

10Гбит - это суммарный траффик проходящий в обе стороны, т.е. на сервер с одной стороны пришло около 7-8 гбит, с другой стороны - 2-3.

natevents не используем, пока руки не доходили до них.

Если подскажете как посмотреть stack trace - с радостью покажу.

Насколько я понял - до какого-то момента всё работало нормально, включение netflow добавляло процентов 10 нагрузки, однако при достижении 5,5-6Гбит, по мере дальнейшего роста полосы - загрузка в течение часа выросла с 40% до 100%, после чего netflow отключили.

Попробую позже посмотреть не вернётся ли всё в норму при уменьшении количества трафика.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Насчет perf, наилучших команд не скажу, но там на период, скажем пара сек, надо запустить perf record с опциями -a и -g (скажем perf record -ag sleep 1), а потом кажется perf report -g, и нажмите там ентер на верхнюю строку где максимальная нагрузка cpu, скорее всего это будет _raw_spin_lock и оно должно показать call graph, надеюсь. К сожалению не гуру по perf.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Хм, сейчас совсем подругому выглядит:

 57.46%  [kernel]            [k] memcmp
  6.32%  [kernel]            [k] _raw_spin_lock
  5.76%  [kernel]            [k] netflow_target
  3.19%  [kernel]            [k] ____nf_conntrack_find
  2.45%  [kernel]            [k] fib_table_lookup
  1.44%  [kernel]            [k] ixgbe_clean_rx_irq
  1.34%  [kernel]            [k] ipt_do_table
  1.31%  [kernel]            [k] _raw_read_unlock_bh
ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 2000000 (peak 2000002 reached 0d0h0m ago), mem 328125K, worker delay 1/250.
Hash: size 8192 (mem 64K), metric 17.24 [7.75, 3.56, 1.92]. MemTraf: 70248134 pkt, 54304017 K (pdu 1, 189), Out 34594222 pkt, 27525952 K.
Rate: 2835581474 bits/sec, 480407 packets/sec; Avg 1 min: 4216948022 bps, 687468 pps; 5 min: 2712760945 bps, 427786 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 9387348410 101565070 4166237 [89.78],    0    0    0 888952, sock:  42577 0 42577, 60870 K, traffic: 104842355, 79912 MB, drop: 888952, 240889 K
cpu0  stat: 852666637 9372715 285911 [89.28],    0    0    0 65531, sock:      0 0 0, 0 K, traffic: 9593095, 9442 MB, drop: 65531, 28532 K
cpu1  stat: 897818441 9721017 288348 [90.69],    0    0    0 66900, sock:      0 0 0, 0 K, traffic: 9942465, 9752 MB, drop: 66900, 30428 K
cpu2  stat: 877686146 9538646 283028 [90.36],    0    0    0 73717, sock:  42577 0 42577, 60870 K, traffic: 9747957, 9413 MB, drop: 73717, 36984 K
cpu3  stat: 814788436 9052993 275921 [88.34],    0    0    0 64737, sock:      0 0 0, 0 K, traffic: 9264177, 9104 MB, drop: 64737, 29957 K
cpu4  stat: 855500216 9405668 275731 [89.36],    0    0    0 64674, sock:      0 0 0, 0 K, traffic: 9616725, 9192 MB, drop: 64674, 29273 K
cpu5  stat: 821964211 9118140 278366 [88.47],    0    0    0 66208, sock:      0 0 0, 0 K, traffic: 9330298, 8943 MB, drop: 66208, 31206 K
cpu6  stat: 715233252 7604971 420738 [90.11],    0    0    0 83596, sock:      0 0 0, 0 K, traffic: 7942113, 4044 MB, drop: 83596, 9426 K
cpu7  stat: 716161731 7650890 426104 [89.66],    0    0    0 81765, sock:      0 0 0, 0 K, traffic: 7995229, 4083 MB, drop: 81765, 9237 K
cpu8  stat: 706144068 7515407 403255 [90.17],    0    0    0 80142, sock:      0 0 0, 0 K, traffic: 7838520, 3790 MB, drop: 80142, 8843 K
cpu9  stat: 701037384 7393608 406882 [90.87],    0    0    0 79944, sock:      0 0 0, 0 K, traffic: 7720546, 3746 MB, drop: 79944, 8934 K
cpu10  stat: 719802766 7639043 413498 [90.38],    0    0    0 80464, sock:      0 0 0, 0 K, traffic: 7972077, 4248 MB, drop: 80464, 8976 K
cpu11  stat: 708546679 7551983 408456 [90.00],    0    0    0 81275, sock:      0 0 0, 0 K, traffic: 7879164, 4148 MB, drop: 81275, 9086 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2000000
Natevents disabled, count start 0, stop 0.
 conntrack -S
entries                 682135

Ерунда какая-то....

Сходу perf record/report не осилил, завтра попробую разобраться.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

А, так и должно быть - это я hashsize не указал. С hashsize=4194304 и maxflows=8388608:

 55.66%  [kernel]            [k] _raw_spin_lock
  4.83%  [kernel]            [k] netflow_target
  3.42%  [kernel]            [k] _raw_read_unlock_bh
  3.26%  [kernel]            [k] ____nf_conntrack_find
  3.12%  [kernel]            [k] fib_table_lookup
  1.86%  [kernel]            [k] _raw_read_lock_bh
  1.84%  [kernel]            [k] ixgbe_clean_rx_irq
ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 694574 (peak 694574 reached 0d0h0m ago), mem 113953K, worker delay 1/250.
Hash: size 4194304 (mem 32768K), metric 1.10 [1.02, 1.00, 1.00]. MemTraf: 24291802 pkt, 19788720 K (pdu 4, 1306), Out 180155 pkt, 96702 K.
Rate: 9031966964 bits/sec, 1357789 packets/sec; Avg 1 min: 3582392219 bps, 539248 pps; 5 min: 840100402 bps, 126448 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 1910956 23724670 747287 [1.07],    0    0    0    0, sock:   1757 0 1757, 2511 K, traffic: 24471953, 19419 MB, drop: 0, 0 K
cpu0  stat: 156316 2236968  47682 [1.06],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2284650, 2208 MB, drop: 0, 0 K
cpu1  stat: 169840 2119845  48078 [1.07],    0    0    0    0, sock:   1757 0 1757, 2511 K, traffic: 2167923, 2085 MB, drop: 0, 0 K
cpu2  stat: 169281 2216891  46060 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2262950, 2113 MB, drop: 0, 0 K
cpu3  stat: 197828 2084334  45961 [1.09],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2130294, 1985 MB, drop: 0, 0 K
cpu4  stat: 165905 2224882  45317 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2270199, 2133 MB, drop: 0, 0 K
cpu5  stat: 176012 2131268  46070 [1.08],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2177337, 2033 MB, drop: 0, 0 K
cpu6  stat: 154856 1768044  80337 [1.08],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1848381, 1094 MB, drop: 0, 0 K
cpu7  stat: 132896 1812823  79400 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1892223, 1197 MB, drop: 0, 0 K
cpu8  stat: 151756 1826928  74875 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1901803, 1150 MB, drop: 0, 0 K
cpu9  stat: 136049 1765338  77044 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1842381, 1130 MB, drop: 0, 0 K
cpu10  stat: 164152 1814062  77730 [1.08],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1891791, 1169 MB, drop: 0, 0 K
cpu11  stat: 136068 1723311  78733 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1802044, 1115 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608
Natevents disabled, count start 0, stop 0.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Трафика около 8Гбит in+out:

hashsize=65536 maxflows=2097152

ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 642281 (peak 728124 reached 0d0h0m ago), mem 105374K, worker delay 1/250.
Hash: size 65536 (mem 512K), metric 0.95 [1.49, 1.27, 1.06]. MemTraf: 75415987 pkt, 62174669 K (pdu 21, 3196), Out 17107434 pkt, 12803364 K.
Rate: 8640058316 bits/sec, 1310139 packets/sec; Avg 1 min: 7957648532 bps, 1198162 pps; 5 min: 3093867760 bps, 465881 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 681223419 90110325 2413075 [8.36],    0    0    0    0, sock:  59026 0 59026, 84388 K, traffic: 92523400, 73220 MB, drop: 0, 0 K
cpu0  stat: 63097902 8650482 159769 [8.16],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 8810251, 8461 MB, drop: 0, 0 K
cpu1  stat: 59519206 8058667 160552 [8.24],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 8219219, 7695 MB, drop: 0, 0 K
cpu2  stat: 59397169 8276020 154270 [8.04],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 8430290, 8015 MB, drop: 0, 0 K
cpu3  stat: 56066397 7788994 154406 [8.05],    0    0    0    0, sock:  59026 0 59026, 84388 K, traffic: 7943400, 7374 MB, drop: 0, 0 K
cpu4  stat: 58904684 8092779 153793 [8.14],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 8246572, 7527 MB, drop: 0, 0 K
cpu5  stat: 60202854 8155008 155004 [8.24],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 8310012, 7498 MB, drop: 0, 0 K
cpu6  stat: 53777419 6903694 245469 [8.52],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 7149163, 4270 MB, drop: 0, 0 K
cpu7  stat: 55395644 7025451 259551 [8.60],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 7285002, 4700 MB, drop: 0, 0 K
cpu8  stat: 53865338 6902496 239330 [8.54],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 7141826, 4322 MB, drop: 0, 0 K
cpu9  stat: 56497530 6998797 240218 [8.80],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 7239015, 4646 MB, drop: 0, 0 K
cpu10  stat: 52643151 6745101 246548 [8.52],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 6991649, 4418 MB, drop: 0, 0 K
cpu11  stat: 51856272 6512859 244165 [8.67],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 6757024, 4290 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2097152
Natevents disabled, count start 0, stop 0.
 32.71%  [kernel]            [k] _raw_spin_lock
  6.67%  [kernel]            [k] memcmp
  5.92%  [kernel]            [k] netflow_target
  4.48%  [kernel]            [k] ____nf_conntrack_find
  4.38%  [kernel]            [k] fib_table_lookup
  3.60%  [kernel]            [k] _raw_read_unlock_bh
  2.69%  [kernel]            [k] _raw_read_lock_bh
  2.68%  [kernel]            [k] ixgbe_clean_rx_irq

Количество flow НЕ растёт, кушает при этом под 20-25% процессора.

Перезагрузил модуль с hashsize=16384 maxflows=2097152

cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 840218 (peak 840218 reached 0d0h0m ago), mem 137848K, worker delay 1/250.
Hash: size 16384 (mem 128K), metric 5.74 [3.26, 1.58, 1.19]. MemTraf: 37830296 pkt, 30713039 K (pdu 25, 4006), Out 1310476 pkt, 861183 K.
Rate: 8735688900 bits/sec, 1320059 packets/sec; Avg 1 min: 5073089904 bps, 767700 pps; 5 min: 1349770158 bps, 204233 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 1043391651 38050382 1090365 [27.65],    0    0    0    0, sock:   8338 0 8338, 11920 K, traffic: 39140747, 30834 MB, drop: 0, 0 K
cpu0  stat: 88436760 3343694  71466 [26.89],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3415160, 3114 MB, drop: 0, 0 K
cpu1  stat: 92034484 3494683  71948 [26.80],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3566631, 3273 MB, drop: 0, 0 K
cpu2  stat: 92954705 3485238  68434 [27.15],    0    0    0    0, sock:   8338 0 8338, 11920 K, traffic: 3553672, 3266 MB, drop: 0, 0 K
cpu3  stat: 86071362 3279349  68498 [26.70],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3347847, 3077 MB, drop: 0, 0 K
cpu4  stat: 97564701 3655245  68285 [27.20],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3723530, 3480 MB, drop: 0, 0 K
cpu5  stat: 89335051 3353691  69391 [27.09],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3423082, 3116 MB, drop: 0, 0 K
cpu6  stat: 80567394 2817967 112057 [28.49],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2930024, 1804 MB, drop: 0, 0 K
cpu7  stat: 88945647 3073324 115415 [28.89],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3188739, 2142 MB, drop: 0, 0 K
cpu8  stat: 83963234 2958628 109424 [28.36],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3068052, 1885 MB, drop: 0, 0 K
cpu9  stat: 80447957 2801303 109741 [28.63],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2911044, 1789 MB, drop: 0, 0 K
cpu10  stat: 81121932 2889989 113137 [28.01],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3003126, 1901 MB, drop: 0, 0 K
cpu11  stat: 81948996 2897292 112569 [28.22],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3009861, 1982 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2097152
Natevents disabled, count start 0, stop 0.
19.85%  [kernel]                  [k] _raw_spin_lock
 10.95%  [kernel]                  [k] memcmp
  6.44%  [kernel]                  [k] netflow_target
  5.16%  [kernel]                  [k] ____nf_conntrack_find
  4.91%  [kernel]                  [k] fib_table_lookup
  3.48%  [kernel]                  [k] _raw_read_unlock_bh

И active растёт дальше...

Снова загрузил с hashsize=65536 maxflows=2097152 - Flows: active 625117, грузит примерно 20% CPU и НЕ растёт, зараза.

Загружаю с hashsize=4194304 maxflows=8388608 (параметры, с которыми сегодня в ЧНН начался неконтролируемый рост active flows. В принципе - значения явно завышены, надо поделить как минимум на 2...исторически сложилось), получаю
Flows: active 605657, не растут, при этом CPU нагружает где-то на 10%.
perf top:

 29.44%  [kernel]              [k] _raw_spin_lock
  5.76%  [kernel]              [k] netflow_target
  4.84%  [kernel]              [k] fib_table_lookup
  4.77%  [kernel]              [k] ____nf_conntrack_find
  3.69%  [kernel]              [k] _raw_read_unlock_bh
  2.94%  [kernel]              [k] ixgbe_clean_rx_irq

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Предполагаю, что у вас статистика правильная.

Total stat: 29079737 57272837 2898410  traffic: 59382696, 42897 MB, active 2097152, 1330298 packets/sec
Total stat: 55858373 125403065 4370993 traffic: 129774053, 93103 MB, active 4359473, 1326686 packets/sec

Согласно вашей статистике, у вас средняя длинна потока 19.7 и 28.6 пакетов, что, на мой взгляд, является нормальным для небольшого промежутка времени. MemTraf X pkt деленный на эту длину и даёт примерно столько потоков в памяти в данный момент. Rate X packets/sec деленная на эту длину дает сколько новых потоков у вас приходит в секунду (до 65к), при этом flow сидит в памяти минимум 15 (inactive timeout) секунд, то есть все это реально накапливается, до таких чисел. Большой трафик, плюс пиковая нагрузка.

Эмпирически советую вам поставить hashsize от 10000000 и выше. И не снижать при последующих тестах.

Total stat: 1043391651 38050382 1090365 [27.65],
Total stat: 681223419 90110325 2413075 [8.36],

27 и 8 значит хэш таблица используется крайне не эффективно - надо увеличивать пока не станет 1.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

27 и 8 значит хэш таблица используется не эффективно надо увеличивать пока не станет 1

Это я для теста значения брал, в порядке бреда. В нормальной работе у нас получается что-то около [1.10].

Не понятно почему при разных hashsize отличается количество active flow на сотни тысяч. Модуль перезагружал с интервалом в пару минут, так что трафик не сильно отличался.

Четыре теста:

hashsize=65536 maxflows=2097152
Flows: active 642281 (peak 728124 reached 0d0h0m ago)

hashsize=16384 maxflows=2097152
Flows: active 840218 (peak 840218 reached 0d0h0m ago) ( active ПРОДОЛЖАЕТ УВЕЛИЧИВАТЬСЯ пока не достигнет maxflows)

hashsize=65536 maxflows=2097152
Flows: active 625117

hashsize=4194304 maxflows=8388608
Flows: active 605657 (трафик постепенно снижается, так что и количество flow падает).

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Насчет почему в conntrac -S меньше entries - другая логика хранения потоков - другие тайм-ауты. Можете поиграться с active/inactive timeouts, скажем сделать одинаковые по несколько сек (вплоть до 1) - количество потоков должно сократиться, но возрастёт трафик экспорта.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

hashsize не может влиять на кол-во active Flows, тут и думать не над чем. Это флуктуация. Маленькие значения hashsize зато сильно влияют на загрузку процессора. (Вы как-то сто проблем одновременно обсуждаете.)

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Хорошо, не буду упоминать про процессор. Причины различий между контреком и netflow понятны.

Проблема в том, что в какой-то момент по непонятной причине active flow начинает расти вплоть до maxflows.
АНАЛОГИЧНОГО поведения я сейчас добился поставив неадекватно маленький hashsize:

ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 2097152 (peak 2097153 reached 0d0h0m ago), mem 344064K, worker delay 1/250.
Hash: size 8192 (mem 64K), metric 6.96 [5.86, 3.15, 1.82]. MemTraf: 89379489 pkt, 70885981 K (pdu 46, 5323), Out 1352333 pkt, 921521 K.
Rate: 3661956546 bits/sec, 580407 packets/sec; Avg 1 min: 4913953117 bps, 770426 pps; 5 min: 2708083367 bps, 418930 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 9163822354 88397001 2637498 [101.66],    0    0    0 302723, sock:   7920 0 7920, 11323 K, traffic: 90731776, 70124 MB, drop: 302723, 111698 K
cpu0  stat: 817565152 8097808 180498 [99.75],    0    0    0 22821, sock:      0 0 0, 0 K, traffic: 8255485, 7889 MB, drop: 22821, 13347 K
cpu1  stat: 807990686 8002625 183459 [99.70],    0    0    0 25306, sock:      0 0 0, 0 K, traffic: 8160778, 7645 MB, drop: 25306, 16503 K
cpu2  stat: 862131676 8603346 175451 [99.20],    0    0    0 25171, sock:      0 0 0, 0 K, traffic: 8753626, 8614 MB, drop: 25171, 17407 K
cpu3  stat: 810021754 7916901 174071 [101.11],    0    0    0 23693, sock:      0 0 0, 0 K, traffic: 8067279, 7552 MB, drop: 23693, 15409 K
cpu4  stat: 826733116 8097270 173358 [100.96],    0    0    0 22941, sock:      0 0 0, 0 K, traffic: 8247687, 7768 MB, drop: 22941, 13766 K
cpu5  stat: 838330485 8105367 175389 [102.23],    0    0    0 25153, sock:      0 0 0, 0 K, traffic: 8255603, 7726 MB, drop: 25153, 16567 K
cpu6  stat: 700600358 6739183 261834 [101.07],    0    0    0 25105, sock:      0 0 0, 0 K, traffic: 6975912, 3743 MB, drop: 25105, 2986 K
cpu7  stat: 705832849 6690712 266086 [102.45],    0    0    0 26803, sock:      0 0 0, 0 K, traffic: 6929995, 4195 MB, drop: 26803, 3146 K
cpu8  stat: 683179280 6471292 255738 [102.55],    0    0    0 26220, sock:      0 0 0, 0 K, traffic: 6700810, 3379 MB, drop: 26220, 3040 K
cpu9  stat: 694848441 6508912 261937 [103.62],    0    0    0 25060, sock:      0 0 0, 0 K, traffic: 6745789, 3791 MB, drop: 25060, 3002 K
cpu10  stat: 714223664 6631487 260218 [104.63],    0    0    0 26316, sock:      0 0 0, 0 K, traffic: 6865389, 3999 MB, drop: 26316, 3161 K
cpu11  stat: 702367053 6532102 269462 [104.26],    0    0    0 28137, sock:   7920 0 7920, 11323 K, traffic: 6773427, 3817 MB, drop: 28137, 3359 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2097152

Это тот же самый сервер что упомянут выше, с тем же самым трафиком.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

И ещё раз тот же сервер, но с другими параметрами hashsize:

ipt_NETFLOW version v1.8-88-g3d95a40, srcversion BB81820A4B072ABC44F32FF
Flows: active 523870 (peak 533546 reached 0d0h0m ago), mem 85947K, worker delay 1/250.
Hash: size 4194304 (mem 32768K), metric 1.10 [1.03, 1.00, 1.00]. MemTraf: 35855502 pkt, 29528943 K (pdu 65, 20065), Out 3968213 pkt, 2787687 K.
Rate: 7445914378 bits/sec, 1130918 packets/sec; Avg 1 min: 5163497979 bps, 776994 pps; 5 min: 1507080029 bps, 226688 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 3345901 38747277 1076374 [1.08],    0    0    0    0, sock:  36832 0 26, 52658 K, traffic: 39823650, 31559 MB, drop: 0, 0 K
cpu0  stat: 250421 3582739  71554 [1.06],    0    0    0    0, sock:      0 0 26, 0 K, traffic: 3654292, 3317 MB, drop: 0, 0 K
cpu1  stat: 282411 3436690  71899 [1.08],    0    0    0    0, sock:  36832 0 0, 52658 K, traffic: 3508589, 3065 MB, drop: 0, 0 K
cpu2  stat: 269415 3398486  68479 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3466965, 3246 MB, drop: 0, 0 K
cpu3  stat: 239421 3518530  68606 [1.06],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3587136, 3138 MB, drop: 0, 0 K
cpu4  stat: 224305 3408363  68434 [1.06],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3476796, 3136 MB, drop: 0, 0 K
cpu5  stat: 454002 3683836  67934 [1.12],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3751770, 3448 MB, drop: 0, 0 K
cpu6  stat: 304396 3192465 112586 [1.09],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3305051, 2128 MB, drop: 0, 0 K
cpu7  stat: 281691 3107588 111742 [1.08],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3219330, 2315 MB, drop: 0, 0 K
cpu8  stat: 234757 2931332 108503 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3039835, 2035 MB, drop: 0, 0 K
cpu9  stat: 287941 2822256 108350 [1.09],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2930605, 1830 MB, drop: 0, 0 K
cpu10  stat: 224213 2916398 109040 [1.07],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 3025438, 2061 MB, drop: 0, 0 K
cpu11  stat: 292930 2748625 109247 [1.10],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 2857872, 1836 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608
Natevents disabled, count start 0, stop 0.

Как можно заметить - в первом случае
Flows: active 2097152
Во втором -
Flows: active 523870
На флуктуации, к сожалению, совсем не похоже.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Сервер тот же самый, но есть же колебания трафика. Обратите внимание, что у вас в первом случае packets/sec 580407, а во втором 1130918 в два раза больше. Очень много погрешности в данных - все равно что гадать по кофейной гуще.

АНАЛОГИЧНОГО поведения я сейчас добился поставив неадекватно маленький hashsize

Это интересно.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Да, я обратил внимание и на различия в кол-ве пакетов. Уверяю вас, трафик при этом через сервер бегает примерно одинаковый +-100мбит, и реальное количество пакетов не меняется.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Графики загрузки за день одного из ядер (остальные примерно одинаковы)
http://igorsd.ru/graph_image_cpu.png
и интерфеса
http://igorsd.ru/graph_image.php.png

Рост загрузки cpu примерно совпадает с началом роста кол-ва active flows, пики - попытки включить сбор netflow с разными параметрами.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Подумаю на досуге как может hashsize влиять на кол-во потоков в памяти. По идее никак. Может быть там связь косвенная - маленький hashsize увеличивает нагрузку на процы, увеличивается latency, а это влияет на что-то ещё.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

На флуктуации, к сожалению, совсем не похоже.

Похоже. В первом traffic stat 90731776 пакетов во втором 39823650 - разница в два-три раза. Соотв., в первом в памяти учтено 89379489 пакетов, во втором 35855502. В обоих случаях средняя длинна потока ~35 пакетов.

89379489 / 33.51 = 2667248.25, реальная цифра 4194304 ~ в два раза больше.
35855502 / 35.99 = 996262.90, реальная цифра 2097152 - в два раза больше. (Почему в два раза больше - не важно, главное, что почти совпадает.)

Природа IP трафика, что он очень неравномерный (там далеко не гауссово распределение и даже не пуассон). Плюс, кроме просто объема, у нас ещё играет роль длина потоков, что усложняет картину.

ps. То что вы показываете какие-то картинки, это все усреднение по 5-15 минут. Если у вас будет огромная пила, но с циклом меньше 5 минут, то вы увидите на таком графике прямую линию.

@aabc
Copy link
Owner

aabc commented Mar 26, 2014

Я попробовал сделать hashsize меньше разумного (в версии 1.8), это не повлияло на кол-во активных потоков:

Flows: active 28398 (peak 134700 reached 4d6h18m ago), mem 2440K
Hash: size 80000 (mem 625K), metric 1.1, 1.0, 1.0, 1.0. MemTraf: 10954023 pkt, 5296876 K (pdu 33, 4005).

Flows: active 28389 (peak 134700 reached 4d6h20m ago), mem 2439K
Hash: size 200 (mem 1K), metric 117.9, 104.6, 42.3, 16.6. MemTraf: 10236885 pkt, 4925863 K (pdu 95, 8499).

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Давайте уже исключим неравномерность трафика?

cat test.sh
#!/bin/bash

for id in `seq 0 10`;
    do
        iptables-restore < iptables-config_no_netflow
        rmmod ipt_NETFLOW
        modprobe ipt_NETFLOW hashsize=256 maxflows=2097152
        iptables-restore < iptables-config
        sleep 30
        echo "$id hashsize=256 maxflows=2097152" >> test.log
        cat /proc/net/stat/ipt_netflow >> test.log
        iptables-restore < iptables-config_no_netflow
        rmmod ipt_NETFLOW
        modprobe ipt_NETFLOW hashsize=32768 maxflows=2097152
        iptables-restore < iptables-config
        sleep 30
        echo "$id hashsize=32768 maxflows=2097152" >> test.log
        cat /proc/net/stat/ipt_netflow >> test.log
    done;

Трафика стало заметно меньше (около 3гбит), так что при hashsize=8192 работает адекватно, так что пришлось взять ещё более неадекватное значение hashsize=256.
Вывод (позволил себе немного отформатировать):

 cat test.log | grep -E "hashsize|Flows"
0 hashsize=256 maxflows=2097152
Flows: active 353799 (peak 353841 reached 0d0h0m ago), mem 58045K, worker delay 1/250.
0 hashsize=32768 maxflows=2097152
Flows: active 253874 (peak 268530 reached 0d0h0m ago), mem 41651K, worker delay 1/250.

1 hashsize=256 maxflows=2097152
Flows: active 370128 (peak 370128 reached 0d0h0m ago), mem 60724K, worker delay 1/250.
1 hashsize=32768 maxflows=2097152
Flows: active 254897 (peak 268558 reached 0d0h0m ago), mem 41819K, worker delay 1/250.

2 hashsize=256 maxflows=2097152
Flows: active 356686 (peak 356726 reached 0d0h0m ago), mem 58518K, worker delay 1/250.
2 hashsize=32768 maxflows=2097152
Flows: active 248645 (peak 266193 reached 0d0h0m ago), mem 40793K, worker delay 1/250.

3 hashsize=256 maxflows=2097152
Flows: active 357725 (peak 357725 reached 0d0h0m ago), mem 58689K, worker delay 1/250.
3 hashsize=32768 maxflows=2097152
Flows: active 248832 (peak 266820 reached 0d0h0m ago), mem 40824K, worker delay 1/250.

4 hashsize=256 maxflows=2097152
Flows: active 347253 (peak 347253 reached 0d0h0m ago), mem 56971K, worker delay 1/250.
4 hashsize=32768 maxflows=2097152
Flows: active 254756 (peak 267575 reached 0d0h0m ago), mem 41795K, worker delay 1/250.

5 hashsize=256 maxflows=2097152
Flows: active 338089 (peak 338089 reached 0d0h0m ago), mem 55467K, worker delay 1/250.
5 hashsize=32768 maxflows=2097152
Flows: active 248498 (peak 265136 reached 0d0h0m ago), mem 40769K, worker delay 1/250.

6 hashsize=256 maxflows=2097152
Flows: active 339434 (peak 339512 reached 0d0h0m ago), mem 55688K, worker delay 1/250.
6 hashsize=32768 maxflows=2097152
Flows: active 247400 (peak 266166 reached 0d0h0m ago), mem 40589K, worker delay 1/250.

7 hashsize=256 maxflows=2097152
Flows: active 340501 (peak 340501 reached 0d0h0m ago), mem 55863K, worker delay 1/250.
7 hashsize=32768 maxflows=2097152
Flows: active 247904 (peak 259526 reached 0d0h0m ago), mem 40671K, worker delay 1/250.

8 hashsize=256 maxflows=2097152
Flows: active 323601 (peak 323601 reached 0d0h0m ago), mem 53090K, worker delay 1/250.
8 hashsize=32768 maxflows=2097152
Flows: active 245044 (peak 264838 reached 0d0h0m ago), mem 40202K, worker delay 1/250.

9 hashsize=256 maxflows=2097152
Flows: active 322460 (peak 322494 reached 0d0h0m ago), mem 52903K, worker delay 1/250.
9 hashsize=32768 maxflows=2097152
Flows: active 241722 (peak 256677 reached 0d0h0m ago), mem 39657K, worker delay 1/250.

10 hashsize=256 maxflows=2097152
Flows: active 327830 (peak 327830 reached 0d0h0m ago), mem 53784K, worker delay 1/250.
10 hashsize=32768 maxflows=2097152
Flows: active 245530 (peak 260191 reached 0d0h0m ago), mem 40282K, worker delay 1/250.

Я охотно верю что у вас при небольшом количестве трафика проблема не проявляется, мы с ней тоже до данного момента ни разу не встречались. Однако - закономерность присутствует, и я совершенно не могу представить себе механизм, благодаря которому что-то может начинать неверно отрабатывать при малом значении hashsize.

Как мне кажется, дело тут даже совершенно не в нём, однако при неадекватном значении оного, что-то начинает неверно отрабатывать и пакеты из одного потока перестают "склеиваться" в один flow в памяти. Собственно это видно по выводу данных из коллектора и tcpdump(точнее, вывода tcpdump там нету, поверьте на слово): http://forum.nag.ru/forum/index.php?showtopic=53979&st=200&gopid=928350&#entry928350 где один реальный поток пользователя виден в экспорте netflow как куча потоков с малым количеством пакетов.

@hotid
Copy link
Author

hotid commented Mar 26, 2014

Взял последнюю версию из Git:

 modinfo ipt_NETFLOW
filename:       /lib/modules/3.12-0.bpo.1-amd64/extra/ipt_NETFLOW.ko
alias:          ip6t_NETFLOW
version:        v1.8-89-gac34a2d
description:    iptables NETFLOW target module
author:         <abc@telekom.ru>
license:        GPL
srcversion:     E2C8F720F147CA785FD22CB
depends:        x_tables,nf_conntrack
vermagic:       3.12-0.bpo.1-amd64 SMP mod_unload modversions
parm:           destination:export destination ipaddress:port (charp)
parm:           inactive_timeout:inactive flows timeout in seconds (int)
parm:           active_timeout:active flows timeout in seconds (int)
parm:           debug:debug verbosity level (int)
parm:           sndbuf:udp socket SNDBUF size (int)
parm:           protocol:netflow protocol version (5, 9, 10) (int)
parm:           refresh_rate:NetFlow v9/IPFIX refresh rate (packets) (uint)
parm:           timeout_rate:NetFlow v9/IPFIX timeout rate (minutes) (uint)
parm:           natevents:send NAT Events (int)
parm:           hashsize:hash table size (int)
parm:           maxflows:maximum number of flows (int)
parm:           aggregation:aggregation ruleset (charp)
0 hashsize=256 maxflows=2097152
Flows: active 379864 (peak 379864 reached 0d0h0m ago), mem 62321K, worker delay 1/250.
0 hashsize=32768 maxflows=2097152
Flows: active 237551 (peak 249589 reached 0d0h0m ago), mem 38973K, worker delay 1/250.

Т.е. закономерность та же.

Попробуем для текущего трафика (3гбита) найти hashsize при котором начинается неадекват:

cat test2.sh
#!/bin/bash

for hashsize in 64 128 256 512 1024;
    do
        iptables-restore < iptables-config_no_netflow
        rmmod ipt_NETFLOW
        modprobe ipt_NETFLOW hashsize=$hashsize maxflows=2097152
        iptables-restore < iptables-config
        sleep 30
        echo "$hashsize hashsize=$hashsize maxflows=2097152" >> test2.log
        cat /proc/net/stat/ipt_netflow >> test2.log
    done;
cat test2.log | grep -E "hashsize|Flows"
64 hashsize=64 maxflows=2097152
Flows: active 293412 (peak 293412 reached 0d0h0m ago), mem 48137K, worker delay 1/250.
128 hashsize=128 maxflows=2097152
Flows: active 366444 (peak 366468 reached 0d0h0m ago), mem 60119K, worker delay 1/250.
256 hashsize=256 maxflows=2097152
Flows: active 327060 (peak 327060 reached 0d0h0m ago), mem 53658K, worker delay 1/250.
512 hashsize=512 maxflows=2097152
Flows: active 332980 (peak 332980 reached 0d0h0m ago), mem 54629K, worker delay 1/250.
1024 hashsize=1024 maxflows=2097152
Flows: active 225648 (peak 226516 reached 0d0h0m ago), mem 37020K, worker delay 1/250.

При hashsize=64 загрузка CPU 100%, при этом за 30 секунд просто не успело создаться более 293412 записей.

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

Cпасибо за тест. Сколько была нагрузка на проц во время тестов? (Мне интересно было ли стабильно 100% при hashsize 256, если да, то причина может быть косвенной - максимальная нагрузка как-то влияет). "Поверьте на слово" - дело-то не в вере, а в сужении области поиска возможных проблем. У flowа много параметров, а по ссылке на nag отображены не все параметры, следовательно, никаких выводов сделать нельзя. "Реальный поток пользователя виден в экспорте netflow как куча потоков с малым количеством пакетов" - я такое наблюдал при низких значения таймаутов.

"hashsize при котором начинается неадекват" - можете так же вывести значения нагрузки на проц(ы)?

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

А вы не могли бы для этих тестов прислать мне полный лог статистики (ваш test.log с cat /proc/net/stat/ipt_netflow)? Можно на е-майл (он указан в README). Хочу посмотреть как меняется статистика MemTraf и остальная per CPU.

@hotid
Copy link
Author

hotid commented Mar 27, 2014

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

Таймауты были дефолтные - "active 1800, inactive 15". К сожалению более подробных логов не сохранилось. В принципе могу завтра попробовать повторить экперимент с tcpdump и отдельно взятым потоком.

Такс, про процессор при hashsize=256. Загрузил модуль, подождал несколько минут:

ipt_NETFLOW version v1.8-89-gac34a2d, srcversion E2C8F720F147CA785FD22CB
Flows: active 903511 (peak 903576 reached 0d0h0m ago), mem 148232K, worker delay 1/250.
Hash: size 256 (mem 2K), metric 81.65 [67.82, 35.19, 15.70]. MemTraf: 15416756 pkt, 9678868 K (pdu 18, 2133), Out 2663099 pkt, 1311869 K.
Rate: 60109150 bits/sec, 44081 packets/sec; Avg 1 min: 135851562 bps, 55457 pps; 5 min: 273233334 bps, 60628 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 17957852073 16570467 1509370 [994.25],    0    0    0    0, sock:  20195 0 20195, 28872 K, traffic: 18079837, 10733 MB, drop: 0, 0 K
cpu0  stat: 1631670181 1589494 109328 [961.47],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1698822, 1355 MB, drop: 0, 0 K
cpu1  stat: 1628389333 1527139 109344 [996.05],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1636483, 1241 MB, drop: 0, 0 K
cpu2  stat: 1698644055 1559235 104215 [1022.15],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1663450, 1252 MB, drop: 0, 0 K
cpu3  stat: 1467466119 1342845 103698 [1015.46],    0    0    0    0, sock:  20195 0 20195, 28872 K, traffic: 1446543, 1027 MB, drop: 0, 0 K
cpu4  stat: 1554085916 1415295 104200 [1023.76],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1519495, 1095 MB, drop: 0, 0 K
cpu5  stat: 1398679198 1318246 104565 [984.03],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1422811, 1044 MB, drop: 0, 0 K
cpu6  stat: 1485161855 1365761 148512 [981.77],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1514273, 681 MB, drop: 0, 0 K
cpu7  stat: 1511349465 1363109 147957 [1001.18],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1511066, 638 MB, drop: 0, 0 K
cpu8  stat: 1426712212 1292361 143387 [994.70],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1435748, 520 MB, drop: 0, 0 K
cpu9  stat: 1541185153 1389588 147000 [1003.99],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1536588, 689 MB, drop: 0, 0 K
cpu10  stat: 1354871106 1257261 144150 [967.79],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1401411, 614 MB, drop: 0, 0 K
cpu11  stat: 1259639407 1150134 143014 [975.08],    0    0    0    0, sock:      0 0 0, 0 K, traffic: 1293148, 571 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 2097152

mpstat -P ALL 2 5
Linux 3.12-0.bpo.1-amd64 (nat-10g-3)    03/27/2014      _x86_64_        (12 CPU)

04:10:24 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
04:10:26 AM  all    0.00    0.00    0.10    0.00    0.00   89.41    0.00    0.00   10.50
04:10:26 AM    0    0.00    0.00    0.00    0.00    0.00   75.19    0.00    0.00   24.81
04:10:26 AM    1    0.00    0.00    0.00    0.00    0.00   77.93    0.00    0.00   22.07
04:10:26 AM    2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:26 AM    3    0.00    0.00    0.50    0.00    0.00   82.91    0.00    0.00   16.58
04:10:26 AM    4    0.00    0.00    0.00    0.00    0.00   85.82    0.00    0.00   14.18
04:10:26 AM    5    0.00    0.00    0.83    0.00    0.00   73.33    0.00    0.00   25.83
04:10:26 AM    6    0.00    0.00    0.00    0.00    0.00   94.90    0.00    0.00    5.10
04:10:26 AM    7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:26 AM    8    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:26 AM    9    0.00    0.00    0.00    0.00    0.00   98.48    0.00    0.00    1.52
04:10:26 AM   10    0.00    0.00    0.00    0.00    0.00   83.52    0.00    0.00   16.48
04:10:26 AM   11    0.00    0.00    0.00    0.00    0.00   83.62    0.00    0.00   16.38

04:10:26 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
04:10:28 AM  all    0.00    0.00    0.05    0.00    0.00   91.66    0.00    0.00    8.29
04:10:28 AM    0    0.00    0.00    0.00    0.00    0.00   86.90    0.00    0.00   13.10
04:10:28 AM    1    0.00    0.00    0.00    0.00    0.00   83.66    0.00    0.00   16.34
04:10:28 AM    2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:28 AM    3    0.00    0.00    0.00    0.00    0.00   87.06    0.00    0.00   12.94
04:10:28 AM    4    0.00    0.00    0.00    0.00    0.00   92.52    0.00    0.00    7.48
04:10:28 AM    5    0.84    0.00    0.00    0.00    0.00   74.79    0.00    0.00   24.37
04:10:28 AM    6    0.00    0.00    0.00    0.00    0.00   96.97    0.00    0.00    3.03
04:10:28 AM    7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:28 AM    8    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:28 AM    9    0.00    0.00    0.00    0.00    0.00   94.85    0.00    0.00    5.15
04:10:28 AM   10    0.00    0.00    0.56    0.00    0.00   87.01    0.00    0.00   12.43
04:10:28 AM   11    0.00    0.00    0.00    0.00    0.00   85.14    0.00    0.00   14.86

04:10:28 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
04:10:30 AM  all    0.00    0.00    0.09    0.09    0.00   90.35    0.00    0.00    9.47
04:10:30 AM    0    0.00    0.00    0.00    0.00    0.00   85.21    0.00    0.00   14.79
04:10:30 AM    1    0.00    0.00    0.00    0.00    0.00   85.62    0.00    0.00   14.38
04:10:30 AM    2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:30 AM    3    0.00    0.00    0.51    0.00    0.00   87.76    0.00    0.00   11.73
04:10:30 AM    4    0.00    0.00    0.00    0.00    0.00   97.83    0.00    0.00    2.17
04:10:30 AM    5    0.00    0.00    0.00    0.00    0.00   78.95    0.00    0.00   21.05
04:10:30 AM    6    0.00    0.00    0.00    0.00    0.00   91.71    0.00    0.00    8.29
04:10:30 AM    7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:30 AM    8    0.00    0.00    0.00    0.00    0.00   93.00    0.00    0.00    7.00
04:10:30 AM    9    0.00    0.00    0.51    0.00    0.00   89.23    0.00    0.00   10.26
04:10:30 AM   10    0.00    0.00    0.00    0.63    0.00   80.50    0.00    0.00   18.87
04:10:30 AM   11    0.00    0.00    0.00    0.00    0.00   86.13    0.00    0.00   13.87

04:10:30 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
04:10:32 AM  all    0.00    0.00    0.05    0.00    0.00   89.73    0.00    0.00   10.22
04:10:32 AM    0    0.00    0.00    0.00    0.00    0.00   80.74    0.00    0.00   19.26
04:10:32 AM    1    0.00    0.00    0.00    0.00    0.00   86.33    0.00    0.00   13.67
04:10:32 AM    2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:32 AM    3    0.00    0.00    0.00    0.00    0.00   90.05    0.00    0.00    9.95
04:10:32 AM    4    0.00    0.00    0.00    0.00    0.00   93.51    0.00    0.00    6.49
04:10:32 AM    5    0.00    0.00    0.00    0.00    0.00   84.55    0.00    0.00   15.45
04:10:32 AM    6    0.00    0.00    0.00    0.00    0.00   87.98    0.00    0.00   12.02
04:10:32 AM    7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:32 AM    8    0.00    0.00    0.00    0.00    0.00   89.01    0.00    0.00   10.99
04:10:32 AM    9    0.00    0.00    0.00    0.00    0.00   93.75    0.00    0.00    6.25
04:10:32 AM   10    0.00    0.00    0.00    0.00    0.00   81.60    0.00    0.00   18.40
04:10:32 AM   11    0.00    0.00    0.64    0.00    0.00   80.89    0.00    0.00   18.47

04:10:32 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
04:10:34 AM  all    0.00    0.00    0.00    0.00    0.00   91.90    0.00    0.00    8.10
04:10:34 AM    0    0.00    0.00    0.00    0.00    0.00   86.21    0.00    0.00   13.79
04:10:34 AM    1    0.00    0.00    0.00    0.00    0.00   93.10    0.00    0.00    6.90
04:10:34 AM    2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:34 AM    3    0.00    0.00    0.00    0.00    0.00   89.39    0.00    0.00   10.61
04:10:34 AM    4    0.00    0.00    0.00    0.00    0.00   90.26    0.00    0.00    9.74
04:10:34 AM    5    0.00    0.00    0.00    0.00    0.00   87.25    0.00    0.00   12.75
04:10:34 AM    6    0.00    0.00    0.00    0.00    0.00   93.75    0.00    0.00    6.25
04:10:34 AM    7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
04:10:34 AM    8    0.00    0.00    0.00    0.00    0.00   92.39    0.00    0.00    7.61
04:10:34 AM    9    0.00    0.00    0.00    0.00    0.00   94.87    0.00    0.00    5.13
04:10:34 AM   10    0.00    0.00    0.00    0.00    0.00   88.89    0.00    0.00   11.11
04:10:34 AM   11    0.00    0.00    0.00    0.00    0.00   80.90    0.00    0.00   19.10


Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.00    0.00    0.06    0.02    0.00   90.63    0.00    0.00    9.30
Average:       0    0.00    0.00    0.00    0.00    0.00   83.05    0.00    0.00   16.95
Average:       1    0.00    0.00    0.00    0.00    0.00   85.60    0.00    0.00   14.40
Average:       2    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
Average:       3    0.00    0.00    0.20    0.00    0.00   87.44    0.00    0.00   12.36
Average:       4    0.00    0.00    0.00    0.00    0.00   92.37    0.00    0.00    7.63
Average:       5    0.16    0.00    0.16    0.00    0.00   80.12    0.00    0.00   19.57
Average:       6    0.00    0.00    0.00    0.00    0.00   93.14    0.00    0.00    6.86
Average:       7    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
Average:       8    0.00    0.00    0.00    0.00    0.00   94.99    0.00    0.00    5.01
Average:       9    0.00    0.00    0.10    0.00    0.00   94.24    0.00    0.00    5.65
Average:      10    0.00    0.00    0.12    0.12    0.00   84.44    0.00    0.00   15.33
Average:      11    0.00    0.00    0.12    0.00    0.00   83.37    0.00    0.00   16.51
лог статистики (ваш test.log с cat /proc/net/stat/ipt_netflow).  

http://igorsd.ru/ipt_netflow/test.log
http://igorsd.ru/ipt_netflow/test2.log

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

Благодарю.

@hotid
Copy link
Author

hotid commented Mar 27, 2014

Да это вам спасибо за помощь :)

Попробую на завтра оставить с hashsize=8388608 maxflows=4194304, посмотрим, может поможет. Впрочем, в любом случае, было бы здорово понять в результате чего получается рост количества потоков и отловить это дело...

@hotid
Copy link
Author

hotid commented Mar 27, 2014

Да, на всякий случай:
2хE5649 @ 2.53GHz, ядро загружено с intel_idle.max_cstate=0 processor.max_cstate=0 idle=mwait, процессоры жёстко загнаны в 2.53

Карточки

lspci  | grep -i eth
03:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
09:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)

по 6 прерываний на карту, каждое висит на своём ядре.

modinfo ixgbe
filename:       /lib/modules/3.12-0.bpo.1-amd64/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
version:        3.19.1
license:        GPL
description:    Intel(R) 10 Gigabit PCI Express Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
....

Даж не знаю что ещё может пригодиться....
От версии ixgbe вроде как не зависит, во всяком случае, с версией 3.13.10-k и ядром 3.11.8 я наблюдал похожую картинку.

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

Судя по test.log, когда hashsize=256, то приходит в два раза меньше пакетов (8440214 vs 16866613). Модуль физически видит меньше пакетов. Видимо они дропаются по нагрузке (видно по mpstat что нагрузка доходит до 100%). Возможно, это потери на интерфейсах, посмотрите ifconfig -s, ethtool -S и netstat -s.

Дальше, но даже с меньшим трафиком, при hashsize=256, flows больше на 100000. При этом видно, что Out X pkt как раз различаются на 100000. То есть при меньшей нагрузке на CPU (когда hashsize=32768) пакеты быстрее пересылаются на экспорт (уходят из хэша). Это понятно - если система перенагружена, то и экспорт происходит тоже медленнее.

Вот одну проблему выяснили: при слишком маленьком hashsize выходит нагрузка cpu 100% и экспорт замедляется увеличивая кол-во active flows.

Решение тут - не допускать перенагрузки системы, чтоб никогда не было cpu 100%. Что полезно и чтоб избежать packet drops.

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

Насчет вот этого

Судя по tcpdump - пользователь просто что-то заливал на сервер гугла, заливка у него не прерывалась, порты не менялись и т.п. - по идее, это должен быть один поток.

Логика экспорта отработана, наверняка там была нормальная ситуация, когда должен происходить экспорт по стандарту netflow. Условия такие:

  1. сработали таймауты
  2. объем flowа скоро превысит 4Г
  3. для TCP пришел RST пакет.

Больше ни в каких случаях.

@hotid
Copy link
Author

hotid commented Mar 27, 2014

Видимо они дропаются по нагрузке

Скорее всего так и есть.
Ещё одно наблюдение - при включении netflow с малым значением hashsize загрузка не сразу доходит до 100%, а растёт постепенно по мере накопления flow:

05:18:29 AM  all    0.00    0.00    1.56    0.00    0.00    6.92    0.00    0.00   91.52
05:18:30 AM  all    0.00    0.00    0.00    0.00    0.00    6.20    0.00    0.00   93.80
05:18:31 AM  all    0.00    0.00    0.09    0.00    0.00    6.51    0.00    0.00   93.40
добавляем -j NETFLOW
05:18:32 AM  all    0.61    0.00    0.44    0.00    0.00    7.67    0.00    0.00   91.28
05:18:33 AM  all    0.00    0.00    0.00    0.00    0.00   12.27    0.00    0.00   87.73
05:18:34 AM  all    0.00    0.00    0.09    0.55    0.00   16.50    0.00    0.00   82.86
05:18:35 AM  all    0.00    0.00    0.00    0.00    0.00   18.65    0.00    0.00   81.35
05:18:36 AM  all    0.00    0.00    0.00    0.00    0.00   23.34    0.00    0.00   76.66
05:18:37 AM  all    0.00    0.00    0.00    0.00    0.00   27.57    0.00    0.00   72.43
05:18:38 AM  all    0.00    0.00    0.10    0.00    0.00   34.66    0.00    0.00   65.24
05:18:39 AM  all    0.00    0.00    0.00    0.00    0.00   41.96    0.00    0.00   58.04
05:18:40 AM  all    0.00    0.00    0.10    0.10    0.00   45.64    0.00    0.00   54.15
05:18:41 AM  all    0.00    0.00    0.00    0.00    0.00   52.87    0.00    0.00   47.13
05:18:42 AM  all    0.00    0.00    0.11    0.00    0.00   60.34    0.00    0.00   39.55
05:18:43 AM  all    0.00    0.00    0.00    0.00    0.00   68.24    0.00    0.00   31.76
05:18:44 AM  all    0.00    0.00    0.00    0.00    0.00   78.64    0.00    0.00   21.36
05:18:45 AM  all    0.00    0.00    0.10    0.00    0.00   80.21    0.00    0.00   19.69
05:18:46 AM  all    0.00    0.00    0.10    0.00    0.00   86.62    0.00    0.00   13.28
05:18:47 AM  all    0.00    0.00    0.00    0.00    0.00   87.76    0.00    0.00   12.24
05:18:48 AM  all    0.00    0.00    0.00    0.00    0.00   88.10    0.00    0.00   11.90
05:18:49 AM  all    0.00    0.00    0.00    0.00    0.00   87.71    0.00    0.00   12.29
05:18:50 AM  all    0.66    0.00    1.03    0.00    0.00   89.37    0.00    0.00    8.94
удаляем -j NETFLOW
05:18:51 AM  all    0.00    0.00    0.35    0.00    0.00   15.79    0.00    0.00   83.86
05:18:52 AM  all    0.00    0.00    0.44    0.00    0.00    6.97    0.00    0.00   92.60

В целом оно так и должно быть по идее...

Про дропы при 100% загрузке всё понятно, тут вопросов быть не может. Не понятно что причина, а что следствие.
Я выше прикладывал графики, где виден значительный рост загрузки CPU при незначительном росте трафика. Ну и при выключении ipt_netflow видно, что загрузка ядер около 45-55%. Учитывая что, как правило, netflow у нас добавлял к загрузке 10-15% вроде как производительности должно хватать за глаза, однако не хватает...

Пока мне кажется наиболее вероятным сценарием что при некотором стечении обстоятельств (недостаточный размер hashsize для текущего количества потоков), модуль в некоторых случаях генерит новые flow записи вместо использования существующих, в результате чего начинает расти нагрузка на CPU. С другой стороны не очень понятно как может быть несколько записей для одного потока, хотя, каюсь, я не программист, реализацию полностью не осилил.

@aabc
Copy link
Owner

aabc commented Mar 27, 2014

Ещё одно наблюдение - при включении netflow с малым значением hashsize загрузка не сразу доходит до 100%, а растёт постепенно по мере накопления flow

Это уже не важно. Таблица потоков постепенно увеличивается. Это увеличивает нагрузку, увеличение нагрузки замедляет экспорт, от этого таблица еще больше, а это еще сильнее увеличивает нагрузку. Порочный цикл. И так пока нагрузка не станет 100% и не начнутся дропы.

Я выше прикладывал графики

К сожалению я там ничего не понял что вы хотели ими сказать - на одном графике часы, на другом дни.

Учитывая что, как правило, netflow у нас добавлял к загрузке 10-15% вроде как производительности должно хватать за глаза, однако не хватает...

Может быть закон не линейный.

модуль в некоторых случаях генерит новые flow записи вместо использования существующих

Новая запись возможна только если старая экспортнулась.

в результате чего начинает расти нагрузка на CPU.

Нагрузка цпу из-за маленькой хэш таблицы, это закон природы. Желательно, чтоб хэш таблица была не менее двух раз больше кол-ва активных потоков.

@aabc
Copy link
Owner

aabc commented May 30, 2014

По #8 (comment) интерфейс seq_file - медленный. Чтоб его ускорить нужно сделать в nf_seq_debug_open() свой буфер размером, скажем, KMALLOC_MAX_SIZE и должно стать в десятки раз быстрее. Примерно так:

    int ret;
    char *buf = kmalloc(KMALLOC_MAX_SIZE, GFP_KERNEL);
    if (!buf) return -ENOMEM;
    // ... остальной код из nf_seq_debug_open() ...
    ret = seq_open(file, &nf_seq_debug_ops);
    if (ret) {
        kfree(buf);
        return ret;
    }
    ((struct seq_file *)file->private_data)->buf = buf;
    ((struct seq_file *)file->private_data)->size = KMALLOC_MAX_SIZE;
    return 0;

Код аналогичный single_open_size().

@aabc
Copy link
Owner

aabc commented May 30, 2014

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

Мне так не кажется. Где возникают проблемы показывает lock_stat. Вы, кстати говоря, не показали, что я просил.

Думаю надо пробовать увеличивать ... в качестве полумеры....

Полумеры, чтоб выяснить в чем проблема? Не вижу чем это поможет.

Т.е. у нас всё же какая-то проблема с экспортом.

Да задерживается экспорт. Теперь надо понять как и почему.

@aabc
Copy link
Owner

aabc commented May 30, 2014

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

Согласен. Возможно, из-за этого преждевременно обрывается экспорт. Хотя nf->lock это хешированный лок (их много) и фэйл должен быть достаточно редко. По lock_stat проблема с hlist_lock, а не с nf->lock. Сейчас сделаю ещё дебага.

@aabc
Copy link
Owner

aabc commented May 30, 2014

Добавил bedba68 дебаг строка маркеров - почему прекратился цикл экспорта в netflow_scan_and_export. Детальное описание в коммите.

В обычном состоянии там должно быть AAA. Если при росте потоков там будет

  • TTT, то это значит, что проблема со spin_trylock.
  • если AAA, то выходит, что сбивается сортировка списка. Если выяснится, что вероятно сбивается сортировка, то рекомендую добавить к дебагу всех потоков вывод столбцов с ts_first и ts_last. (Можно и заранее добавить.) Чтоб потом это можно было проанализировать.

Покажите потом статистику аналогичную #8 (comment), но с нормальным состоянием тоже.

@hotid
Copy link
Author

hotid commented May 31, 2014

Спасибо.
Показываю нормальное состояние:
Совсем без трафика:

Flows: active 0 (peak 0 reached 0d0h0m ago), mem 0K, worker delay 25/250 (36 ms, 0 us, 0: ssssssssssssssss).
Flows: active 0 (peak 0 reached 0d0h0m ago), mem 0K, worker delay 25/250 (40 ms, 0 us, 0: ssssssssssssssss).
Flows: active 0 (peak 0 reached 0d0h0m ago), mem 0K, worker delay 25/250 (44 ms, 0 us, 0: ssssssssssssssss).
Flows: active 0 (peak 0 reached 0d0h0m ago), mem 0K, worker delay 25/250 (44 ms, 0 us, 0: ssssssssssssssss).

Перезагружаю модуль и сразу смотрю:

Flows: active 848 (peak 848 reached 0d0h0m ago), mem 125K, worker delay 25/250 (84532824 ms, 0 us, 0: ).
Flows: active 77483 (peak 77483 reached 0d0h0m ago), mem 11501K, worker delay 25/250 (8 ms, 0 us, 1: AAAAAAAAAA).
Flows: active 132972 (peak 132972 reached 0d0h0m ago), mem 19738K, worker delay 25/250 (12 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 184391 (peak 184391 reached 0d0h0m ago), mem 27370K, worker delay 25/250 (16 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 229069 (peak 229069 reached 0d0h0m ago), mem 34002K, worker delay 25/250 (20 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 275532 (peak 275532 reached 0d0h0m ago), mem 40899K, worker delay 25/250 (24 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 320356 (peak 320356 reached 0d0h0m ago), mem 47552K, worker delay 25/250 (28 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 359665 (peak 359665 reached 0d0h0m ago), mem 53387K, worker delay 25/250 (32 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 398488 (peak 398488 reached 0d0h0m ago), mem 59150K, worker delay 25/250 (36 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 436099 (peak 436099 reached 0d0h0m ago), mem 64733K, worker delay 25/250 (40 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 472858 (peak 472858 reached 0d0h0m ago), mem 70189K, worker delay 25/250 (44 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 509317 (peak 509317 reached 0d0h0m ago), mem 75601K, worker delay 25/250 (48 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 545756 (peak 545756 reached 0d0h0m ago), mem 81010K, worker delay 25/250 (52 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 581322 (peak 581322 reached 0d0h0m ago), mem 86289K, worker delay 25/250 (60 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 615704 (peak 615704 reached 0d0h0m ago), mem 91393K, worker delay 25/250 (60 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 650797 (peak 650797 reached 0d0h0m ago), mem 96602K, worker delay 25/250 (68 ms, 0 us, 29: AAAAAAAAAAAAAAAA).
Flows: active 649020 (peak 654298 reached 0d0h0m ago), mem 96338K, worker delay 1/250 (0 ms, 0 us, 284: ATTTATATAAATATTA).
Flows: active 648305 (peak 654298 reached 0d0h0m ago), mem 96232K, worker delay 1/250 (0 ms, 0 us, 51: TTTAAAAAATAAAAAT).
Flows: active 648705 (peak 654298 reached 0d0h0m ago), mem 96292K, worker delay 1/250 (0 ms, 0 us, 102: TAATATATTTAAAATA).
Flows: active 650477 (peak 654298 reached 0d0h0m ago), mem 96555K, worker delay 1/250 (0 ms, 0 us, 168: AAAAAAAATATAAAAT).
Flows: active 648718 (peak 654298 reached 0d0h0m ago), mem 96294K, worker delay 1/250 (0 ms, 0 us, 173: AATATAATTTATAAAA).
Flows: active 646198 (peak 654298 reached 0d0h0m ago), mem 95920K, worker delay 1/250 (0 ms, 0 us, 359: TTTTTAATTAAAATTA).
Flows: active 646206 (peak 654298 reached 0d0h0m ago), mem 95921K, worker delay 1/250 (0 ms, 0 us, 212: ATAAAAATAATAAATA).
Flows: active 646209 (peak 654298 reached 0d0h0m ago), mem 95921K, worker delay 1/250 (0 ms, 0 us, 264: ATAAAATAAAAAAAAA).
Flows: active 645696 (peak 654298 reached 0d0h0m ago), mem 95845K, worker delay 1/250 (0 ms, 0 us, 133: AATTTTAAAAAATTAA).
Flows: active 646961 (peak 654298 reached 0d0h0m ago), mem 96033K, worker delay 1/250 (0 ms, 0 us, 79: TAAAAATAATTAAAAA).
Flows: active 647257 (peak 654298 reached 0d0h0m ago), mem 96077K, worker delay 1/250 (0 ms, 0 us, 95: TAAAAAAAAAAAAAAA).
Flows: active 646221 (peak 654298 reached 0d0h0m ago), mem 95923K, worker delay 1/250 (0 ms, 0 us, 112: AAAAAAATAAAAAAAA).
Flows: active 645402 (peak 654298 reached 0d0h0m ago), mem 95801K, worker delay 1/250 (0 ms, 0 us, 133: AAAAATAAATAAAAAA).
Flows: active 646514 (peak 654298 reached 0d0h0m ago), mem 95966K, worker delay 1/250 (0 ms, 0 us, 74: TAAAAAAATAAATTTA).
Flows: active 647785 (peak 654298 reached 0d0h0m ago), mem 96155K, worker delay 1/250 (0 ms, 0 us, 143: TAAAAAAAAAAAATAA).
Flows: active 648517 (peak 654298 reached 0d0h0m ago), mem 96264K, worker delay 1/250 (0 ms, 0 us, 173: ATATTTTTTTAAATTA).
Flows: active 649161 (peak 654298 reached 0d0h0m ago), mem 96359K, worker delay 1/250 (0 ms, 0 us, 31: EAAAAAAAATAAATTA).
Flows: active 650860 (peak 654298 reached 0d0h0m ago), mem 96612K, worker delay 1/250 (0 ms, 0 us, 91: EAATAATAAATAAAAA).
Flows: active 649272 (peak 654298 reached 0d0h0m ago), mem 96376K, worker delay 1/250 (0 ms, 0 us, 127: AAAAAATTTTTTTAAT).
Flows: active 649139 (peak 654298 reached 0d0h0m ago), mem 96356K, worker delay 1/250 (0 ms, 0 us, 60: EAAAAAATAAAAATAA).
Flows: active 649275 (peak 654298 reached 0d0h0m ago), mem 96376K, worker delay 1/250 (0 ms, 0 us, 147: AAAAAATTTATAAATA).
Flows: active 649949 (peak 654298 reached 0d0h0m ago), mem 96476K, worker delay 1/250 (0 ms, 0 us, 131: TTAATATATAAAATAA).
Flows: active 648957 (peak 654298 reached 0d0h0m ago), mem 96329K, worker delay 1/250 (0 ms, 0 us, 171: TATAAAAATTAATTTA).
Flows: active 648904 (peak 654298 reached 0d0h0m ago), mem 96321K, worker delay 1/250 (0 ms, 0 us, 183: TTTAAAAATAATAATA).
Flows: active 647264 (peak 654298 reached 0d0h0m ago), mem 96078K, worker delay 1/250 (0 ms, 0 us, 143: TTATATTTAAATAAAA).
Flows: active 646564 (peak 654298 reached 0d0h0m ago), mem 95974K, worker delay 1/250 (0 ms, 0 us, 179: AAATTAAAAAAAAAAA).

Вечером попробую снять статистику в момент возникновения проблем.

@aabc
Copy link
Owner

aabc commented May 31, 2014

Замечательно! Многовато Т для не нагруженного сервера.

Кстати, а какая у вас общая статистика (включая по процессорам)? В предыдущих постах, скажем #8 (comment), я видел огромные числа в метрике хеша ([994.25] и т.п.)

@hotid
Copy link
Author

hotid commented Jun 1, 2014

cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-95-gbedba68-dirty, srcversion 44CFD4B52E8EC8FE96C1F0A
Flows: active 404234 (peak 8388610 reached 0d11h36m ago), mem 60003K, worker delay 1/250 (0 ms, 0 us, 127: AAAAAAAAAAAAAAAA).
Hash: size 33554432 (mem 262144K), metric 1.00 [1.00, 1.00, 1.00]. MemTraf: 262623649 pkt, 221068220 K (pdu 185, 91513), Out 67468669330 pkt, 54432565705 K.
Rate: 4355494258 bits/sec, 647824 packets/sec; Avg 1 min: 4386798087 bps, 653347 pps; 5 min: 4387160586 bps, 652009 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 1701699925 65915647751 1836629050 [20.87],    0 51787714    0 20984006, sock:      0 0 0, 0 K, traffic: 67731292794, 53372689 MB, drop: 67489653151, 54437945692 K
cpu0  stat: 207608674 8231899887 228241170 [2.08],    0 6447470    0 2581478, sock:      0 0 0, 0 K, traffic: 8457559579, 6594336 MB, drop: 2581478, 653964 K
cpu1  stat: 214475155 8052732541 229396886 [2.13],    0 8523036    0 2594962, sock:      0 0 0, 0 K, traffic: 8279534465, 6457947 MB, drop: 2594962, 661520 K
cpu2  stat: 220015322 8358367969 229276206 [2.05],    0 8472953    0 2602049, sock:      0 0 0, 0 K, traffic: 8585042126, 6787042 MB, drop: 2602049, 655649 K
cpu3  stat: 211222334 8391362073 231322118 [269.74],    0 5135231    0 2615174, sock:      0 0 0, 0 K, traffic: 8620069017, 6803105 MB, drop: 2615174, 666985 K
cpu4  stat: 212722729 8314090761 229282270 [2.06],    0 5920526    0 2601241, sock:      0 0 0, 0 K, traffic: 8540771790, 6832033 MB, drop: 19224820568, 15602182739 K
cpu5  stat: 209715100 8044739431 228260285 [2.13],    0 5360440    0 2596738, sock:      0 0 0, 0 K, traffic: 8270402978, 6505940 MB, drop: 2596738, 666293 K
cpu6  stat: 207517435 8260321596 228195487 [2.07],    0 6235564    0 2777659, sock:      0 0 0, 0 K, traffic: 8485739424, 6684513 MB, drop: 48249227477, 38831799361 K
cpu7  stat: 218423176 8262133501 232654628 [2.07],    0 5692494    0 2614705, sock:      0 0 0, 0 K, traffic: 8492173424, 6707769 MB, drop: 2614705, 659178 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608
 while true; do cat /proc/net/stat/ipt_netflow | grep Flows:;sleep 1; done
Flows: active 404039 (peak 8388610 reached 0d11h36m ago), mem 59974K, worker delay 1/250 (0 ms, 0 us, 77: AAAAAAAAAAAAATAA).
Flows: active 403882 (peak 8388610 reached 0d11h36m ago), mem 59951K, worker delay 1/250 (0 ms, 0 us, 68: AAAAAAAAAAAAAAAA).
Flows: active 404609 (peak 8388610 reached 0d11h36m ago), mem 60059K, worker delay 1/250 (0 ms, 0 us, 75: AAAAAAAATAATTAAA).
Flows: active 404579 (peak 8388610 reached 0d11h36m ago), mem 60054K, worker delay 1/250 (4 ms, 0 us, 101: AAAAAAAAAAAAAAAT).
Flows: active 403319 (peak 8388610 reached 0d11h36m ago), mem 59867K, worker delay 1/250 (0 ms, 0 us, 96: AAAAAAAAAAAAAAAA).
Flows: active 403582 (peak 8388610 reached 0d11h36m ago), mem 59906K, worker delay 1/250 (0 ms, 0 us, 92: AAAAAAAAAAAAAAAA).
Flows: active 402819 (peak 8388610 reached 0d11h36m ago), mem 59793K, worker delay 1/250 (0 ms, 0 us, 80: AAAAAAAAATAAAAAA).
10:43:52 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:43:54 AM  all    0.08    0.00    0.08    0.00    0.00    4.77    0.00    0.00   95.07
10:43:54 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:43:54 AM    1    0.00    0.00    0.61    0.00    0.00    1.22    0.00    0.00   98.17
10:43:54 AM    2    0.61    0.00    0.00    0.00    0.00    0.61    0.00    0.00   98.79
10:43:54 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:43:54 AM    4    0.00    0.00    0.00    0.00    0.00   29.15    0.00    0.00   70.85
10:43:54 AM    5    0.00    0.00    0.00    0.00    0.00    0.63    0.00    0.00   99.37
10:43:54 AM    6    0.00    0.00    0.00    0.00    0.00    0.63    0.00    0.00   99.37
10:43:54 AM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

@aabc
Copy link
Owner

aabc commented Jun 1, 2014

Спс. [269.74] вот это очень странно.

@aabc
Copy link
Owner

aabc commented Jun 1, 2014

Хотя nf->lock это хешированный лок (их много) и фэйл должен быть достаточно редко.

Понял, почему не редко - из-за цикла. Надо подумать можно ли это (и/или ipt_netflow_list) реализовать вообще без локов или уменьшить concurrence.

ps. Придумал заюзать llist и list_bl, но они есть только с 2011 года, с ядер 2.6.38 (list_bl) и 3.1 (llist), а мне желательно сохранить совместимость с 2.6.18 (centos5), минимум с 2.6.32 (centos6). Можете предложить свой вариант разгрузки локов если хотите.

@hotid
Copy link
Author

hotid commented Jun 2, 2014

Боюсь у меня нет предложений - я всё же не программист а администратор :)

@xaionaro
Copy link

xaionaro commented Jun 2, 2014

Извиняюсь, что опять вмешиваюсь, но всё-таки позволю себе скапитанить.

а мне желательно сохранить совместимость с 2.6.18 (centos5)

А нельзя пока что просто реализовать код, и сделать его опциональным. А когда CentOS5 будет давно забыт, сделать этот код by default (сохранив старую реализацию в #ifdef-ах)?

@hotid
Copy link
Author

hotid commented Jun 2, 2014

Пока поменял #define LOCK_COUNT (1<<8) на #define LOCK_COUNT (1<<16), соотв вместо 256 стало 65531 лок. Пока проблем с spin_trylock нету.

До изменения:

Flows: active 692226 (peak 702470 reached 0d0h0m ago), mem 102752K, worker delay 1/250 (0 ms, 0 us, 124: AAAAAATAAATTAAAA).
Flows: active 692274 (peak 702470 reached 0d0h0m ago), mem 102759K, worker delay 1/250 (0 ms, 0 us, 145: AAAAAAAATATTAAAT).
Flows: active 693188 (peak 702470 reached 0d0h0m ago), mem 102895K, worker delay 1/250 (0 ms, 0 us, 164: TATTATTTAATTATAT).
Flows: active 693052 (peak 702470 reached 0d0h0m ago), mem 102874K, worker delay 1/250 (0 ms, 0 us, 144: AATATAAAAATATTTA).
Flows: active 693812 (peak 702470 reached 0d0h0m ago), mem 102987K, worker delay 1/250 (0 ms, 0 us, 194: TTTTTAATATAATTTT).
Flows: active 692156 (peak 702470 reached 0d0h0m ago), mem 102741K, worker delay 1/250 (0 ms, 0 us, 172: AAAAAAATTAATAATT).
Flows: active 692372 (peak 702470 reached 0d0h0m ago), mem 102773K, worker delay 1/250 (0 ms, 0 us, 405: ATTATAATAAATTTAA).

После:

root@Cifra-NAT-10G:~/ipt-netflow# while true; do cat /proc/net/stat/ipt_netflow | grep Flows:;sleep 1; done                                                                                           
Flows: active 686093 (peak 689417 reached 0d0h3m ago), mem 101841K, worker delay 1/250 (0 ms, 0 us, 134: AAAAAAAAAAAAAAAA).
Flows: active 686417 (peak 689417 reached 0d0h3m ago), mem 101890K, worker delay 1/250 (0 ms, 0 us, 156: AAAAAAAAAAAAAAAA).
Flows: active 685898 (peak 689417 reached 0d0h3m ago), mem 101812K, worker delay 1/250 (0 ms, 0 us, 173: AAAAAAAAAAAAAAAA).
Flows: active 683274 (peak 689417 reached 0d0h3m ago), mem 101423K, worker delay 1/250 (0 ms, 0 us, 160: AAAAAAAAAAAAAAAA).
Flows: active 682790 (peak 689417 reached 0d0h3m ago), mem 101351K, worker delay 1/250 (0 ms, 0 us, 163: AAAAAAAAAAAAAAAA).
Flows: active 682366 (peak 689417 reached 0d0h3m ago), mem 101288K, worker delay 1/250 (0 ms, 0 us, 114: AAAAAAAAAAAAAAAA).
Flows: active 683877 (peak 689417 reached 0d0h3m ago), mem 101512K, worker delay 1/250 (0 ms, 0 us, 122: AAAAAAAAAAAAAAAA).
Flows: active 685411 (peak 689417 reached 0d0h3m ago), mem 101740K, worker delay 1/250 (0 ms, 0 us, 157: AAAAAAAAAAAAAAAA).
Flows: active 686737 (peak 689417 reached 0d0h4m ago), mem 101937K, worker delay 1/250 (0 ms, 0 us, 132: AAAAAAAAAAAAAAAA).
Flows: active 685889 (peak 689417 reached 0d0h4m ago), mem 101811K, worker delay 1/250 (0 ms, 0 us, 126: AAAAAAAAAAAAAAAA).
Flows: active 686309 (peak 689417 reached 0d0h4m ago), mem 101873K, worker delay 1/250 (0 ms, 0 us, 167: AAAAAAAAAAAAAAAA).

@hotid
Copy link
Author

hotid commented Jun 2, 2014

Впрочем, как и ожидалось, полностью это проблему решить не может, и иногда мы таки прерываемся по spin_trylock:

Flows: active 685658 (peak 685947 reached 0d0h0m ago), mem 101777K, worker delay 1/250 (0 ms, 0 us, 209: AAAATAAAAAAAAAAA).
...
Flows: active 688696 (peak 690964 reached 0d0h0m ago), mem 102228K, worker delay 1/250 (0 ms, 0 us, 237: ATAAAAAAAAAAAAAA).

@hotid
Copy link
Author

hotid commented Jun 2, 2014

root@Cifra-NAT-10G:~/nasscripts# while true; do cat /proc/net/stat/ipt_netflow | grep Flows:;sleep 1; done                                                                                           Flows: active 8388608 (peak 8388610 reached 0d0h25m ago), mem 1245184K, worker delay 1/250 (1960 ms, 1372000 us, 27823: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h25m ago), mem 1245184K, worker delay 1/250 (3008 ms, 1372000 us, 39291: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h25m ago), mem 1245184K, worker delay 1/250 (612 ms, 3504000 us, 8702: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h25m ago), mem 1245184K, worker delay 1/250 (1636 ms, 3504000 us, 23471: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h26m ago), mem 1245184K, worker delay 1/250 (2680 ms, 3504000 us, 26910: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h26m ago), mem 1245184K, worker delay 1/250 (3720 ms, 3504000 us, 45339: ETTTTTTTTTTTTTTT).
Flows: active 8388482 (peak 8388610 reached 0d0h26m ago), mem 1245165K, worker delay 1/250 (4768 ms, 3504000 us, 58962: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h26m ago), mem 1245184K, worker delay 1/250 (5828 ms, 3504000 us, 88293: ETTTTTTTTTTTTTTT).
Flows: active 8388577 (peak 8388610 reached 0d0h26m ago), mem 1245179K, worker delay 1/250 (80 ms, 6776000 us, 2525: ETTTTTTTTTTTTTTT).
Flows: active 8388608 (peak 8388610 reached 0d0h26m ago), mem 1245184K, worker delay 1/250 (1144 ms, 6776000 us, 11559: ETTTTTTTTTTTTTTT).

После перезагрузки модуля:

Flows: active 18778 (peak 18778 reached 0d0h0m ago), mem 2787K, worker delay 25/250 (282092356 ms, 0 us, 0: ).
Flows: active 124226 (peak 124227 reached 0d0h0m ago), mem 18439K, worker delay 25/250 (32 ms, 0 us, 1: AAAAAAAAAAA).
Flows: active 205165 (peak 205166 reached 0d0h0m ago), mem 30454K, worker delay 25/250 (60 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 278594 (peak 278594 reached 0d0h0m ago), mem 41353K, worker delay 25/250 (56 ms, 4000 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 346448 (peak 346448 reached 0d0h0m ago), mem 51425K, worker delay 25/250 (68 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 410656 (peak 410656 reached 0d0h0m ago), mem 60956K, worker delay 25/250 (84 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 473820 (peak 473820 reached 0d0h0m ago), mem 70332K, worker delay 25/250 (12 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 528905 (peak 528905 reached 0d0h0m ago), mem 78509K, worker delay 25/250 (20 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 583984 (peak 583984 reached 0d0h0m ago), mem 86685K, worker delay 25/250 (60 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 638575 (peak 638576 reached 0d0h0m ago), mem 94788K, worker delay 25/250 (92 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 694827 (peak 694827 reached 0d0h0m ago), mem 103138K, worker delay 25/250 (20 ms, 20000 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 745999 (peak 745999 reached 0d0h0m ago), mem 110734K, worker delay 25/250 (44 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 799401 (peak 799401 reached 0d0h0m ago), mem 118661K, worker delay 25/250 (56 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 851208 (peak 851208 reached 0d0h0m ago), mem 126351K, worker delay 25/250 (16 ms, 4000 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 907600 (peak 907600 reached 0d0h0m ago), mem 134721K, worker delay 25/250 (20 ms, 0 us, 1: AAAAAAAAAAAAAAAA).
Flows: active 914964 (peak 917306 reached 0d0h0m ago), mem 135814K, worker delay 3/250 (60 ms, 4000 us, 3712: ETTTAAAAAAAAAAAA).
Flows: active 927629 (peak 928931 reached 0d0h0m ago), mem 137694K, worker delay 1/250 (848 ms, 228000 us, 33496: ETTTTAAAAAAAAAAA).
Flows: active 912400 (peak 928931 reached 0d0h0m ago), mem 135434K, worker delay 1/250 (536 ms, 36000 us, 29501: ETTTTTTTTTTAAAAA).
Flows: active 905148 (peak 928931 reached 0d0h0m ago), mem 134357K, worker delay 1/250 (4 ms, 8000 us, 168: EAAAAAAAAAAAAAAA).
Flows: active 911222 (peak 928931 reached 0d0h0m ago), mem 135259K, worker delay 1/250 (212 ms, 248000 us, 8831: ETTTAAATAAAAAAAT).
Flows: active 951308 (peak 951308 reached 0d0h0m ago), mem 141209K, worker delay 1/250 (1260 ms, 248000 us, 19304: ETTTAAATAAAAAAAT).
Flows: active 951959 (peak 961488 reached 0d0h0m ago), mem 141306K, worker delay 1/250 (184 ms, 320000 us, 14067: ETTTTTTAAATAAAAA).
Flows: active 932262 (peak 961488 reached 0d0h0m ago), mem 138382K, worker delay 1/250 (24 ms, 288000 us, 1914: ETTTTTTTTTTAAATA).
Flows: active 955804 (peak 961488 reached 0d0h0m ago), mem 141877K, worker delay 1/250 (224 ms, 96000 us, 11854: ETTTTTTTTTTTTAAA).
Flows: active 944999 (peak 961488 reached 0d0h0m ago), mem 140273K, worker delay 1/250 (16 ms, 184000 us, 390: ETTTTTTTTTTTTTTT).
Flows: active 952797 (peak 961488 reached 0d0h0m ago), mem 141430K, worker delay 1/250 (380 ms, 236000 us, 13400: ETTTTTTTTTTTTTTT).
Flows: active 969347 (peak 969578 reached 0d0h0m ago), mem 143887K, worker delay 1/250 (4 ms, 164000 us, 448: ETTTTTTTTTTTTTTT).
Flows: active 964912 (peak 972202 reached 0d0h0m ago), mem 143229K, worker delay 1/250 (452 ms, 48000 us, 24060: ETTTTTTTTTTTTTTT).
Flows: active 985992 (peak 986049 reached 0d0h0m ago), mem 146358K, worker delay 1/250 (664 ms, 384000 us, 14720: ETTTTTTTTTTTTTTT).
Flows: active 1000810 (peak 1005057 reached 0d0h0m ago), mem 148557K, worker delay 1/250 (36 ms, 1700000 us, 1899: ETTTTTTTTTTTTTTT).
Flows: active 1012459 (peak 1012494 reached 0d0h0m ago), mem 150286K, worker delay 1/250 (784 ms, 304000 us, 26525: ETTTTTTTTTTTTTTT).
Flows: active 1019417 (peak 1019548 reached 0d0h0m ago), mem 151319K, worker delay 1/250 (128 ms, 372000 us, 4315: ETTTTTTTTTTTTTTT).
Flows: active 1046644 (peak 1046644 reached 0d0h0m ago), mem 155361K, worker delay 1/250 (1160 ms, 372000 us, 26227: ETTTTTTTTTTTTTTT).

@aabc
Copy link
Owner

aabc commented Jun 2, 2014

Под нагрузкой-то TTTTT? Вы так ни разу и не показали.

@aabc
Copy link
Owner

aabc commented Jun 3, 2014

Исправил проблему с trylock 60830da, потоки больше не должны накапливаться. Пожалуйста, постестируйте под нагрузкой. Если всё ок, то следующая проблема которая упоминалась и которая требует решения - снижение количества локов, для снижения нагрузки на процессор при огромном трафике (10Gbit).

Проблему с локами/нагрузкой предлагаю обсуждать в отдельном тикете (#10), а то этот стал уже слишком большой и, в общем-то, этот тикет, в том виде как он заявлен - (должен быть уже) решён. А этот, если решение вас устраивает, закрыть.

Спасибо за помощь!

@aabc aabc self-assigned this Jun 3, 2014
@aabc aabc added bug labels Jun 3, 2014
@hotid
Copy link
Author

hotid commented Jun 3, 2014

Под нагрузкой-то TTTTT? Вы так ни разу и не показали.

Так #8 (comment) - это и есть под нагрузкой.

Собрал последнюю версию, запустил:

Flows: active 581 (peak 581 reached 0d0h0m ago), mem 86K, worker delay 25/250 (51519592 ms, 0 us, 0/0).
Flows: active 68690 (peak 68690 reached 0d0h0m ago), mem 10196K, worker delay 25/250 (8 ms, 0 us, 1/0).
Flows: active 117354 (peak 117354 reached 0d0h0m ago), mem 17419K, worker delay 25/250 (12 ms, 0 us, 1/0).
Flows: active 163950 (peak 163950 reached 0d0h0m ago), mem 24336K, worker delay 25/250 (12 ms, 0 us, 1/0).
Flows: active 204966 (peak 204966 reached 0d0h0m ago), mem 30424K, worker delay 25/250 (16 ms, 0 us, 1/0).
Flows: active 244613 (peak 244613 reached 0d0h0m ago), mem 36309K, worker delay 25/250 (20 ms, 0 us, 1/0).
Flows: active 282726 (peak 282726 reached 0d0h0m ago), mem 41967K, worker delay 25/250 (24 ms, 0 us, 1/0).
Flows: active 316754 (peak 316754 reached 0d0h0m ago), mem 47018K, worker delay 25/250 (28 ms, 0 us, 1/0).
Flows: active 349324 (peak 349324 reached 0d0h0m ago), mem 51852K, worker delay 25/250 (32 ms, 0 us, 1/0).
Flows: active 381475 (peak 381475 reached 0d0h0m ago), mem 56625K, worker delay 25/250 (36 ms, 0 us, 1/0).
Flows: active 413894 (peak 413894 reached 0d0h0m ago), mem 61437K, worker delay 25/250 (40 ms, 0 us, 1/0).
Flows: active 446036 (peak 446036 reached 0d0h0m ago), mem 66208K, worker delay 25/250 (44 ms, 0 us, 1/0).
Flows: active 477431 (peak 477431 reached 0d0h0m ago), mem 70868K, worker delay 25/250 (44 ms, 0 us, 1/0).
Flows: active 509235 (peak 509235 reached 0d0h0m ago), mem 75589K, worker delay 25/250 (44 ms, 0 us, 1/0).
Flows: active 540799 (peak 540799 reached 0d0h0m ago), mem 80274K, worker delay 25/250 (48 ms, 0 us, 1/0).
Flows: active 572319 (peak 572319 reached 0d0h0m ago), mem 84953K, worker delay 20/250 (52 ms, 0 us, 155/0).
Flows: active 570422 (peak 573282 reached 0d0h0m ago), mem 84672K, worker delay 1/250 (0 ms, 0 us, 99/0).
Flows: active 571201 (peak 573282 reached 0d0h0m ago), mem 84787K, worker delay 1/250 (0 ms, 0 us, 155/0).
Flows: active 570999 (peak 573282 reached 0d0h0m ago), mem 84757K, worker delay 1/250 (0 ms, 0 us, 139/0).
Flows: active 570883 (peak 573282 reached 0d0h0m ago), mem 84740K, worker delay 1/250 (0 ms, 0 us, 151/2).
Flows: active 571844 (peak 573282 reached 0d0h0m ago), mem 84883K, worker delay 1/250 (0 ms, 0 us, 129/2).
Flows: active 572717 (peak 573282 reached 0d0h0m ago), mem 85012K, worker delay 1/250 (0 ms, 0 us, 171/3).
Flows: active 573705 (peak 573756 reached 0d0h0m ago), mem 85159K, worker delay 1/250 (0 ms, 0 us, 154/0).
Flows: active 575932 (peak 576091 reached 0d0h0m ago), mem 85489K, worker delay 1/250 (0 ms, 0 us, 99/1).
Flows: active 577013 (peak 577209 reached 0d0h0m ago), mem 85650K, worker delay 1/250 (0 ms, 0 us, 119/1).
Flows: active 577037 (peak 577281 reached 0d0h0m ago), mem 85653K, worker delay 1/250 (0 ms, 0 us, 119/0).
Flows: active 578300 (peak 578568 reached 0d0h0m ago), mem 85841K, worker delay 1/250 (0 ms, 0 us, 83/0).
Flows: active 579024 (peak 579024 reached 0d0h0m ago), mem 85948K, worker delay 1/250 (4 ms, 0 us, 106/1).
Flows: active 579925 (peak 580213 reached 0d0h0m ago), mem 86082K, worker delay 1/250 (0 ms, 0 us, 121/0).
Flows: active 580201 (peak 580606 reached 0d0h0m ago), mem 86123K, worker delay 1/250 (0 ms, 0 us, 135/0).
Flows: active 580228 (peak 580818 reached 0d0h0m ago), mem 86127K, worker delay 1/250 (0 ms, 0 us, 121/2).
Flows: active 580524 (peak 580893 reached 0d0h0m ago), mem 86171K, worker delay 1/250 (0 ms, 0 us, 128/2).
Flows: active 581323 (peak 581728 reached 0d0h0m ago), mem 86290K, worker delay 1/250 (0 ms, 0 us, 120/3).
Flows: active 580882 (peak 581728 reached 0d0h0m ago), mem 86224K, worker delay 1/250 (0 ms, 0 us, 107/1).
Flows: active 580720 (peak 581728 reached 0d0h0m ago), mem 86200K, worker delay 1/250 (0 ms, 0 us, 116/0).
Flows: active 579705 (peak 581728 reached 0d0h0m ago), mem 86049K, worker delay 1/250 (0 ms, 0 us, 112/0).
Flows: active 580185 (peak 581728 reached 0d0h0m ago), mem 86121K, worker delay 1/250 (0 ms, 0 us, 150/0).
Flows: active 580545 (peak 581728 reached 0d0h0m ago), mem 86174K, worker delay 1/250 (0 ms, 0 us, 113/0).
Flows: active 581132 (peak 581728 reached 0d0h0m ago), mem 86261K, worker delay 1/250 (0 ms, 0 us, 96/0).
Flows: active 579721 (peak 581728 reached 0d0h0m ago), mem 86052K, worker delay 1/250 (0 ms, 0 us, 128/2).
Flows: active 579687 (peak 581728 reached 0d0h0m ago), mem 86047K, worker delay 1/250 (0 ms, 0 us, 138/1).
Flows: active 579130 (peak 581728 reached 0d0h0m ago), mem 85964K, worker delay 1/250 (0 ms, 0 us, 136/1).
Flows: active 579163 (peak 581728 reached 0d0h0m ago), mem 85969K, worker delay 1/250 (0 ms, 0 us, 117/2).
Flows: active 578661 (peak 581728 reached 0d0h0m ago), mem 85894K, worker delay 1/250 (0 ms, 0 us, 89/0).
Flows: active 578725 (peak 581728 reached 0d0h0m ago), mem 85904K, worker delay 1/250 (4 ms, 0 us, 115/1).
Flows: active 578192 (peak 581728 reached 0d0h0m ago), mem 85825K, worker delay 1/250 (0 ms, 0 us, 110/0).
Flows: active 578495 (peak 581728 reached 0d0h0m ago), mem 85870K, worker delay 1/250 (0 ms, 0 us, 116/0).
Flows: active 578372 (peak 581728 reached 0d0h0m ago), mem 85852K, worker delay 1/250 (0 ms, 0 us, 157/0).
Flows: active 578465 (peak 581728 reached 0d0h0m ago), mem 85865K, worker delay 1/250 (0 ms, 0 us, 124/1).
Flows: active 579038 (peak 581728 reached 0d0h0m ago), mem 85950K, worker delay 1/250 (0 ms, 0 us, 136/1).
Flows: active 580782 (peak 581728 reached 0d0h0m ago), mem 86209K, worker delay 1/250 (0 ms, 0 us, 132/0).
Flows: active 580417 (peak 581728 reached 0d0h0m ago), mem 86155K, worker delay 1/250 (0 ms, 0 us, 131/0).
Flows: active 581250 (peak 581728 reached 0d0h0m ago), mem 86279K, worker delay 1/250 (0 ms, 0 us, 121/1).
Flows: active 580575 (peak 581728 reached 0d0h0m ago), mem 86179K, worker delay 1/250 (0 ms, 0 us, 125/2).
Flows: active 581484 (peak 581728 reached 0d0h0m ago), mem 86314K, worker delay 1/250 (4 ms, 0 us, 160/2).
Flows: active 581552 (peak 582093 reached 0d0h0m ago), mem 86324K, worker delay 1/250 (0 ms, 0 us, 127/0).
Flows: active 581711 (peak 582093 reached 0d0h0m ago), mem 86347K, worker delay 1/250 (0 ms, 0 us, 129/0).
Flows: active 580956 (peak 582310 reached 0d0h0m ago), mem 86235K, worker delay 1/250 (0 ms, 0 us, 147/1).
Flows: active 580389 (peak 582310 reached 0d0h0m ago), mem 86151K, worker delay 1/250 (0 ms, 0 us, 112/0).
Flows: active 580194 (peak 582310 reached 0d0h0m ago), mem 86122K, worker delay 1/250 (0 ms, 0 us, 120/0).
Flows: active 580814 (peak 582310 reached 0d0h0m ago), mem 86214K, worker delay 1/250 (0 ms, 0 us, 134/0).
Flows: active 581527 (peak 582310 reached 0d0h0m ago), mem 86320K, worker delay 1/250 (0 ms, 0 us, 113/1).
Flows: active 583430 (peak 583716 reached 0d0h0m ago), mem 86602K, worker delay 1/250 (0 ms, 0 us, 164/0).
Flows: active 583881 (peak 584252 reached 0d0h0m ago), mem 86669K, worker delay 1/250 (0 ms, 0 us, 143/1).
Flows: active 584698 (peak 584952 reached 0d0h0m ago), mem 86791K, worker delay 1/250 (0 ms, 0 us, 172/0).
Flows: active 584353 (peak 585164 reached 0d0h0m ago), mem 86739K, worker delay 1/250 (0 ms, 0 us, 139/3).
Flows: active 584427 (peak 585164 reached 0d0h0m ago), mem 86750K, worker delay 1/250 (0 ms, 0 us, 121/1).
Flows: active 583300 (peak 585164 reached 0d0h0m ago), mem 86583K, worker delay 1/250 (4 ms, 0 us, 115/3).
Flows: active 583930 (peak 585164 reached 0d0h0m ago), mem 86677K, worker delay 1/250 (4 ms, 0 us, 103/1).
Flows: active 583296 (peak 585164 reached 0d0h0m ago), mem 86583K, worker delay 1/250 (4 ms, 0 us, 120/2).
Flows: active 582297 (peak 585164 reached 0d0h0m ago), mem 86434K, worker delay 1/250 (0 ms, 0 us, 140/3).
Flows: active 582423 (peak 585164 reached 0d0h0m ago), mem 86453K, worker delay 1/250 (0 ms, 0 us, 143/2).
Flows: active 583366 (peak 585164 reached 0d0h0m ago), mem 86593K, worker delay 1/250 (0 ms, 0 us, 147/0).
Flows: active 584195 (peak 585164 reached 0d0h0m ago), mem 86716K, worker delay 1/250 (0 ms, 0 us, 123/0).
Flows: active 585002 (peak 585164 reached 0d0h0m ago), mem 86836K, worker delay 1/250 (0 ms, 0 us, 113/1).
Flows: active 584126 (peak 585355 reached 0d0h0m ago), mem 86706K, worker delay 1/250 (0 ms, 0 us, 138/3).
Flows: active 583421 (peak 585355 reached 0d0h0m ago), mem 86601K, worker delay 1/250 (0 ms, 0 us, 154/2).
Flows: active 582269 (peak 585355 reached 0d0h0m ago), mem 86430K, worker delay 1/250 (0 ms, 0 us, 121/0).
Flows: active 581640 (peak 585355 reached 0d0h0m ago), mem 86337K, worker delay 1/250 (0 ms, 0 us, 137/1).
Flows: active 580347 (peak 585355 reached 0d0h0m ago), mem 86145K, worker delay 1/250 (0 ms, 0 us, 135/3).
Flows: active 579324 (peak 585355 reached 0d0h0m ago), mem 85993K, worker delay 1/250 (0 ms, 0 us, 167/3).
Flows: active 579538 (peak 585355 reached 0d0h0m ago), mem 86025K, worker delay 1/250 (0 ms, 0 us, 112/0).
Flows: active 580158 (peak 585355 reached 0d0h0m ago), mem 86117K, worker delay 1/250 (0 ms, 0 us, 141/1).
Flows: active 580901 (peak 585355 reached 0d0h0m ago), mem 86227K, worker delay 1/250 (4 ms, 0 us, 85/0).
Flows: active 581257 (peak 585355 reached 0d0h0m ago), mem 86280K, worker delay 1/250 (4 ms, 0 us, 131/3).
Flows: active 581460 (peak 585355 reached 0d0h0m ago), mem 86310K, worker delay 1/250 (0 ms, 0 us, 95/0).
Flows: active 581251 (peak 585355 reached 0d0h0m ago), mem 86279K, worker delay 1/250 (0 ms, 0 us, 119/0).
Flows: active 580703 (peak 585355 reached 0d0h0m ago), mem 86198K, worker delay 1/250 (0 ms, 0 us, 134/4).
Flows: active 581170 (peak 585355 reached 0d0h0m ago), mem 86267K, worker delay 1/250 (0 ms, 0 us, 134/0).
Flows: active 580292 (peak 585355 reached 0d0h0m ago), mem 86137K, worker delay 1/250 (0 ms, 0 us, 122/0).

Вечером посмотрим под нагрузкой. Вам спасибо!

@hotid
Copy link
Author

hotid commented Jun 3, 2014

Пока вроде бы всё нормально, однако некоторое время назад нагрузка на процессоры как-то странно стала разделяться. Обратите внимание на drops и загрузку 3-го ядра:

root@Cifra-NAT-10G:~/ixgbe-3.21.2/src# cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-97-g60830da-dirty, srcversion 8960CEEF1E0F51627C664F4
Flows: active 859084 (peak 881089 reached 0d0h0m ago), mem 127520K, worker delay 1/250 (0 ms, 0 us, 206/2).
Hash: size 33554432 (mem 262144K), metric 1.01 [1.00, 1.00, 1.00]. MemTraf: 59503678 pkt, 49028604 K (pdu 526, 44539), Out 10462317 pkt, 7160880 K.
Rate: 9980462910 bits/sec, 1523584 packets/sec; Avg 1 min: 7746487321 bps, 1177587 pps; 5 min: 2478352384 bps, 376670 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 1211109 67645092 2320378 [1.01],    0 33280    0    0, sock:      0 0 0, 0 K, traffic: 69965469, 54872 MB, drop: 10461791, 7160837 K
cpu0  stat: 195050 8509739 289712 [1.02],    0 7136    0    0, sock:      0 0 0, 0 K, traffic: 8799451, 6784 MB, drop: 0, 0 K
cpu1  stat: 146786 8223944 291926 [1.01],    0 4864    0    0, sock:      0 0 0, 0 K, traffic: 8515870, 6712 MB, drop: 0, 0 K
cpu2  stat: 140499 8178985 289725 [1.01],    0 7036    0    0, sock:      0 0 0, 0 K, traffic: 8468710, 6623 MB, drop: 10461791, 7160837 K
cpu3  stat: 147165 8691067 289706 [1.01],    0  736    0    0, sock:      0 0 0, 0 K, traffic: 8980773, 7257 MB, drop: 0, 0 K
cpu4  stat: 165979 8966971 295797 [1.01],    0 9384    0    0, sock:      0 0 0, 0 K, traffic: 9262768, 7795 MB, drop: 0, 0 K
cpu5  stat: 120512 8281086 286316 [1.01],    0  162    0    0, sock:      0 0 0, 0 K, traffic: 8567402, 6665 MB, drop: 0, 0 K
cpu6  stat: 112513 8688432 286504 [1.01],    0 3169    0    0, sock:      0 0 0, 0 K, traffic: 8974936, 6857 MB, drop: 0, 0 K
cpu7  stat: 182605 8104883 290692 [1.02],    0  793    0    0, sock:      0 0 0, 0 K, traffic: 8395575, 6177 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608

10:10:52 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:10:53 PM  all    0.00    0.00    0.00    0.00    0.00   12.11    0.00    0.00   87.89
10:10:53 PM    0    0.00    0.00    0.00    0.00    0.00    2.00    0.00    0.00   98.00
10:10:53 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:10:53 PM    2    0.00    0.00    0.00    0.00    0.00   51.49    0.00    0.00   48.51
10:10:53 PM    3    0.00    0.00    0.00    0.00    0.00    2.13    0.00    0.00   97.87
10:10:53 PM    4    0.00    0.00    0.00    0.00    0.00    2.00    0.00    0.00   98.00
10:10:53 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:10:53 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:10:53 PM    7    0.00    0.00    0.00    0.00    0.00    2.00    0.00    0.00   98.00

10:10:53 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:10:54 PM  all    0.00    0.00    0.00    0.25    0.00   14.96    0.00    0.00   84.79
10:10:54 PM    0    0.00    0.00    0.00    0.00    0.00    4.76    0.00    0.00   95.24
10:10:54 PM    1    0.00    0.00    0.00    0.00    0.00    2.17    0.00    0.00   97.83
10:10:54 PM    2    0.00    0.00    0.00    0.00    0.00   55.91    0.00    0.00   44.09
10:10:54 PM    3    0.00    0.00    0.00    0.00    0.00    6.82    0.00    0.00   93.18
10:10:54 PM    4    0.00    0.00    0.00    0.00    0.00    2.44    0.00    0.00   97.56
10:10:54 PM    5    0.00    0.00    0.00    2.17    0.00    2.17    0.00    0.00   95.65
10:10:54 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:10:54 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

К сожалению, не отследил в какой момент это произошло.

Видимо об этом и говорил dazgluk в #8 (comment)

Распределение прерываний:

  86:     466544          0          0          0          0          0          0          0   PCI-MSI-edge      eth1-TxRx-0
  87:         22     381028          0          0          0          0          0          0   PCI-MSI-edge      eth1-TxRx-1
  88:         23          0     434689          0          0          0          0          0   PCI-MSI-edge      eth1-TxRx-2
  89:         23          0          0     527349          0          0          0          0   PCI-MSI-edge      eth1-TxRx-3
  90:         23          0          0          0     404753          0          0          0   PCI-MSI-edge      eth1-TxRx-4
  91:         23          0          0          0          0     520096          0          0   PCI-MSI-edge      eth1-TxRx-5
  92:         23          0          0          0          0          0     458161          0   PCI-MSI-edge      eth1-TxRx-6
  93:         23          0          0          0          0          0          0     494976   PCI-MSI-edge      eth1-TxRx-7
  94:          2          0          0          0          0          0          0          0   PCI-MSI-edge      eth1
  95:     352034          0          0          0          0          0          0          0   PCI-MSI-edge      eth0-TxRx-0
  96:          3     346123          0          0          0          0          0          0   PCI-MSI-edge      eth0-TxRx-1
  97:          3          0     354316          0          0          0          0          0   PCI-MSI-edge      eth0-TxRx-2
  98:          3          0          0     354715          0          0          0          0   PCI-MSI-edge      eth0-TxRx-3
  99:          3          0          0          0     339317          0          0          0   PCI-MSI-edge      eth0-TxRx-4
 100:          3          0          0          0          0     368751          0          0   PCI-MSI-edge      eth0-TxRx-5
 101:          3          0          0          0          0          0     341587          0   PCI-MSI-edge      eth0-TxRx-6
 102:          3          0          0          0          0          0          0     372734   PCI-MSI-edge      eth0-TxRx-7

Работа экспорта под нагрузкой:

Flows: active 856262 (peak 916437 reached 0d0h0m ago), mem 127101K, worker delay 2/250 (0 ms, 0 us, 17/0).
Flows: active 862792 (peak 916437 reached 0d0h0m ago), mem 128070K, worker delay 1/250 (148 ms, 140000 us, 5965/161).
Flows: active 865676 (peak 916437 reached 0d0h0m ago), mem 128498K, worker delay 1/250 (100 ms, 168000 us, 8789/267).
Flows: active 881071 (peak 916437 reached 0d0h0m ago), mem 130783K, worker delay 1/250 (288 ms, 404000 us, 19545/527).
Flows: active 881902 (peak 916437 reached 0d0h0m ago), mem 130907K, worker delay 1/250 (472 ms, 452000 us, 22085/581).
Flows: active 872187 (peak 916437 reached 0d0h0m ago), mem 129465K, worker delay 1/250 (116 ms, 296000 us, 13975/370).
Flows: active 876054 (peak 916437 reached 0d0h0m ago), mem 130039K, worker delay 1/250 (392 ms, 388000 us, 18810/560).
Flows: active 864680 (peak 916437 reached 0d0h0m ago), mem 128350K, worker delay 1/250 (16 ms, 128000 us, 6885/153).
Flows: active 858057 (peak 916437 reached 0d0h0m ago), mem 127367K, worker delay 1/250 (0 ms, 0 us, 212/1).
Flows: active 865465 (peak 916437 reached 0d0h0m ago), mem 128467K, worker delay 1/250 (108 ms, 88000 us, 4610/138).
Flows: active 867533 (peak 916437 reached 0d0h0m ago), mem 128774K, worker delay 1/250 (20 ms, 52000 us, 3083/94).
Flows: active 865736 (peak 916437 reached 0d0h0m ago), mem 128507K, worker delay 1/250 (0 ms, 0 us, 224/0).
Flows: active 866896 (peak 916437 reached 0d0h0m ago), mem 128679K, worker delay 1/250 (0 ms, 0 us, 154/3).
Flows: active 874545 (peak 916437 reached 0d0h0m ago), mem 129815K, worker delay 1/250 (160 ms, 152000 us, 7307/206).
Flows: active 881159 (peak 916437 reached 0d0h0m ago), mem 130797K, worker delay 1/250 (128 ms, 268000 us, 13301/374).
Flows: active 874362 (peak 916437 reached 0d0h0m ago), mem 129788K, worker delay 1/250 (228 ms, 272000 us, 13807/371).
Flows: active 874361 (peak 916437 reached 0d0h0m ago), mem 129787K, worker delay 1/250 (60 ms, 216000 us, 10926/317).
Flows: active 882705 (peak 916437 reached 0d0h0m ago), mem 131026K, worker delay 1/250 (148 ms, 396000 us, 19012/564).

@hotid
Copy link
Author

hotid commented Jun 3, 2014

Оппа, пока писал - загрузка всех ядер ушла в 100%:

10:17:42 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:17:43 PM  all    0.00    0.00    0.97    0.00    0.00   98.20    0.00    0.00    0.83
10:17:43 PM    0    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:43 PM    1    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:43 PM    2    0.00    0.00    8.00    0.00    0.00   92.00    0.00    0.00    0.00
10:17:43 PM    3    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:43 PM    4    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:43 PM    5    0.00    0.00    0.00    0.00    0.00   92.73    0.00    0.00    7.27
10:17:43 PM    6    0.00    0.00    0.00    0.00    0.00   98.86    0.00    0.00    1.14
10:17:43 PM    7    0.00    0.00    0.00    0.00    0.00   98.77    0.00    0.00    1.23

10:17:43 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:17:44 PM  all    0.00    0.00    1.38    0.00    0.00   96.33    0.00    0.00    2.29
10:17:44 PM    0    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:44 PM    1    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:44 PM    2    0.00    0.00    8.00    0.00    0.00   92.00    0.00    0.00    0.00
10:17:44 PM    3    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:44 PM    4    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:44 PM    5    0.00    0.00    1.92    0.00    0.00   88.46    0.00    0.00    9.62
10:17:44 PM    6    0.00    0.00    0.00    0.00    0.00   98.84    0.00    0.00    1.16
10:17:44 PM    7    0.00    0.00    0.00    0.00    0.00   52.38    0.00    0.00   47.62

10:17:44 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:17:45 PM  all    0.00    0.00    1.14    0.00    0.00   98.00    0.00    0.00    0.86
10:17:45 PM    0    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:45 PM    1    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:45 PM    2    0.00    0.00    7.92    0.00    0.00   92.08    0.00    0.00    0.00
10:17:45 PM    3    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:45 PM    4    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:45 PM    5    0.00    0.00    0.00    0.00    0.00   96.36    0.00    0.00    3.64
10:17:45 PM    6    0.00    0.00    0.00    0.00    0.00  100.00    0.00    0.00    0.00
10:17:45 PM    7    0.00    0.00    0.00    0.00    0.00   90.00    0.00    0.00   10.00
 cat /proc/net/stat/ipt_netflow
ipt_NETFLOW version v1.8-97-g60830da-dirty, srcversion 8960CEEF1E0F51627C664F4
Flows: active 873036 (peak 916437 reached 0d0h3m ago), mem 129591K, worker delay 1/250 (160 ms, 436000 us, 20666/668).
Hash: size 33554432 (mem 262144K), metric 1.02 [1.00, 1.00, 1.00]. MemTraf: 270344139 pkt, 222093547 K (pdu 67, 15000), Out 166342788 pkt, 127319962 K.
Rate: 9442803266 bits/sec, 1448180 packets/sec; Avg 1 min: 9556376469 bps, 1457942 pps; 5 min: 8135874183 bps, 1241011 pps
cpu#  stat: <search found new [metric], trunc frag alloc maxflows>, sock: <ok fail cberr, bytes>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total stat: 8838952 422630787 14056076 [1.02],    0 140463    0    0, sock:      0 0 0, 0 K, traffic: 436686860, 341224 MB, drop: 166342721, 127319947 K
cpu0  stat: 1121645 53354745 1754391 [1.02],    0 33223    0    0, sock:      0 0 0, 0 K, traffic: 55109136, 41643 MB, drop: 0, 0 K
cpu1  stat: 1170670 53665685 1748525 [1.02],    0 20462    0    0, sock:      0 0 0, 0 K, traffic: 55414209, 43746 MB, drop: 0, 0 K
cpu2  stat: 1093248 51551866 1755340 [1.02],    0 43241    0    0, sock:      0 0 0, 0 K, traffic: 53307205, 42057 MB, drop: 166342721, 127319947 K
cpu3  stat: 1052603 52869209 1763137 [1.01],    0 9392    0    0, sock:      0 0 0, 0 K, traffic: 54632345, 43108 MB, drop: 0, 0 K
cpu4  stat: 1295366 53778508 1743196 [1.02],    0 6708    0    0, sock:      0 0 0, 0 K, traffic: 55521704, 43449 MB, drop: 0, 0 K
cpu5  stat: 1077433 52038222 1769950 [1.02],    0 8484    0    0, sock:      0 0 0, 0 K, traffic: 53808171, 43016 MB, drop: 0, 0 K
cpu6  stat: 1005581 53609283 1754145 [1.01],    0 17070    0    0, sock:      0 0 0, 0 K, traffic: 55363427, 43004 MB, drop: 0, 0 K
cpu7  stat: 1022407 51763295 1767393 [1.01],    0 1883    0    0, sock:      0 0 0, 0 K, traffic: 53530688, 41198 MB, drop: 0, 0 K
Protocol version 5 (netflow). Timeouts: active 1800, inactive 15. Maxflows 8388608
root@Cifra-NAT-10G:~/ipt-netflow# while true; do cat /proc/net/stat/ipt_netflow | grep Flows:;sleep 1; done
Flows: active 866203 (peak 916437 reached 0d0h3m ago), mem 128577K, worker delay 1/250 (160 ms, 424000 us, 20046/579).
Flows: active 859314 (peak 916437 reached 0d0h4m ago), mem 127554K, worker delay 1/250 (80 ms, 224000 us, 11875/345).
Flows: active 855688 (peak 916437 reached 0d0h4m ago), mem 127016K, worker delay 1/250 (20 ms, 104000 us, 6024/182).
Flows: active 850566 (peak 916437 reached 0d0h4m ago), mem 126255K, worker delay 1/250 (20 ms, 80000 us, 4208/86).
Flows: active 856687 (peak 916437 reached 0d0h4m ago), mem 127164K, worker delay 1/250 (52 ms, 128000 us, 6907/200).
Flows: active 868708 (peak 916437 reached 0d0h4m ago), mem 128948K, worker delay 1/250 (36 ms, 452000 us, 21260/574).
Flows: active 875177 (peak 916437 reached 0d0h4m ago), mem 129909K, worker delay 1/250 (612 ms, 528000 us, 24665/552).
Flows: active 877325 (peak 916437 reached 0d0h4m ago), mem 130227K, worker delay 1/250 (524 ms, 600000 us, 28487/671).
Flows: active 879123 (peak 916437 reached 0d0h4m ago), mem 130494K, worker delay 1/250 (64 ms, 716000 us, 35721/1076).
Flows: active 871352 (peak 916437 reached 0d0h4m ago), mem 129341K, worker delay 1/250 (364 ms, 768000 us, 37111/1036).
Flows: active 879530 (peak 916437 reached 0d0h4m ago), mem 130555K, worker delay 1/250 (732 ms, 756000 us, 35667/973).
Flows: active 878019 (peak 916437 reached 0d0h4m ago), mem 130330K, worker delay 1/250 (280 ms, 676000 us, 31473/828).
Flows: active 875693 (peak 916437 reached 0d0h4m ago), mem 129985K, worker delay 1/250 (680 ms, 732000 us, 34409/999).
Flows: active 878759 (peak 916437 reached 0d0h4m ago), mem 130440K, worker delay 1/250 (168 ms, 808000 us, 36889/999).
Flows: active 867698 (peak 916437 reached 0d0h4m ago), mem 128798K, worker delay 1/250 (60 ms, 552000 us, 25876/799).
Flows: active 848398 (peak 916437 reached 0d0h4m ago), mem 125934K, worker delay 1/250 (176 ms, 96000 us, 4836/126).
Flows: active 841442 (peak 916437 reached 0d0h4m ago), mem 124901K, worker delay 1/250 (72 ms, 88000 us, 5011/144).
Flows: active 849892 (peak 916437 reached 0d0h4m ago), mem 126155K, worker delay 1/250 (24 ms, 160000 us, 8366/218).
Flows: active 856652 (peak 916437 reached 0d0h4m ago), mem 127159K, worker delay 1/250 (132 ms, 304000 us, 14172/361).
Flows: active 849978 (peak 916437 reached 0d0h4m ago), mem 126168K, worker delay 1/250 (188 ms, 204000 us, 9984/266).

@hotid
Copy link
Author

hotid commented Jun 3, 2014

После перезагрузки модуля:

Flows: active 879166 (peak 909936 reached 0d0h0m ago), mem 130501K, worker delay 1/250 (84 ms, 192000 us, 8999/215).
Flows: active 865939 (peak 909936 reached 0d0h0m ago), mem 128537K, worker delay 1/250 (0 ms, 0 us, 209/4).
Flows: active 865459 (peak 909936 reached 0d0h0m ago), mem 128466K, worker delay 1/250 (0 ms, 0 us, 166/3).
Flows: active 864999 (peak 909936 reached 0d0h0m ago), mem 128398K, worker delay 1/250 (0 ms, 0 us, 177/8).
Flows: active 867426 (peak 909936 reached 0d0h0m ago), mem 128758K, worker delay 1/250 (24 ms, 4000 us, 2053/50).
Flows: active 871641 (peak 909936 reached 0d0h0m ago), mem 129384K, worker delay 1/250 (112 ms, 0 us, 1801/53).
Flows: active 895603 (peak 918201 reached 0d0h0m ago), mem 132941K, worker delay 1/250 (76 ms, 568000 us, 26421/689).
Flows: active 928451 (peak 934820 reached 0d0h0m ago), mem 137816K, worker delay 1/250 (1364 ms, 568000 us, 26421/689).
Flows: active 915456 (peak 940784 reached 0d0h0m ago), mem 135888K, worker delay 1/250 (400 ms, 684000 us, 33155/813).
Flows: active 937576 (peak 941847 reached 0d0h0m ago), mem 139171K, worker delay 1/250 (592 ms, 988000 us, 45455/1307).
Flows: active 944916 (peak 959045 reached 0d0h0m ago), mem 140260K, worker delay 1/250 (468 ms, 1276000 us, 59340/1670).
Flows: active 994880 (peak 994880 reached 0d0h0m ago), mem 147677K, worker delay 1/250 (1580 ms, 1276000 us, 59340/1670).
Flows: active 1046151 (peak 1046151 reached 0d0h0m ago), mem 155288K, worker delay 1/250 (2832 ms, 1276000 us, 59340/1670).
Flows: active 1093208 (peak 1093208 reached 0d0h0m ago), mem 162273K, worker delay 1/250 (3876 ms, 1276000 us, 59340/1670).

Где-то после 850тыс загрузка уходит в 100%. :(

@hotid
Copy link
Author

hotid commented Jun 3, 2014

Поменял чуть-чуть вывод статистики: wk_count/trylock_success/trylock_failed
С #define LOCK_COUNT (1<<8):

Flows: active 829272 (peak 847692 reached 0d0h0m ago), mem 123095K, worker delay 1/250 (108 ms, 100000 us, 5540/5413/127).
Flows: active 833310 (peak 847692 reached 0d0h0m ago), mem 123694K, worker delay 1/250 (192 ms, 180000 us, 8599/8355/244).
Flows: active 828469 (peak 847692 reached 0d0h0m ago), mem 122975K, worker delay 1/250 (40 ms, 80000 us, 4795/4689/106).

#define LOCK_COUNT (1<<16)

Flows: active 855304 (peak 864033 reached 0d0h0m ago), mem 126959K, worker delay 1/250 (68 ms, 56000 us, 2508/2508/0).
Flows: active 861478 (peak 864033 reached 0d0h0m ago), mem 127875K, worker delay 1/250 (52 ms, 148000 us, 7762/7762/0).
Flows: active 855499 (peak 864033 reached 0d0h0m ago), mem 126988K, worker delay 1/250 (124 ms, 124000 us, 6522/6521/1).
Flows: active 858292 (peak 864033 reached 0d0h0m ago), mem 127402K, worker delay 1/250 (124 ms, 188000 us, 9318/9318/0).
Flows: active 861501 (peak 864033 reached 0d0h0m ago), mem 127879K, worker delay 1/250 (64 ms, 188000 us, 9270/9269/1).
Flows: active 860995 (peak 864490 reached 0d0h0m ago), mem 127803K, worker delay 1/250 (144 ms, 224000 us, 10705/10704/1).
Flows: active 856199 (peak 864490 reached 0d0h0m ago), mem 127092K, worker delay 1/250 (84 ms, 128000 us, 6387/6387/0).
Flows: active 855766 (peak 864490 reached 0d0h0m ago), mem 127027K, worker delay 1/250 (36 ms, 124000 us, 6734/6734/0).
Flows: active 851849 (peak 864490 reached 0d0h0m ago), mem 126446K, worker delay 1/250 (24 ms, 56000 us, 3462/3461/1).
Flows: active 852950 (peak 864490 reached 0d0h0m ago), mem 126609K, worker delay 1/250 (88 ms, 88000 us, 5123/5123/0).
Flows: active 852050 (peak 864490 reached 0d0h0m ago), mem 126476K, worker delay 1/250 (16 ms, 92000 us, 5186/5183/3).
Flows: active 852095 (peak 864490 reached 0d0h0m ago), mem 126482K, worker delay 1/250 (68 ms, 88000 us, 4571/4570/1).
Flows: active 852166 (peak 864490 reached 0d0h0m ago), mem 126493K, worker delay 1/250 (120 ms, 108000 us, 5797/5797/0).

Итого. Мне кажется что проблему с экспортом мы полностью победили. Предлагаю проблему закрывать, и попытаться победить lock contention.

@aabc
Copy link
Owner

aabc commented Jun 3, 2014

Да решена. Проблема с нагрузкой не решалась. Пишите lock_stat в новый тикет.

По поводу таких штук:

Flows: active 1093208 (peak 1093208 reached 0d0h0m ago), mem 162273K, worker delay 1/250 (3876 ms, 1276000 us, 59340/1670).

Нужно менять способ экспорта. Чтоб экспорт был не минимум 1/250 в секунду (ограничение schedule_delayed_work), а что-то более равномерное. Можно считать, что это четвертая проблема, которую надо решать (в новом тикете). Возможно даже, что решить эту проблему более важно чем lock contention. Создал тикет #11 на эту тему.

cpu2 stat: 1093248 51551866 1755340 [1.02], 0 43241 0 0, sock: 0 0 0, 0 K, traffic: 53307205, 42057 MB, drop: 166342721, 127319947 K

Вероятно сокет отказывается принимать такое количество данных, к сожалению вы не привели полной статистики - в данном случае по сокетам. Возможно там есть рост err: sndbuf reached или ещё что-то.

@aabc
Copy link
Owner

aabc commented Jun 5, 2014

Приколхозил дамп active flows из памяти. #8 (comment)
http://pastebin.com/msbjQKZB #8 (comment)

Добавил дамп всех потоков по мотивам вашего патча. dab2b4c Включается ./configure --enable-debugfs, затем cat /sys/kernel/debug/netflow_dump. Если не примонтирована debugfs, то mount -t debugfs none /sys/kernel/debug.

Так же есть опция ./configure --disable-conntrack для отключения связей с conntrack.

Формат такой:

1db9,b9 00 -1,2 2,6,16 1.2.3.4:922,5.6.7.8:57436 18,0,81000000 20,4000 3133,5

  • 1db9,b9 хэши
  • 00 первая цифра инактив, вторая актив на экспорт
  • -1,2 in,out интерфейсы
  • 2,6,16 l3proto (2=ipv4 или 10=ipv6),protocol (6=tcp, 17=udp, ...),tos
  • 1.2.3.4:922,5.6.7.8:57436 src:port,dst:port для ipv4
  • или 1234::5678#0,2600::#32768 src#port,dst#port для ipv6
  • 18,0,81000000 tcp_flags,options,tcpoptions в hex
  • 20,4000 packets,bytes
  • 3133,5 jiffies - nf->ts_first, jiffies - nf->ts_last

aabc added a commit that referenced this issue Jun 5, 2014
Thanks to hotid@github for prototype implementation
(github issue #8).

To enable: ./configure --enable-debugfs
To view dump: cat /sys/kernel/debug/netflow_dump
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants