From: Evgeniy Polyakov <[EMAIL PROTECTED]> Date: Mon, 8 May 2006 16:24:22 +0400
> I hope he does not take offence at name shortening :) Perhaps you are still not convinced how truly expensive the code path from netif_receive_skb() to the protocol receive processing really is. Van's channels eliminate that entire code path, and all it's data structure references and locks, completely. And by foregoing all of those data references and expensive locks, we free up precious cpu cache space and cpu cycles for other work. Because you cannot "simulate" the extra cache lines that are available by eliminating the code path between netif_receive_skb() and udp_rcv() you will really need to compare with a full implementation of channels to say anything for certain. And we've known that getting rid of this code path is necessary for _AGES_. Ask anyone who has been to any of the yearly Linux networking conferences, over and over again we talk about a grand unified flow cache that would turn all of the routing, netfilter, and socket lookups into one lookup. All of these lookups touch different data structures, have different locking rules, and have very poor cache behavior. Van gets the transformation into a single lookup as a side effect of how his channels work. It is absolutely necessary to find ways to get rid of these layering costs. "Layering is how you design networking protocols, not how you implement them." - 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