|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Poor network performance between DomU with multiqueue support
On Fri, Dec 05, 2014 at 01:17:16AM +0000, Zhangleiqiang (Trump) wrote:
[...]
> > I think that's expected, because guest RX data path still uses grant_copy
> > while
> > guest TX uses grant_map to do zero-copy transmit.
>
> As far as I know, there are three main grant-related operations used in split
> device model: grant mapping, grant transfer and grant copy.
> Grant transfer has not used now, and grant mapping and grant transfer both
> involve "TLB" refresh work for hypervisor, am I right? Or only grant
> transfer has this overhead?
Transfer is not used so I can't tell. Grant unmap causes TLB flush.
I saw in an email the other day XenServer folks has some planned
improvement to avoid TLB flush in Xen to upstream in 4.6 window. I can't
speak for sure it will get upstreamed as I don't work on that.
> Does grant copy surely has more overhead than grant mapping?
>
At the very least the zero-copy TX path is faster than previous copying
path.
But speaking of the micro operation I'm not sure.
There was once persistent map prototype netback / netfront that
establishes a memory pool between FE and BE then use memcpy to copy
data. Unfortunately that prototype was not done right so the result was
not good.
> >From the code, I see that in TX, netback will do gnttab_batch_copy as well
> >as gnttab_map_refs:
>
> <code> //netback.c:xenvif_tx_action
> xenvif_tx_build_gops(queue, budget, &nr_cops, &nr_mops);
>
> if (nr_cops == 0)
> return 0;
>
> gnttab_batch_copy(queue->tx_copy_ops, nr_cops);
> if (nr_mops != 0) {
> ret = gnttab_map_refs(queue->tx_map_ops,
> NULL,
> queue->pages_to_map,
> nr_mops);
> BUG_ON(ret);
> }
> </code>
>
The copy is for the packet header. Mapping is for packet data.
We need to copy header from guest so that it doesn't change under
netback's feet.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |