netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rick Jones <rick.jones2@hp.com>
To: Christoph Lameter <cl@linux.com>
Cc: netdev@vger.kernel.org
Subject: Re: Network latency regressions from 2.6.22 to 2.6.29
Date: Thu, 16 Apr 2009 13:05:01 -0700	[thread overview]
Message-ID: <49E78F6D.1070603@hp.com> (raw)
In-Reply-To: <alpine.DEB.1.10.0904161504090.15835@qirst.com>

Christoph Lameter wrote:
> On Thu, 16 Apr 2009, Rick Jones wrote:
> 
> 
>>Does udpping have a concept of service demand a la netperf?  That could help
>>show how much was code bloat vs say some tweak to interrupt coalescing
>>parameters in the NIC/driver.
> 
> 
> No. What does service on demand mean? The ping pong tests are very simple
> back and forths without any streaming or overlay.

It is a measure of efficiency - quantity of CPU consumed per unit of work.  For 
example, from my previous email:

UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to bl870c2.west 
(10.208.0.210) port 0 AF_INET : histogram : first burst 0 : cpu bind
Local /Remote
Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
Send   Recv   Size    Size   Time    Rate     local  remote local   remote
bytes  bytes  bytes   bytes  secs.   per sec  % S    % S    us/Tr   us/Tr

126976 126976 1       1      10.00   7550.46   2.33   2.41   24.721  25.551
126976 126976

The transaction rate was 7550 (invert for the latency) and service demand was 
24.721 (give or take :) microseconds of CPU time consumed per transaction on the 
one side and 25.551 on the other (identical systems and kernels).  If we make the 
handwaving assumption that virtually all the CPU consumption on either side is in 
the latency path, and calculate the overall latency we have:

overall: 132.44 microseconds per transaction
CPU time: 50.27
other:    80.17

With "other" being such a large component, it is a tip-off (not a slam dunk, but 
a big clue, that there was a sub-standard interrupt avoidance mechanism at work. 
  Even if we calculate the transmission time on the wire for the request and 
response - 1 byte payload, 8 bytes UDP header, 20 bytes IPv4 header, 14 bytes 
Ethernet header - 344 bits or 688 both request and response (does full-duplex GbE 
still enforce the 60 byte minimum?  I forget) we have:

wiretime: 0.69

and even if DMA time were twice that, there is still 75+ microseconds 
unaccounted.  Smells like a timer running in a NIC.  And/or some painfully slow 
firmware on the NIC.

If the latency were constrained almost entirely by the CPU consumption in the 
case above, the transaction rate should have been more like 19000 transactions 
per second.  And with those two systems, with a different, 10G NIC installed (not 
that 10G speed is required for single-byte _RR), I've seen 20,000 
transactions/second.

That is with netperf/netserver running on the same CPU as taking the NIC 
interrupt(s).  When running on a different core from the interrupt(s) the 
cache-to-cache traffic dropped the transaction rate by 30% (a 2.6.18esque kernel, 
but I've seen similar stuff elsewhere).

So, when looking for latency regressions, there can be a lot of variables.

rick jones

  parent reply	other threads:[~2009-04-16 20:05 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-16 16:10 Network latency regressions from 2.6.22 to 2.6.29 Christoph Lameter
2009-04-16 17:21 ` Rick Jones
2009-04-16 19:06   ` Christoph Lameter
2009-04-16 19:29     ` Eric Dumazet
2009-04-16 19:33       ` Christoph Lameter
2009-04-16 22:47         ` David Miller
2009-04-17 13:46           ` Christoph Lameter
2009-04-17 21:43             ` Ilpo Järvinen
2009-04-16 20:05     ` Rick Jones [this message]
2009-04-16 18:07 ` Ben Hutchings
2009-04-16 19:02   ` Christoph Lameter
2009-04-16 21:19     ` Ben Hutchings
2009-04-16 22:47     ` David Miller
2009-04-16 19:43 ` Eric Dumazet
2009-04-16 19:50   ` Eric Dumazet
2009-04-16 20:01     ` Christoph Lameter
2009-04-16 23:00       ` David Miller
2009-04-17 16:42         ` Network latency regressions from 2.6.22 to 2.6.29 (results with IRQ affinity) Christoph Lameter
2009-04-18  8:18           ` Eric Dumazet
2009-04-18  8:20             ` Eric Dumazet
2009-04-18 19:43           ` Eric Dumazet
2009-04-20 17:29             ` Christoph Lameter
2009-04-20 17:57               ` Eric Dumazet
2009-04-20 18:13                 ` Christoph Lameter
2009-04-20 18:46                   ` Eric Dumazet
2009-04-20 19:16                     ` Christoph Lameter
2009-04-20 20:07                       ` Eric Dumazet
2009-04-20 21:14                         ` Christoph Lameter
2009-04-20 21:52                           ` Eric Dumazet
2009-04-21 14:00                             ` Christoph Lameter
2009-04-21 19:36                             ` Network latency regressions from 2.6.22 to 2.6.29 (MSI off) Christoph Lameter
2009-04-20 19:44               ` Network latency regressions from 2.6.22 to 2.6.29 (results with IRQ affinity) Evgeniy Polyakov
2009-04-16 19:55   ` Network latency regressions from 2.6.22 to 2.6.29 Christoph Lameter
2009-04-16 21:57     ` Michael Chan
2009-04-17 13:47       ` Christoph Lameter
2009-04-16 22:59     ` David Miller

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=49E78F6D.1070603@hp.com \
    --to=rick.jones2@hp.com \
    --cc=cl@linux.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).