Hello,

I'm profiling Linux IP packet forwarding performance. In common case I see this
functions eating most of CPU cycles.

13735.00 22.5% build_skb  
5138.00   8.4% ipt_do_table 
4750.00   7.8% fib_table_lookup
3519.00   5.8% ixgbe_clean_rx_irq
2836.00   4.6% nf_iterate
1530.00   2.5% dev_queue_xmit

Looks good. But accidentally I run tcpdump program on one of the NICs related
to my test. After killing tcpdump I see that top is different:

6362.00 10.3% fib_table_lookup
6227.00 10.1% ipt_do_table
4300.00  7.0% ixgbe_clean_rx_irq
3771.00  6.1% nf_iterate
3284.00  5.3% build_skb
2179.00  3.5% ixgbe_xmit_frame_ring

Dramatic change in build_skb() cpu cycles. But tcpdump is not active anymore.
More than this, if I stop pktgen on traffic generator PC for a few seconds and
start it again without any other changes, I see that build_skb() is top offender
again. Running tcpdump again and killing it move fib_table_lookup() or
ipt_do_table() (they are pretty same in cpu cycles) to the top. So this behavior
is reproducible.

I just have no sane explanation to such strange behavior. Maybe someone have?

Thank you!
--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to