Re: zero-copy TCP fileserving

Greg Lindahl (lindahl@cs.virginia.edu)
Fri, 4 Jun 1999 16:52:11 -0400 (EDT)


> Further, computation
> rates continue to grow faster than memcpy rates (particularly, when
> dealing with I/O devices). As a result, those in industry who build
> these kinds of products do, in fact, understand the importance of copy
> elimination, and they spend significant energy to achieve it.

With all due respect, I do supercomputing on LinuxAlpha clusters, and
you are wrong. Copy rates to I/O devices are growing slowly (PCI is
too slow for gigabit networking :-(), but memcpy in main memory is
fast and is getting faster. The latest generation of Alphas tripled
main memory memcpy while only doubling CPU power, and Intel ought to
be able to match this. It *is* important to keep copies to as few as
possible, but getting it all the way to _zero_ isn't necessarily a
huge win worth a huge cost. Does great for microbenchmarks, but not
applications.

> Further, other domains (e.g., IPC, high-speed I/O, cluster computing)
> benefit significantly from zero-copy cross-domain transfers. There
> are any number of research projects (e.g., U-net, Fbufs) and industry
> efforts (e.g., VIA, SiliconTCP) that clearly demonstrate the importance
> of copy avoidance.

Yeah, right. I'm using a user-level interface in the style of U-Net.
The main win is not having to go into the kernel to send or receive
messages. Even if my communications system supported 0 copy, I'd have
to rewrite the program more than a bit to take advantage of 0 copy.

And I already know that my 9.2 gigaflop result (64 old alphas with
myrinet) on MM5 isn't communications limited.

Summary: copies *are* bad. But it isn't necessarily worth a huge
effort to get rid of all of them.

Greg Lindahl
High Performance Technologies, Inc
http://legion.virginia.edu/centurion/Applications.html

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/