Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Oct 2021 07:51:07 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 259263] ixgbe flag changing performance problem
Message-ID:  <bug-259263-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D259263

            Bug ID: 259263
           Summary: ixgbe flag changing performance problem
           Product: Base System
           Version: 12.2-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: ozkan.kirik@gmail.com

Hi,=20

I'm using FreeBSD stable/12-n234161-c60b5d477cb4 compiled at Oct 13 12:18:51
+03 2021. Changing flags of ix0 takes too long (~15 seconds).
Opening the hardware rings using netmap takes too long also.

Is it possible to optimize the time to finish job?


How to reproduce:
/usr/bin/time ifconfig ix0 promisc -tso -lro -rxcsum -txcsum -tso6 -rxcsum
-txcsum -tso6 -rxcsum6 -txcsum6 -vlanhwtag -vlanhwcsum -vlanhwtso
       14.71 real         0.00 user        14.71 sys

ix0@pci0:3:0:0: class=3D0x020000 card=3D0x15ad15d9 chip=3D0x15ad8086 rev=3D=
0x00
hdr=3D0x00
    vendor     =3D 'Intel Corporation'
    device     =3D 'Ethernet Connection X552/X557-AT 10GBASE-T'
    class      =3D network
    subclass   =3D ethernet


# sysctl dev.ix.0.
dev.ix.0.phy.overtemp_occurred: 0
dev.ix.0.phy.temp: 60
dev.ix.0.wufc: 2
dev.ix.0.wol_enable: 1
dev.ix.0.dmac: 0
dev.ix.0.fw_version: eTrack 0x800003e7 PHY FW V512
dev.ix.0.advertise_speed: 6
dev.ix.0.fc: 3
dev.ix.0.mac_stats.tx_frames_1024_1522: 0
dev.ix.0.mac_stats.tx_frames_512_1023: 0
dev.ix.0.mac_stats.tx_frames_256_511: 0
dev.ix.0.mac_stats.tx_frames_128_255: 0
dev.ix.0.mac_stats.tx_frames_65_127: 0
dev.ix.0.mac_stats.tx_frames_64: 0
dev.ix.0.mac_stats.management_pkts_txd: 0
dev.ix.0.mac_stats.mcast_pkts_txd: 0
dev.ix.0.mac_stats.bcast_pkts_txd: 0
dev.ix.0.mac_stats.good_pkts_txd: 0
dev.ix.0.mac_stats.total_pkts_txd: 0
dev.ix.0.mac_stats.good_octets_txd: 0
dev.ix.0.mac_stats.checksum_errs: 0
dev.ix.0.mac_stats.management_pkts_drpd: 0
dev.ix.0.mac_stats.management_pkts_rcvd: 0
dev.ix.0.mac_stats.recv_jabberd: 0
dev.ix.0.mac_stats.recv_oversized: 0
dev.ix.0.mac_stats.recv_fragmented: 0
dev.ix.0.mac_stats.recv_undersized: 0
dev.ix.0.mac_stats.rx_frames_1024_1522: 0
dev.ix.0.mac_stats.rx_frames_512_1023: 0
dev.ix.0.mac_stats.rx_frames_256_511: 35
dev.ix.0.mac_stats.rx_frames_128_255: 2
dev.ix.0.mac_stats.rx_frames_65_127: 36
dev.ix.0.mac_stats.rx_frames_64: 3
dev.ix.0.mac_stats.bcast_pkts_rcvd: 76
dev.ix.0.mac_stats.mcast_pkts_rcvd: 0
dev.ix.0.mac_stats.good_pkts_rcvd: 76
dev.ix.0.mac_stats.total_pkts_rcvd: 392
dev.ix.0.mac_stats.good_octets_rcvd: 16468
dev.ix.0.mac_stats.total_octets_rcvd: 226473
dev.ix.0.mac_stats.xoff_recvd: 0
dev.ix.0.mac_stats.xoff_txd: 0
dev.ix.0.mac_stats.xon_recvd: 0
dev.ix.0.mac_stats.xon_txd: 0
dev.ix.0.mac_stats.rx_missed_packets: 0
dev.ix.0.mac_stats.rec_len_errs: 0
dev.ix.0.mac_stats.remote_faults: 0
dev.ix.0.mac_stats.local_faults: 68
dev.ix.0.mac_stats.short_discards: 0
dev.ix.0.mac_stats.byte_errs: 0
dev.ix.0.mac_stats.ill_errs: 0
dev.ix.0.mac_stats.crc_errs: 0
dev.ix.0.mac_stats.rx_errs: 0
dev.ix.0.queue3.rx_discarded: 0
dev.ix.0.queue3.rx_copies: 0
dev.ix.0.queue3.rx_bytes: 11970
dev.ix.0.queue3.rx_packets: 35
dev.ix.0.queue3.rxd_tail: 128
dev.ix.0.queue3.rxd_head: 0
dev.ix.0.queue3.irqs: 35
dev.ix.0.queue3.interrupt_rate: 31250
dev.ix.0.queue3.tx_packets: 0
dev.ix.0.queue3.tso_tx: 0
dev.ix.0.queue3.txd_tail: 0
dev.ix.0.queue3.txd_head: 0
dev.ix.0.queue2.rx_discarded: 0
dev.ix.0.queue2.rx_copies: 0
dev.ix.0.queue2.rx_bytes: 0
dev.ix.0.queue2.rx_packets: 0
dev.ix.0.queue2.rxd_tail: 128
dev.ix.0.queue2.rxd_head: 0
dev.ix.0.queue2.irqs: 0
dev.ix.0.queue2.interrupt_rate: 31250
dev.ix.0.queue2.tx_packets: 0
dev.ix.0.queue2.tso_tx: 0
dev.ix.0.queue2.txd_tail: 0
dev.ix.0.queue2.txd_head: 0
dev.ix.0.queue1.rx_discarded: 0
dev.ix.0.queue1.rx_copies: 0
dev.ix.0.queue1.rx_bytes: 0
dev.ix.0.queue1.rx_packets: 0
dev.ix.0.queue1.rxd_tail: 128
dev.ix.0.queue1.rxd_head: 0
dev.ix.0.queue1.irqs: 0
dev.ix.0.queue1.interrupt_rate: 31250
dev.ix.0.queue1.tx_packets: 0
dev.ix.0.queue1.tso_tx: 0
dev.ix.0.queue1.txd_tail: 0
dev.ix.0.queue1.txd_head: 0
dev.ix.0.queue0.rx_discarded: 0
dev.ix.0.queue0.rx_copies: 0
dev.ix.0.queue0.rx_bytes: 4194
dev.ix.0.queue0.rx_packets: 41
dev.ix.0.queue0.rxd_tail: 128
dev.ix.0.queue0.rxd_head: 0
dev.ix.0.queue0.irqs: 41
dev.ix.0.queue0.interrupt_rate: 31250
dev.ix.0.queue0.tx_packets: 0
dev.ix.0.queue0.tso_tx: 0
dev.ix.0.queue0.txd_tail: 0
dev.ix.0.queue0.txd_head: 0
dev.ix.0.link_irq: 5
dev.ix.0.watchdog_events: 0
dev.ix.0.dropped: 0
dev.ix.0.iflib.rxq3.rxq_fl0.buf_size: 2048
dev.ix.0.iflib.rxq3.rxq_fl0.credits: 128
dev.ix.0.iflib.rxq3.rxq_fl0.cidx: 0
dev.ix.0.iflib.rxq3.rxq_fl0.pidx: 128
dev.ix.0.iflib.rxq3.cpu: 6
dev.ix.0.iflib.rxq2.rxq_fl0.buf_size: 2048
dev.ix.0.iflib.rxq2.rxq_fl0.credits: 128
dev.ix.0.iflib.rxq2.rxq_fl0.cidx: 0
dev.ix.0.iflib.rxq2.rxq_fl0.pidx: 128
dev.ix.0.iflib.rxq2.cpu: 4
dev.ix.0.iflib.rxq1.rxq_fl0.buf_size: 2048
dev.ix.0.iflib.rxq1.rxq_fl0.credits: 128
dev.ix.0.iflib.rxq1.rxq_fl0.cidx: 0
dev.ix.0.iflib.rxq1.rxq_fl0.pidx: 128
dev.ix.0.iflib.rxq1.cpu: 2
dev.ix.0.iflib.rxq0.rxq_fl0.buf_size: 2048
dev.ix.0.iflib.rxq0.rxq_fl0.credits: 128
dev.ix.0.iflib.rxq0.rxq_fl0.cidx: 0
dev.ix.0.iflib.rxq0.rxq_fl0.pidx: 128
dev.ix.0.iflib.rxq0.cpu: 0
dev.ix.0.iflib.txq3.r_abdications: 0
dev.ix.0.iflib.txq3.r_restarts: 0
dev.ix.0.iflib.txq3.r_stalls: 0
dev.ix.0.iflib.txq3.r_starts: 0
dev.ix.0.iflib.txq3.r_drops: 0
dev.ix.0.iflib.txq3.r_enqueues: 0
dev.ix.0.iflib.txq3.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000
state: IDLE
dev.ix.0.iflib.txq3.txq_cleaned: 0
dev.ix.0.iflib.txq3.txq_processed: 0
dev.ix.0.iflib.txq3.txq_in_use: 0
dev.ix.0.iflib.txq3.txq_cidx_processed: 0
dev.ix.0.iflib.txq3.txq_cidx: 0
dev.ix.0.iflib.txq3.txq_pidx: 0
dev.ix.0.iflib.txq3.no_tx_dma_setup: 0
dev.ix.0.iflib.txq3.txd_encap_efbig: 0
dev.ix.0.iflib.txq3.tx_map_failed: 0
dev.ix.0.iflib.txq3.no_desc_avail: 0
dev.ix.0.iflib.txq3.mbuf_defrag_failed: 0
dev.ix.0.iflib.txq3.m_pullups: 0
dev.ix.0.iflib.txq3.mbuf_defrag: 0
dev.ix.0.iflib.txq3.cpu: 6
dev.ix.0.iflib.txq2.r_abdications: 0
dev.ix.0.iflib.txq2.r_restarts: 0
dev.ix.0.iflib.txq2.r_stalls: 0
dev.ix.0.iflib.txq2.r_starts: 0
dev.ix.0.iflib.txq2.r_drops: 0
dev.ix.0.iflib.txq2.r_enqueues: 0
dev.ix.0.iflib.txq2.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000
state: IDLE
dev.ix.0.iflib.txq2.txq_cleaned: 0
dev.ix.0.iflib.txq2.txq_processed: 0
dev.ix.0.iflib.txq2.txq_in_use: 0
dev.ix.0.iflib.txq2.txq_cidx_processed: 0
dev.ix.0.iflib.txq2.txq_cidx: 0
dev.ix.0.iflib.txq2.txq_pidx: 0
dev.ix.0.iflib.txq2.no_tx_dma_setup: 0
dev.ix.0.iflib.txq2.txd_encap_efbig: 0
dev.ix.0.iflib.txq2.tx_map_failed: 0
dev.ix.0.iflib.txq2.no_desc_avail: 0
dev.ix.0.iflib.txq2.mbuf_defrag_failed: 0
dev.ix.0.iflib.txq2.m_pullups: 0
dev.ix.0.iflib.txq2.mbuf_defrag: 0
dev.ix.0.iflib.txq2.cpu: 4
dev.ix.0.iflib.txq1.r_abdications: 0
dev.ix.0.iflib.txq1.r_restarts: 0
dev.ix.0.iflib.txq1.r_stalls: 0
dev.ix.0.iflib.txq1.r_starts: 0
dev.ix.0.iflib.txq1.r_drops: 0
dev.ix.0.iflib.txq1.r_enqueues: 0
dev.ix.0.iflib.txq1.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000
state: IDLE
dev.ix.0.iflib.txq1.txq_cleaned: 0
dev.ix.0.iflib.txq1.txq_processed: 0
dev.ix.0.iflib.txq1.txq_in_use: 0
dev.ix.0.iflib.txq1.txq_cidx_processed: 0
dev.ix.0.iflib.txq1.txq_cidx: 0
dev.ix.0.iflib.txq1.txq_pidx: 0
dev.ix.0.iflib.txq1.no_tx_dma_setup: 0
dev.ix.0.iflib.txq1.txd_encap_efbig: 0
dev.ix.0.iflib.txq1.tx_map_failed: 0
dev.ix.0.iflib.txq1.no_desc_avail: 0
dev.ix.0.iflib.txq1.mbuf_defrag_failed: 0
dev.ix.0.iflib.txq1.m_pullups: 0
dev.ix.0.iflib.txq1.mbuf_defrag: 0
dev.ix.0.iflib.txq1.cpu: 2
dev.ix.0.iflib.txq0.r_abdications: 0
dev.ix.0.iflib.txq0.r_restarts: 0
dev.ix.0.iflib.txq0.r_stalls: 0
dev.ix.0.iflib.txq0.r_starts: 0
dev.ix.0.iflib.txq0.r_drops: 0
dev.ix.0.iflib.txq0.r_enqueues: 0
dev.ix.0.iflib.txq0.ring_state: pidx_head: 0000 pidx_tail: 0000 cidx: 0000
state: IDLE
dev.ix.0.iflib.txq0.txq_cleaned: 0
dev.ix.0.iflib.txq0.txq_processed: 0
dev.ix.0.iflib.txq0.txq_in_use: 0
dev.ix.0.iflib.txq0.txq_cidx_processed: 0
dev.ix.0.iflib.txq0.txq_cidx: 0
dev.ix.0.iflib.txq0.txq_pidx: 0
dev.ix.0.iflib.txq0.no_tx_dma_setup: 0
dev.ix.0.iflib.txq0.txd_encap_efbig: 0
dev.ix.0.iflib.txq0.tx_map_failed: 0
dev.ix.0.iflib.txq0.no_desc_avail: 0
dev.ix.0.iflib.txq0.mbuf_defrag_failed: 0
dev.ix.0.iflib.txq0.m_pullups: 0
dev.ix.0.iflib.txq0.mbuf_defrag: 0
dev.ix.0.iflib.txq0.cpu: 0
dev.ix.0.iflib.override_nrxds: 0
dev.ix.0.iflib.override_ntxds: 0
dev.ix.0.iflib.use_logical_cores: 0
dev.ix.0.iflib.separate_txrx: 0
dev.ix.0.iflib.core_offset: 0
dev.ix.0.iflib.tx_abdicate: 0
dev.ix.0.iflib.rx_budget: 0
dev.ix.0.iflib.disable_msix: 0
dev.ix.0.iflib.override_qs_enable: 0
dev.ix.0.iflib.override_nrxqs: 4
dev.ix.0.iflib.override_ntxqs: 4
dev.ix.0.iflib.driver_version: 4.0.1-k
dev.ix.0.%parent: pci4
dev.ix.0.%pnpinfo: vendor=3D0x8086 device=3D0x15ad subvendor=3D0x15d9
subdevice=3D0x15ad class=3D0x020000
dev.ix.0.%location: slot=3D0 function=3D0 dbsf=3Dpci0:3:0:0
handle=3D\_SB_.PCI0.BR2C.H000
dev.ix.0.%driver: ix
dev.ix.0.%desc: Intel(R) X552/X557-AT (10GBASE-T)

