Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Sep 2012 13:19:01 -0700
From:      Vijay Singh <vijju.singh@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-net@freebsd.org, Jack Vogel <jfvogel@gmail.com>
Subject:   Re: ixgbe rx & tx locks
Message-ID:  <CALCNsJQ740ceDzpd5n7QAALn-uJ-GdWxPTkQJuMJUMTUGJjOUg@mail.gmail.com>
In-Reply-To: <201208170941.54482.jhb@freebsd.org>
References:  <CALCNsJSSQSWV7vNVR-Sn8CPDKbUBBLpSH0b-HYMJo3SXvkOY=w@mail.gmail.com> <201208161736.47250.jhb@freebsd.org> <CAFOYbc=bXv_V4egO94ftkTFoLQ2uM50Sw3X5kgYoyKQcd0s31A@mail.gmail.com> <201208170941.54482.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> Vijay, can you test this to see if it helps with your test case?
>
>> Jack

John, apologies for the delay. I have some data to share now.

With your patch, the transmit side lock contention is all gone.
However I still see receive side contention. I have MSI/X enabled,
with one hw queue per-port.

debug.lock.prof.stats:
lock                      	                  held_at 	
             contested_from 	      instances
e1b:rx(0)                 	(    sys/dev/ixgbe/ixgbe.c:4314) 	(
sys/dev/ixgbe/ixgbe.c:4249) 	  6814
e2b:rx(0)                 	(    sys/dev/ixgbe/ixgbe.c:4314) 	(
sys/dev/ixgbe/ixgbe.c:4249) 	  6962

These are from:

4297 static bool
4298 ixgbe_rxeof(struct ix_queue *que, int count)
4299 {
.....
4314         IXGBE_RX_LOCK(rxr);

and

4220 static __inline void
4221 ixgbe_rx_input(struct rx_ring *rxr, struct ifnet *ifp, struct
mbuf *m, u32 ptype)
4222 {
....
4247         IXGBE_RX_UNLOCK(rxr);
4248         (*ifp->if_input)(ifp, m);
4249         IXGBE_RX_LOCK(rxr);

So it seems like the interrupt handler is still contending with a
taskqueue handler on the receive side.

-vijay

PS: The interface names are custom.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALCNsJQ740ceDzpd5n7QAALn-uJ-GdWxPTkQJuMJUMTUGJjOUg>