> > > > > IOAT - its not a TCP offload engine. Intel's assumption is that the > > CPU is wasting a lot of cycles to copy data (from kernel to user and > > vv). IOAT is just a smart DMA engine that can move data (copy) > > without wasting the main CPU cycles. There are more details (cpu > > caching optimizationetc) but this is the basic idea. > > When Ira asked me about it before it didn't ring any bells with me but > now that you describe it I think I have a vague memory of Intel showing > a research based on this at OLS 2005 where the conclusion was that it > only benefits certain kinds of traffic and not others since, for > example, for traffic made from many small packets (typical VoIP traffic > for example), the cost associated with the memory management trickery > required to pin and unpin the socket buffers costs more then the cycles > saved due to the offloaded copy... thought I maybe gotten mixed with > something else though.
If you have a link to this research please send it - it's interesting. I didn't see any real benchmark yet... One thing tough, AFAIK IOAT does not require pinning socket pages. IOAT replaces the copy_to_user and copy_from_user calls with programming a DMA engine. There was a discussion years ago to enable zero copy on regular sockets using COW (not related to IOAT). Dave Miller decided to drop this because "It costs more to lock down the user mappings than the gain you get from the zero-copy transfer. Also, the user almost always modifies the buffer right after the sendmsg() call so the gain is usually nil." see the full message here : http://readlist.com/lists/vger.kernel.org/linux-net/0/1208.html Aviv
