Re: Reg Intel Fortville IXL driver on 11-CURRENT

2015-06-17 Thread Ryan Stone
On Wed, Jun 17, 2015 at 7:00 AM, Lakshmi Narasimhan Sundararajan 
lakshm...@msystechnologies.com wrote:

 [lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$ diff -c5pt ixl_txrx.c
 ixl_txrx.c.mod
 *** ixl_txrx.c Fri Jun 12 06:56:51 2015
 --- ixl_txrx.c.mod Fri Jun 12 06:56:33 2015
 *** ixl_mq_start(struct ifnet *ifp, struct m
 *** 96,112 
 --- 96,115 
   } else
   #endif
   i = m-m_pkthdr.flowid % vsi-num_queues;
   } else
   i = curcpu % vsi-num_queues;
 +
 + #if 0
   /*
   ** This may not be perfect, but until something
   ** better comes along it will keep from scheduling
   ** on stalled queues.
   */
   if (((1  i)  vsi-active_queues) == 0)
   i = ffsl(vsi-active_queues);
 + #endif

   que = vsi-queues[i];
   txr = que-txr;

   err = drbr_enqueue(ifp, txr-br, m);
 [lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$


My understanding is that this code is intended to be triggered as a last
resort.  If that code is firing regularly then the driver is not correctly
tracking which queues are alive in the active_queues bitmask.
___
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to freebsd-net-unsubscr...@freebsd.org


Re: Reg Intel Fortville IXL driver on 11-CURRENT

2015-06-17 Thread Jack Vogel
As Ryan said, its there to keep queues marked as hung from
getting more work scheduled on them. I really don't know what
to make of it if commenting it out is somehow improving things :)

I would suggest more careful analysis of what is going wrong
before committing anything like deleting this.

Jack


On Wed, Jun 17, 2015 at 12:17 PM, Ryan Stone ryst...@gmail.com wrote:

 On Wed, Jun 17, 2015 at 7:00 AM, Lakshmi Narasimhan Sundararajan 
 lakshm...@msystechnologies.com wrote:

  [lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$ diff -c5pt
 ixl_txrx.c
  ixl_txrx.c.mod
  *** ixl_txrx.c Fri Jun 12 06:56:51 2015
  --- ixl_txrx.c.mod Fri Jun 12 06:56:33 2015
  *** ixl_mq_start(struct ifnet *ifp, struct m
  *** 96,112 
  --- 96,115 
} else
#endif
i = m-m_pkthdr.flowid % vsi-num_queues;
} else
i = curcpu % vsi-num_queues;
  +
  + #if 0
/*
** This may not be perfect, but until something
** better comes along it will keep from scheduling
** on stalled queues.
*/
if (((1  i)  vsi-active_queues) == 0)
i = ffsl(vsi-active_queues);
  + #endif
 
que = vsi-queues[i];
txr = que-txr;
 
err = drbr_enqueue(ifp, txr-br, m);
  [lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$
 

 My understanding is that this code is intended to be triggered as a last
 resort.  If that code is firing regularly then the driver is not correctly
 tracking which queues are alive in the active_queues bitmask.
 ___
 freebsd-net@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-net
 To unsubscribe, send any mail to freebsd-net-unsubscr...@freebsd.org

___
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to freebsd-net-unsubscr...@freebsd.org


Reg Intel Fortville IXL driver on 11-CURRENT

2015-06-17 Thread Lakshmi Narasimhan Sundararajan
Hi FreeBSD folks,
I am part of Panasas and working on evaluating IXL over FreeBSD
[11-CURRENT] on Intel Taylor Pass platform for our next product.

In that regard, while evaluating performance, we found the Tx performance
to be very poor. We found it to be so because the tx interrupts are spread
over all the CPUs even if the traffic handling process is pinned at a
particular cpu.

And we narrowed it down to the below lines of code in the tx path within
the IXL driver. It seems to me that the logic for finding whether tx queue
is stalled might be incorrect or too aggressive. Either ways, removing the
below lines makes the tx interrupt being handled on the same cpu on which
the request was raised and the performance is very good as expected.

Filename: sys/dev/ixl/ixl_txrx.c

[lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$ diff -c5pt ixl_txrx.c
ixl_txrx.c.mod
*** ixl_txrx.c Fri Jun 12 06:56:51 2015
--- ixl_txrx.c.mod Fri Jun 12 06:56:33 2015
*** ixl_mq_start(struct ifnet *ifp, struct m
*** 96,112 
--- 96,115 
  } else
  #endif
  i = m-m_pkthdr.flowid % vsi-num_queues;
  } else
  i = curcpu % vsi-num_queues;
+
+ #if 0
  /*
  ** This may not be perfect, but until something
  ** better comes along it will keep from scheduling
  ** on stalled queues.
  */
  if (((1  i)  vsi-active_queues) == 0)
  i = ffsl(vsi-active_queues);
+ #endif

  que = vsi-queues[i];
  txr = que-txr;

  err = drbr_enqueue(ifp, txr-br, m);
[lakshmis@mau-bsd-10a ~/fortville/hol/sys/dev/ixl]$


Would appreciate your feedback on the same.

Thanks,
LN
___
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to freebsd-net-unsubscr...@freebsd.org