With Intel X540 ix0 it takes about 2.5 seconds (It's also long time)

# /usr/bin/time ifconfig ix0 promisc -tso -lro -rxcsum -txcsum -tso6
-rxcsum -txcsum -tso6 -rxcsum6 -txcsum6 -vlanhwtag -vlanhwcsum
-vlanhwtso
        2.32 real         0.00 user         2.32 sys

ix0@pci0:101:0:0: class=3D0x020000 card=3D0x001a8086 chip=3D0x15288086
rev=3D0x01 hdr=3D0x00
    vendor     =3D 'Intel Corporation'
    device     =3D 'Ethernet Controller 10-Gigabit X540-AT2'
    class      =3D network
    subclass   =3D ethernet


But igb and ixl drivers are fast (<1 seconds). For comparision the output is
below:
/usr/bin/time ifconfig igb0 promisc -tso -lro -rxcsum -txcsum -tso6 -rxcsum
-txcsum -tso6 -rxcsum6 -txcsum6 -vlanhwtag -vlanhwcsum -vlanhwtso
        0.94 real         0.00 user         0.20 sys

igb0@pci0:5:0:0:        class=3D0x020000 card=3D0x152115d9 chip=3D0x1521808=
6 rev=3D0x01
hdr=3D0x00
    vendor     =3D 'Intel Corporation'
    device     =3D 'I350 Gigabit Network Connection'
    class      =3D network
    subclass   =3D ethernet

/usr/bin/time ifconfig ixl0 promisc -tso -lro -rxcsum -txcsum -tso6 -rxcsum
-txcsum -tso6 -rxcsum6 -txcsum6 -vlanhwtag -vlanhwcsum -vlanhwtso
        0.68 real         0.00 user         0.68 sys

ixl0@pci0:183:0:0: class=3D0x020000 card=3D0x37d215d9 chip=3D0x37d28086
rev=3D0x04 hdr=3D0x00
    vendor     =3D 'Intel Corporation'
    device     =3D 'Ethernet Connection X722 for 10GBASE-T'
    class      =3D network
    subclass   =3D ethernet


Regards

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-259263-227>