Aviv Greenberg wrote:
>
> 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...
Talking about this:
http://www.linuxsymposium.org/2004/view_abstract.php?content_key=46
Very similar, but does not talking about IOT after all. In fact, I can
kind of imagine Intel going to develop IOT after the results of that
previous study and based on what they saw.
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.
I don't know anything about IOAT but I would still guess that both in
kernel socket buffer and the user space buffers to/from the data is
copied have to be pinned for the duration of the DMA operation.
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
I REALLY need to go read on the IOAT implementation before making any
comment but... (can;t help myself) ....
I still fail to see how this is not an issue with IOAT - if you want to
DMA into the user buffer, you better have that pinned and locked doe the
duration of the DMA transfer.
Cheers,
Gilad
=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]