On 08/18/08 08:06 AM, David Edmondson wrote:
> I'd like reviewers for:
> 
> 6721983 High CPU utilization @dom0 when doing Tx at one guest domain
>       due to a hot lock in the xnb driver
> 6730667 High CPU utilization @domU when doing Rx at one guest domain
>       due to massive calling of mac_tx_update
> 
> The webrev is at http://dme.org/solaris/webrev/on-bugfix.hg.

In xnf_intr function, the current logic is to reclaim Tx ring
whenever xnf gets an interrupt. I suggest we change the
logic as such that the code reclaims Tx ring ONLY when xnf
needs to send packets. This is to avoid grabbing xnf_txlock
as much as possible.

Current:

1442         /*
1443          * Clean tx ring and try to start any blocked xmit streams if
1444          * there is now some space.
1445          */
1446         mutex_enter(&xnfp->xnf_txlock);
1447         if (xnf_clean_tx_ring(xnfp) > 0) {
1448                 sched = xnfp->xnf_need_sched;
1449                 xnfp->xnf_need_sched = B_FALSE;
1450         }
1451         mutex_exit(&xnfp->xnf_txlock);
1452
1453         if (sched)
1454                 mac_tx_update(xnfp->xnf_mh);

Suggested change:

if (xnfp->xnf_need_sched) {
    mutex_enter(&xnfp->xnf_txlock);
    no=xnf_clean_tx_ring(xnfp);
    if (no>0) {
       mac_tx_update(xnfp->xnf_mh);
       xnfp->xnf_need_sched = B_FALSE;
    }
    mutex_exit(&xnfp->xnf_txlock);
}
_______________________________________________
xen-discuss mailing list
[email protected]

Reply via email to