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]
