Hey Nishit,

I'm not sure what I can tell you.  It looks like your device is loaded down 
with small packets we know this will overload the PCI bus, this will of course 
adversely event latency.  You could try something like DCB.  Put your traffic 
that needs low latency on one TC and the small packet traffic on another and 
use FC on that TC.  This of course would require switches that support DCB and 
is assuming your small packet traffic and latency dependent are different 
flows.  If they are not then you need some other mechanism to throttle your 
traffic before it saturates the bus.

Thanks,
-Don Skidmore <[email protected]>

> -----Original Message-----
> From: Nishit Shah [mailto:[email protected]]
> Sent: Thursday, May 02, 2013 8:52 AM
> To: Skidmore, Donald C
> Cc: [email protected]
> Subject: Re: [E1000-devel] 82599 latency increase with rx_missed_errors
> 
> 
> Hi Don,
> 
>      Thanks for all the explanations. It will be a great help.
>      Can you suggest some pointers to look more into PCIe bus
> configurations/tuning ?
> 
> Rgds,
> Nishit Shah.
> 
> On 5/2/2013 3:41 AM, Skidmore, Donald C wrote:
> > Hey Nishit,
> >
> > I replied inline below.
> >
> > Thanks,
> > -Don Skidmore<[email protected]>
> >
> >> -----Original Message-----
> >> From: Nishit Shah [mailto:[email protected]]
> >> Sent: Tuesday, April 30, 2013 11:46 PM
> >> To: Skidmore, Donald C
> >> Cc: [email protected]
> >> Subject: Re: [E1000-devel] 82599 latency increase with
> >> rx_missed_errors
> >>
> >>
> >> Hi Don,
> >>
> >> On 5/1/2013 3:40 AM, Skidmore, Donald C wrote:
> >>> Hi Nishit,
> >>>
> >>> The rx_no_dma_resources means we are dropping packets because we
> >> don't have any free descriptors in the RX Queue.  While
> >> rx_missed_errors are due to insufficient space to store an ingress
> >> packet, so basically we ran out of buffers or bandwidth on the PCIe bus.
> >>
> >> Thanks for the explanation. Is there any way to verify whether we are
> >> running out of buffers or bandwidth on the PCIe bus ?
> > To a large extent these are transparent to the driver.  You could put on FC
> and if you still see that same number of rx_missed_errors this would infer
> that you are overloading your bus.
> >
> >>                   (ixgbe loading shows PCIe 5.0GT/s:Width x8)
> >>
> >>           # dmesg | grep "0000:06:00"
> >>           ixgbe 0000:06:00.0: PCI->APIC IRQ transform: INT C ->  IRQ 18
> >>           ixgbe 0000:06:00.0: setting latency timer to 64
> >>           ixgbe 0000:06:00.0: irq 40 for MSI/MSI-X
> >>           ixgbe 0000:06:00.0: irq 41 for MSI/MSI-X
> >>           ixgbe 0000:06:00.0: irq 42 for MSI/MSI-X
> >>           ixgbe 0000:06:00.0: (PCI Express:5.0GT/s:Width x8)
> >> 00:90:fb:45:f1:76
> >>           ixgbe 0000:06:00.0: eth0: MAC: 2, PHY: 14, SFP+: 5, PBA No:
> >>           ixgbe 0000:06:00.0: eth0: Enabled Features: RxQ: 2 TxQ: 2 
> >> FdirHash
> RSS
> >>           ixgbe 0000:06:00.0: eth0: Intel(R) 10 Gigabit Network Connection
> >>           ixgbe 0000:06:00.1: PCI->APIC IRQ transform: INT D ->  IRQ 19
> >>           ixgbe 0000:06:00.1: setting latency timer to 64
> >>           ixgbe 0000:06:00.1: irq 43 for MSI/MSI-X
> >>           ixgbe 0000:06:00.1: irq 44 for MSI/MSI-X
> >>           ixgbe 0000:06:00.1: irq 45 for MSI/MSI-X
> >>           ixgbe 0000:06:00.1: (PCI Express:5.0GT/s:Width x8)
> >> 00:90:fb:45:f1:77
> >>           ixgbe 0000:06:00.1: eth1: MAC: 2, PHY: 14, SFP+: 6, PBA No:
> >>           ixgbe 0000:06:00.1: eth1: Enabled Features: RxQ: 2 TxQ: 2 
> >> FdirHash
> RSS
> >>           ixgbe 0000:06:00.1: eth1: Intel(R) 10 Gigabit Network
> >> Connection
> >>
> >>       One another interesting observation.
> >>       When we have changed the packet buffer from 512 KB to 128 KB
> >> (by changing rx_pb_size in ixgbe_82599.c), per packet latency is
> >> reduced from
> >> 500 microseconds to 100 microseconds for 64 bytes packets.
> >>       Does it mean some kind of relation with size of packet buffer ?
> > This most likely shows that your small packet flow is overloading the PCIe
> bus.  Since shrinking the packet buffer would me it would take less time
> backfill while you wait on the saturated PCIe bus.  So when you shrink the
> packet buffer you don't wait as long queued up for PCIe bus that can't handle
> your load.  So I'm wouldn't think this would be a solution for you the real
> issue here is that the bus can't keep up with small packets loads.
> >
> >>>
> >>> All that said when you see the  rx_no_dma_resources errors is their
> >>> rate
> >> comparable with what you were seeing for rx_missed_errors?  Both will
> >> lead to the same thing, dropped packets.
> >>
> >>       I have find out the frame size from where we are getting
> >> rx_missed_errors and below is a rate at those sizes.
> >>
> >>       frame size 110 bytes        (avg. latency 45 microseconds)
> >>           - no rx_missed_errors.
> >>           - rx_no_dma_resources increase rate is 8200000/sec
> >>
> >>       frame size 108 bytes        (avg. latency 345 microseconds)
> >>           - rx_missed_errors increase rate is 207000/sec
> >>           - rx_no_dma_resources increase rate is 8300000/sec
> > I assume you crossed some boundary here with the lower frame size you
> have more PCI transaction for the same data throughput.  So once you
> crossed to 108 bytes you start running out of PCIe bandwidth.
> >
> >>>
> >>> Also what does 'lspci -vvv' show, I'm looking to see if you are
> >>> getting the full
> >> PCIe bandwidth.  You could also try to turn on FC which should lower
> >> these types of overflow occurrences.
> >>
> >>       Enabling flow control is even increasing the latency. Seems to
> >> be tester machine is not understanding the PAUSE frames and FC also
> >> clears the DROP_EN bit that is again increasing the latency.
> >>        lspci -vvv output is attached with the mail.
> >>
> >>> Thanks,
> >>> -Don Skidmore<[email protected]>
> >> Rgds,
> >> Nishit Shah.
> >>
> >>>> -----Original Message-----
> >>>> From: Nishit Shah [mailto:[email protected]]
> >>>> Sent: Tuesday, April 30, 2013 9:07 AM
> >>>> To: [email protected]
> >>>> Subject: [E1000-devel] 82599 latency increase with rx_missed_errors
> >>>>
> >>>>
> >>>> Hi,
> >>>>
> >>>>        We are measuring packet latencies at various packet sizes
> >>>> (64 bytes to
> >>>> 1518 bytes) with 82599 card with ixgbe driver 3.7.21.
> >>>>
> >>>> Setup:
> >>>>
> >>>>        Spirent test center sender                       machine with 
> >>>> 82599
> >>>> (ixgbe 3.7.21 and vanilla 2.6.39.4)        Spirent test center receiver
> >>>>
> >>>>            10 G<------------------------>            10G
> >>>> 10G<------------------------------>          10G
> >>>>
> >>>>        When we don't have an increase in "rx_missed_errors" and
> >>>> "rx_no_dma_resources", we are getting per packet latency around
> >>>> 40-70 microseconds. ("rx_no_buffer_count" is not increasing)
> >>>>        When we have an increase in "rx_no_dma_resources", we are
> >>>> still
> >> getting
> >>>> per packet latency around 40-70 microseconds.
> >>>> ("rx_no_buffer_count" is not increasing)
> >>>>        When we have an increase in "rx_missed_errors", we are
> >>>> getting per packet latency around 500 microseconds.
> >>>> (rx_no_buffer_count is not
> >>>> increasing)
> >>>>
> >>>>        Is there any specific reason for latency increase when
> >> "rx_missed_errors"
> >>>> are increased ?
> >>>>        Is there a way to control it ?
> >>>>
> >>>>        Below is a machine detail.
> >>>>
> >>
> ==========================================================
> >>>> ===============================================
> >>>> Machine details.
> >>>>
> >>>>        CPU:            Dual Core Intel(R) Celeron(R) CPU G540 @ 2.50GHz
> >>>>        Memory:       2 GB
> >>>>         kernel:        vanilla 2.6.39.4
> >>>>        Interface tuning parameters:
> >>>>                    Auto Negotiation is off    (DROP_EN is set.)
> >>>>                    ethtool -G eth0 rx 64 tx 128 ; ethtool -G eth1 rx 64 
> >>>> tx 128
> >>>>                    rx-usecs is set to 50.
> >>>>        ethtool and lspci for bus information:
> >>>>
> >>>>            # ethtool -i eth0
> >>>>            driver: ixgbe
> >>>>            version: 3.7.21-NAPI
> >>>>            firmware-version: 0x80000345
> >>>>            bus-info: 0000:06:00.0
> >>>>            #
> >>>>            # ethtool -i eth1
> >>>>            driver: ixgbe
> >>>>            version: 3.7.21-NAPI
> >>>>            firmware-version: 0x80000345
> >>>>            bus-info: 0000:06:00.1
> >>>>
> >>>>            06:00.0 Class 0200: Device 8086:10fb (rev 01)
> >>>>                Subsystem: Device 15bb:30e0
> >>>>                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> >> VGASnoop-
> >>>> ParErr- Stepping- SERR- FastB2B- DisINTx+
> >>>>                Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >>>>    >TAbort-<TAbort-<MAbort->SERR-<PERR- INTx-
> >>>>                Latency: 0, Cache Line Size: 64 bytes
> >>>>                Interrupt: pin A routed to IRQ 18
> >>>>                Region 0: Memory at f7520000 (64-bit,
> >>>> non-prefetchable)
> >> [size=128K]
> >>>>                Region 2: I/O ports at 8020 [size=32]
> >>>>                Region 4: Memory at f7544000 (64-bit,
> >>>> non-prefetchable)
> >> [size=16K]
> >>>>                Capabilities: [40] Power Management version 3
> >>>>                    Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
> >>>> PME(D0+,D1-,D2-,D3hot+,D3cold-)
> >>>>                    Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
> >>>>                Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> >>>>                    Address: 0000000000000000  Data: 0000
> >>>>                    Masking: 00000000  Pending: 00000000
> >>>>                Capabilities: [70] MSI-X: Enable+ Count=64 Masked-
> >>>>                    Vector table: BAR=4 offset=00000000
> >>>>                    PBA: BAR=4 offset=00002000
> >>>>                Capabilities: [a0] Express (v2) Endpoint, MSI 00
> >>>>                    DevCap: MaxPayload 512 bytes, PhantFunc 0,
> >>>> Latency L0s<512ns,
> >> L1
> >>>> <64us
> >>>>                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
> >>>>                    DevCtl: Report errors: Correctable- Non-Fatal-
> >>>> Fatal-
> >>>> Unsupported-
> >>>>                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ 
> >>>> FLReset-
> >>>>                        MaxPayload 128 bytes, MaxReadReq 512 bytes
> >>>>                    DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+
> >>>> AuxPwr- TransPend-
> >>>>                    LnkCap: Port #1, Speed 5GT/s, Width x8, ASPM
> >>>> L0s, Latency
> >> L0<2us,
> >>>> L1<32us
> >>>>                        ClockPM- Surprise- LLActRep- BwNot-
> >>>>                    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled-
> >>>> Retrain-
> >>>> CommClk-
> >>>>                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>>                    LnkSta: Speed 5GT/s, Width x8, TrErr- Train-
> >>>> SlotClk+
> >>>> DLActive- BWMgmt- ABWMgmt-
> >>>>                    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
> >>>>                    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
> >>>>                    LnkCtl2: Target Link Speed: 5GT/s,
> >>>> EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
> >>>>                         Transmit Margin: Normal Operating Range,
> >>>> EnterModifiedCompliance- ComplianceSOS-
> >>>>                         Compliance De-emphasis: -6dB
> >>>>                    LnkSta2: Current De-emphasis Level: -6dB
> >>>>                Capabilities: [e0] Vital Product Data
> >>>>                    Unknown small resource type 06, will not decode more.
> >>>>                Kernel driver in use: ixgbe
> >>>>                Kernel modules: ixgbe
> >>>>
> >>>>            06:00.1 Class 0200: Device 8086:10fb (rev 01)
> >>>>                Subsystem: Device 15bb:30e0
> >>>>                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> >> VGASnoop-
> >>>> ParErr- Stepping- SERR- FastB2B- DisINTx+
> >>>>                Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >>>>    >TAbort-<TAbort-<MAbort->SERR-<PERR- INTx-
> >>>>                Latency: 0, Cache Line Size: 64 bytes
> >>>>                Interrupt: pin B routed to IRQ 19
> >>>>                Region 0: Memory at f7500000 (64-bit,
> >>>> non-prefetchable)
> >> [size=128K]
> >>>>                Region 2: I/O ports at 8000 [size=32]
> >>>>                Region 4: Memory at f7540000 (64-bit,
> >>>> non-prefetchable)
> >> [size=16K]
> >>>>                Capabilities: [40] Power Management version 3
> >>>>                    Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
> >>>> PME(D0+,D1-,D2-,D3hot+,D3cold-)
> >>>>                    Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
> >>>>                Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
> >>>>                    Address: 0000000000000000  Data: 0000
> >>>>                    Masking: 00000000  Pending: 00000000
> >>>>                Capabilities: [70] MSI-X: Enable+ Count=64 Masked-
> >>>>                    Vector table: BAR=4 offset=00000000
> >>>>                    PBA: BAR=4 offset=00002000
> >>>>                Capabilities: [a0] Express (v2) Endpoint, MSI 00
> >>>>                    DevCap: MaxPayload 512 bytes, PhantFunc 0,
> >>>> Latency L0s<512ns,
> >> L1
> >>>> <64us
> >>>>                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
> >>>>                    DevCtl: Report errors: Correctable- Non-Fatal-
> >>>> Fatal-
> >>>> Unsupported-
> >>>>                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ 
> >>>> FLReset-
> >>>>                        MaxPayload 128 bytes, MaxReadReq 512 bytes
> >>>>                    DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+
> >>>> AuxPwr- TransPend-
> >>>>                    LnkCap: Port #1, Speed 5GT/s, Width x8, ASPM
> >>>> L0s, Latency
> >> L0<2us,
> >>>> L1<32us
> >>>>                        ClockPM- Surprise- LLActRep- BwNot-
> >>>>                    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled-
> >>>> Retrain-
> >>>> CommClk-
> >>>>                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>>                    LnkSta: Speed 5GT/s, Width x8, TrErr- Train-
> >>>> SlotClk+
> >>>> DLActive- BWMgmt- ABWMgmt-
> >>>>                    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
> >>>>                    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
> >>>>                    LnkCtl2: Target Link Speed: 2.5GT/s,
> >>>> EnterCompliance- SpeedDis-
> >> ,
> >>>> Selectable De-emphasis: -6dB
> >>>>                         Transmit Margin: Normal Operating Range,
> >>>> EnterModifiedCompliance- ComplianceSOS-
> >>>>                         Compliance De-emphasis: -6dB
> >>>>                    LnkSta2: Current De-emphasis Level: -6dB
> >>>>                Capabilities: [e0] Vital Product Data
> >>>>                    Unknown small resource type 06, will not decode more.
> >>>>                Kernel driver in use: ixgbe
> >>>>                Kernel modules: ixgbe
> >>>>
> >>
> ==========================================================
> >>>> ===============================================
> >>>>
> >>>> Rgds,
> >>>> Nishit Shah.
> >>>>
> >>>> -------------------------------------------------------------------
> >>>> ----------- Introducing AppDynamics Lite, a free troubleshooting
> >>>> tool for Java/.NET
> >> Get
> >>>> 100% visibility into your production application - at no cost.
> >>>> Code-level diagnostics for performance bottlenecks with<2% overhead
> >>>> Download for free and get started troubleshooting in minutes.
> >>>> http://p.sf.net/sfu/appdyn_d2d_ap1
> >>>> _______________________________________________
> >>>> E1000-devel mailing list
> >>>> [email protected]
> >>>> https://lists.sourceforge.net/lists/listinfo/e1000-devel
> >>>> To learn more about Intel&#174; Ethernet, visit
> >>>> http://communities.intel.com/community/wired


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to