drbr_enqueue - OCE driver - Freebsd 9.1

Duvvuru,Venkat Kumar VenkatKumar.Duvvuru at Emulex.Com
Mon Apr 8 17:30:13 UTC 2013


Hi,
In the transmit path, if enqueue mechanism is used instead of blocking on the lock, the throughput is not good in some scenarios (especially single queue, multiple connections).
For example:
if (TRY_LOCK(&wq->tx_lock)) {
           status = oce_multiq_transmit(ifp, m, wq);
           UNLOCK(&wq->tx_lock);
     } else {
           status = drbr_enqueue(ifp, wq->br, m);
     }

Instead of the above code where the request is enqueued if I use a normal LOCK and block on it, it is giving good performance.

Any suggestions on why the throughput is low in case of enqueue mechanism.

Thx,
Venkat.




More information about the freebsd-net mailing list