Jeff Garzik wrote:

Key point 1:
Van's slides align closely with the design that I was already working on, for zero-copy RX.

To have a fully async, zero copy network receive, POSIX read(2) is inadequate.

Is there an aio_read() in POSIX adequate to the task?

One needs a ring buffer, similar in API to the mmap'd packet socket, where you can queue a whole bunch of reads. Van's design seems similar to this.

Key point 2:
Once the kernel gets enough info to determine which channel should receive a packet, it's done. Van pushes TCP/IP receive processing into the userland app, which is quite an idea. This pushes work out of the kernel and into the app, which in turn, increases the amount of work that can be performed in parallel on multiple cpus/cores.

Increased opportunity for parallelism is indeed goodness.

Are you speaking strictly in the context of a single TCP connection, or for multiple TCP connections? For the latter getting out of the kernel isn't a priori a requirement. Actually, I'm not even sure it is a priori a requirement for the former?

This also has the side effect of making TOE look even more like an inferior solution... Van's design is far more scalable than TOE.

I'm not disagreeing, but it would be good to further define the axis for scalability.

rick jones
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to