Yes, that is correct.
> But the tail and head of the skb, that will still be in skb-local memory
> right ?
Not sure what you mean by skb-local memory, but I think you are saying that
any packet headers/trailers will be in kernel space. If so that is correct.
>
> A scatter gather ethernet driver can then setup a DMA chain to send skb
> head, the kiovec's, and the skb tail, for each skb.
>
> I'd love to see that work - we run linux on embedded HW and every less
> copying of data can be a pretty performance win. And our ethernet HW is
> already scatter-gather.
Actually, it will be a performance loss for the common case. It is only for
high throughput apps that are aware of not to touch the buffers while packets
are in flight that it will be a win. So it would be best controlled by having
a socket option that defaults to off.
> Yeah, it'd be pretty stupid if an application forces the COW to trigger
> all the time, then you'd still be copying data :)
My point exactly.
> But like others said, sendfile is probably the most excellent first
> subject to try this stuff on!
Definitely, but sendfile won't be as clear a win when you have a high
throughput daemon that does any more than throw files down the pipe. In that
case, direct I/O from user space (possibly mmapped) may be faster.
It will be interesting to see whether it is worth the effort to do direct
userspace I/O, or whether sendfile wins.
-- Zachary Amsden zamsden@engr.sgi.com (650) 933-6919 09U-510 Core Protocols
- 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/