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]