performance update

Robert Morris rtm at cag.lcs.mit.edu
Mon May 10 17:02:28 EDT 1999


Here's what I know about Linux and IPB forwarding performance.

For Linux's standard IP forwarding path:
  Linux can forward 46000 pkt/second; this is 22 us/packet. Cycle counters indicate:
    11 us/pkt in tulip receive interrupts.
     6 us/pkt in Linux's IP forwarding path.
     4 us/pkt I can't account for.
  1.6 us/pkt spent in instruction cache miss stalls.
  6   us/pkt of L1 data misses. I don't know if the CPU was stalled for this long.

For IPB in the kernel, using conf/cone-kbm.ipb:
  We can forward 27782 p/s; this is 36 us/packet. Cycle counters indicate:
    13 us/pkt in tulip rcv interrupts.
    12 us/pkt in IPB code.
    11 us/pkt I can't account for.
  7.4 us/pkt in i-cache stalls.
  9 us/pkt in L1 data misses.

Our code may cost 9 us/pkt more than Linux in cache misses.

Our code makes the tulip less efficient (13 us rather than 11 per
packet) because we can't forward packets fast enough to cause the
tulip to receive multiple packets per interrupt.

The time spent in IPB code is still a bit high, since factions seem to
take about 0.5 us when I benchmark them individually. Under pretty
ideal conditions (no cache misses). The time spent in cache misses
could easily account for the difference between the individual
benchmark times and the 12 us/pkt.



More information about the click mailing list