Messages in this thread | | | Subject | Re: Kernel Development & Objective-C | From | Gilboa Davara <> | Date | Mon, 03 Dec 2007 14:35:31 +0200 |
| |
On Mon, 2007-12-03 at 07:12 +0200, Avi Kivity wrote: > Andi Kleen wrote: > > Avi Kivity <avi@argo.co.il> writes: > > > >> [I really doubt there are that many of these; syscall > >> entry/dispatch/exit, interrupt dispatch, context switch, what else?] > >> > > > > Networking, block IO, page fault, ... But only the fast paths in these > > cases. A lot of the kernel is slow path code and could probably > > be written even in an interpreted language without much trouble. > > > > > > Even these (with the exception of the page fault path) are hardly "we > care about a single instruction" material suggested above. Even with a > million packets per second per core (does such a setup actually exist?) > You have a few thousand cycles per packet. For block you'd need around > 5,000 disks per core to reach such rate
Intel's newest dual 10GbE NIC can easily (?) throw ~14M packets per second. (theoretical peak at 1514bytes/frame) Granted, installing such a device on a single CPU/single core machine is absurd - but even on an 8 core machine (2 x Xeon 53xx/54xx / AMD Barcelona) it can still generate ~1M packets/s per core.
Now assuming you're doing low-level (passive) filtering of some sort (frame/packet routing, traffic interception and/or packet analysis) using hardware assistance (TSO, complete TCP offloading, etc) is off the table and each and every cycle within netif_receive_skb (and friends) -counts-.
I don't suggest that the kernel should be (re)designed for such (niche) applications but on other hand, if it works...
- Gilboa
| |