From: Andrew Gallatin <gallatin@myri.com>
To: netdev <netdev@vger.kernel.org>
Subject: CPU utilization increased in 2.6.27rc
Date: Tue, 12 Aug 2008 20:56:23 -0400 [thread overview]
Message-ID: <48A23137.2010107@myri.com> (raw)
I noticed a performance degradation in the 2.6.27rc series having to
do with TCP transmits. The problem seems to be most noticeable
when using a fast (10GbE) network and a pitifully slow (2.0GHz
athlon64) host with a small (1500b) MTU using TSO and sendpage,
but I also see it with 1GbE hardware, without TSO and sendpage.
I used git-bisect to track down where the problem seems
to have been introduced in Linus' tree:
37437bb2e1ae8af470dfcd5b4ff454110894ccaf is first bad commit
commit 37437bb2e1ae8af470dfcd5b4ff454110894ccaf
Author: David S. Miller <davem@davemloft.net>
Date: Wed Jul 16 02:15:04 2008 -0700
pkt_sched: Schedule qdiscs instead of netdev_queue.
Something about this is maxing out the CPU on my very-low end test
machines. Just prior to the above commit, I see the same
good performance as 2.6.26.2 and the rest of the 2.6 series.
Here is output from netperf -tTCP_SENDFILE -C -c between 2 of
my low end hosts:
Forcedeth (1GbE)
87380 65536 65536 10.05 949.03 14.54 20.01 2.510
3.455
Myri10ge (10GbE):
87380 65536 65536 10.01 9466.27 19.00 73.43 0.329
1.271
Just after the above commit, the CPU utilization increases
dramatically. Note the large difference in CPU utilization
for both 1GbE (14.5% -> 46.5%) and 10GbE (19% -> 49.8%):
Forcedeth (1GbE)
87380 65536 65536 10.01 947.04 46.48 20.05 8.042
3.468
Myri10ge (10GbE):
87380 65536 65536 10.00 7693.19 49.81 60.03 1.061
1.278
For 1GbE, I see a similar increase in CPU utilization from
when using normal socket writes (netperf -t TCP_STREAM):
87380 65536 65536 10.05 948.92 19.89 18.65 3.434
3.220
vs
87380 65536 65536 10.07 949.35 49.38 20.77 8.523
3.584
Without TSO enabled, the difference is less evident, but still
there (~30% -> 49%).
For 10GbE, this only seems to happen for sendpage. Normal socket
write (netperf TCP_STREAM) tests do not seem to show this degradation,
perhaps because a CPU is already maxed out copying data...
According to oprofile, the system is spending a lot of
time in __qdisc_run() when sending on the 1GbE forcedeth
interface:
17978 17.5929 vmlinux __qdisc_run
9828 9.6175 vmlinux net_tx_action
8306 8.1281 vmlinux _raw_spin_lock
5762 5.6386 oprofiled (no symbols)
5443 5.3264 vmlinux __netif_schedule
5352 5.2374 vmlinux _raw_spin_unlock
4921 4.8156 vmlinux __do_softirq
3366 3.2939 vmlinux raise_softirq_irqoff
1730 1.6929 vmlinux pfifo_fast_requeue
1689 1.6528 vmlinux pfifo_fast_dequeue
1406 1.3759 oprofile (no symbols)
1346 1.3172 vmlinux _raw_spin_trylock
1194 1.1684 vmlinux nv_start_xmit_optimized
1114 1.0901 vmlinux handle_IRQ_event
1031 1.0089 vmlinux tcp_ack
<....>
Does anybody understand what's happening?
Thanks,
Drew
next reply other threads:[~2008-08-13 0:56 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-13 0:56 Andrew Gallatin [this message]
2008-08-13 1:05 ` CPU utilization increased in 2.6.27rc David Miller
2008-08-13 15:06 ` Andrew Gallatin
2008-08-13 1:15 ` David Miller
2008-08-13 16:13 ` Andrew Gallatin
2008-08-13 19:52 ` Robert Olsson
2008-08-13 21:34 ` Stephen Hemminger
2008-08-13 21:56 ` Robert Olsson
2008-08-13 22:06 ` Stephen Hemminger
2008-08-13 22:21 ` Robert Olsson
2008-08-13 20:03 ` Andi Kleen
2008-08-13 20:36 ` Andrew Gallatin
2008-08-13 20:27 ` David Miller
2008-08-13 20:58 ` Andrew Gallatin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48A23137.2010107@myri.com \
--to=gallatin@myri.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.