Paul Durrant writes:
 > On 3/21/06, Andrew Gallatin <[EMAIL PROTECTED]> wrote:
 > >
 > > I personally *hate* having to pre-allocate receive buffers and loan
 > > them to the stack.  If I allocate too few, then my driver has to copy
 > 
 > Have you looked at dvma_reserve() and dvma_kaddr_load()? They're
 > reliant on having an IOMMU (and so are sparc only at the moment) but
 > do pretty much what you want, I think.

Thanks!  I looked at it briefly, but stopped considering it when I
found that it is not available on amd64, and does not seem to be
a stable interface for 3rd party developers.

Even if it was stable and available on amd64, I don't think I'd be
able to use it.  From what I've seen profiling my send routine, even
the kva -> hypervisor-phys -> phys translations are far too expensive
to do in the critical path on a CoolThreads system if you are trying
to maintain 10GbE packet rates.  A single "CPU" can barely run the IP
stack at more than 30-40Kpps, I'd hate to add anything else to that.
The combination of a slow CPU, a hypervisor, and a fast packet rate
makes for some worst-case scenarios.

I think the only way to maintain decent packet rates with low overhead
on a CoolThreads system is going to be to have a pool of pre-mapped
buffers.  I do this now, and it works.  My only complaint is that
maintaining it myself makes me feel dirty.

Drew
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to