Страница 1 из 1

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-04 17:02:31
Harun
Привет!
Есть два сервера с идентичной аппаратной конфигурацией, сетевые платы Chelsio T520-LL-CR.
Столкнулся с проблемой, при мизерном трафике (<20kpps) ядра CPU прерываниями ложатся в полку, растут задержки, рвутся tcp сессиии. Вот как это выглядит:

Код: Выделить всё

>top -SPH
last pid: 58738;  load averages:  2.29,  2.44,  1.94
1764 processes:19 running, 1691 sleeping, 54 waiting
CPU 0:   0.8% user,  0.0% nice,  4.7% system,  0.0% interrupt, 94.5% idle
CPU 1:   0.4% user,  0.0% nice,  5.9% system,  0.0% interrupt, 93.8% idle
CPU 2:   0.4% user,  0.0% nice,  3.5% system,  0.8% interrupt, 95.3% idle
CPU 3:   0.0% user,  0.0% nice,  3.5% system,  0.0% interrupt, 96.5% idle
CPU 4:   0.0% user,  0.0% nice,  5.1% system,  0.0% interrupt, 94.9% idle
CPU 5:   0.4% user,  0.0% nice,  3.1% system,  0.0% interrupt, 96.5% idle
CPU 6:   0.0% user,  0.0% nice,  0.0% system,  100% interrupt,  0.0% idle
CPU 7:   0.0% user,  0.0% nice,  2.0% system,  0.0% interrupt, 98.0% idle
CPU 8:   0.4% user,  0.0% nice,  2.3% system,  2.0% interrupt, 95.3% idle
CPU 9:   0.0% user,  0.0% nice,  3.1% system,  0.8% interrupt, 96.1% idle
CPU 10:  0.0% user,  0.0% nice,  0.0% system, 99.6% interrupt,  0.4% idle
CPU 11:  0.0% user,  0.0% nice,  0.8% system,  0.0% interrupt, 99.2% idle
CPU 12:  0.4% user,  0.0% nice,  4.3% system,  1.2% interrupt, 94.1% idle
CPU 13:  0.0% user,  0.0% nice,  2.0% system,  0.8% interrupt, 97.3% idle
CPU 14:  0.0% user,  0.0% nice,  3.1% system,  1.2% interrupt, 95.7% idle
CPU 15:  0.0% user,  0.0% nice,  3.5% system,  0.0% interrupt, 96.5% idle
Mem: 7208K Active, 83M Inact, 8352K Laundry, 46G Wired, 999M Buf, 455M Free
ARC: 34G Total, 1693M MFU, 29G MRU, 40M Anon, 3332M Header, 400M Other
     30G Compressed, 45G Uncompressed, 1.53:1 Ratio
Swap: 3788M Total, 97M Used, 3691M Free, 2% Inuse

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
   11 root       155 ki31     0K   256K CPU11  11  68.2H 100.00% idle{idle: cpu11}
   11 root       155 ki31     0K   256K CPU7    7  68.0H 100.00% idle{idle: cpu7}
   12 root       -92    -     0K   896K CPU6    6   2:02 100.00% intr{irq279: t5nex0:1a4}
   11 root       155 ki31     0K   256K CPU4    4  67.9H  96.18% idle{idle: cpu4}
   11 root       155 ki31     0K   256K CPU3    3  68.2H  96.15% idle{idle: cpu3}
   11 root       155 ki31     0K   256K CPU1    1  68.1H  95.61% idle{idle: cpu1}
   11 root       155 ki31     0K   256K CPU2    2  67.8H  95.55% idle{idle: cpu2}
   11 root       155 ki31     0K   256K CPU13  13  68.0H  95.45% idle{idle: cpu13}
   11 root       155 ki31     0K   256K CPU15  15  67.9H  95.44% idle{idle: cpu15}
   11 root       155 ki31     0K   256K CPU5    5  68.0H  95.14% idle{idle: cpu5}
   11 root       155 ki31     0K   256K CPU9    9  68.0H  95.11% idle{idle: cpu9}
   11 root       155 ki31     0K   256K CPU14  14  67.9H  95.04% idle{idle: cpu14}
   11 root       155 ki31     0K   256K CPU12  12  67.8H  94.84% idle{idle: cpu12}
   11 root       155 ki31     0K   256K CPU0    0  68.0H  94.47% idle{idle: cpu0}
   11 root       155 ki31     0K   256K RUN     8  67.9H  94.17% idle{idle: cpu8}
   12 root       -92    -     0K   896K CPU10  10  10:35  91.63% intr{irq265: t5nex0:0a0}
Спасает перезагрузка, ее хватает на сутки-другие, и опять тоже самое.

Код: Выделить всё

>dmesg | grep t5nex
t5nex0: <Chelsio T520-LL-CR> mem 0xfb680000-0xfb6fffff,0xfa000000-0xfaffffff,0xf9ff0000-0xf9ff1fff irq 32 at device 0.4 on pci12
t5nex0: default config file not available, will use the config file on the card's flash instead.
cxl0: <port 0> on t5nex0
cxl1: <port 1> on t5nex0
t5nex0: PCIe gen2 x8, 2 ports, 22 MSI-X interrupts, 55 eq, 21 iq

>uname -a
FreeBSD storage1 11.1-RELEASE-p8 FreeBSD 11.1-RELEASE-p8 #0 r331830M


>ifconfig

cxl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=ec07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    hwaddr 00:07:43:38:60:70
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet 10Gbase-Twinax <full-duplex>
    status: active
cxl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=ec07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    hwaddr 00:07:43:38:60:78
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet 10Gbase-Twinax <full-duplex>
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
    inet 127.0.0.1 netmask 0xff000000
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
    groups: lo
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=ec07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    groups: lagg
    laggproto loadbalance lagghash l2,l3,l4
    laggport: cxl0 flags=4<ACTIVE>
    laggport: cxl1 flags=4<ACTIVE>
interconnect: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
    ether ac:16:2d:b2:17:54
    inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    groups: lagg
    laggproto lacp lagghash l2,l3,l4
    laggport: bce0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: bce1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
lagg0.34: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=680703<RXCSUM,TXCSUM,TSO4,TSO6,LRO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    inet 10.240.33.112 netmask 0xffffff00 broadcast 10.240.33.255
    inet 10.240.33.110 netmask 0xffffffff broadcast 10.240.33.110
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    vlan: 34 vlanpcp: 0 parent interface: lagg0
    groups: vlan
lagg0.35: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=680703<RXCSUM,TXCSUM,TSO4,TSO6,LRO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    inet 10.240.34.112 netmask 0xffffff00 broadcast 10.240.34.255
    inet 10.240.34.110 netmask 0xffffffff broadcast 10.240.34.110
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    vlan: 35 vlanpcp: 0 parent interface: lagg0
    groups: vlan
lagg0.36: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
    options=680703<RXCSUM,TXCSUM,TSO4,TSO6,LRO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 00:07:43:38:60:70
    inet 10.240.35.112 netmask 0xffffff00 broadcast 10.240.35.255
    inet 10.240.35.110 netmask 0xffffffff broadcast 10.240.35.110
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    vlan: 36 vlanpcp: 0 parent interface: lagg0
    groups: vlan


 netstat -ihw1 lagg0
            input        (Total)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
      7.5k     0     0        31M       6.0k     0       903K     0
      9.0k     0     0        11M       8.3k     0       1.4M     0
      3.6k     0     0        11M       3.0k     0       452K     0
       12k     0     0        13M        11k     0       1.8M     0
      3.6k     0     0       7.0M       2.9k     0       474K     0
      3.8k     0     0        11M       3.1k     0       432K     0
      2.7k     0     0       7.7M       2.2k     0       272K     0
      3.0k     0     0       6.9M       2.5k     0       386K     0
      9.8k     0     0        18M       9.0k     0       1.6M     0
      4.7k     0     0       6.3M       4.2k     0       679K     0 
Куда копать, не могу понять. Как победить проблему?

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-05 0:05:57
snorlov
в 8.2 подобное решалось привязкой dummynet к конкретному ядру...

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-05 0:08:31
Harun
Я не использую ни dummynet, ни ipfw. Задал вопрос тех. поддержке chelsio, жду от них ответа.

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-05 8:41:10
Neus
Harun писал(а):
2018-04-04 17:02:31
lagg0.34: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
а почему тут mtu 1500, а на остальных 9000?

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-05 11:17:45
Harun
Потому что lag0.34 - интерфейс для мониторинга и управления, а lagg0.35 - для связи с другими серверами, включен jumbo frame для оптимизации.

Нагрузка CPU прерываниями при мизерном трафике

Добавлено: 2018-04-19 11:39:04
Harun
ТП chelsio помогла в решении проблемы. Проблема была в фрагментации памяти и jumbo фреймах, в данном случае помогло ограничение hw.cxgbe.largest_rx_cluster=4096.