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>