General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Rick Jones <rick.jones2@hp.com>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>
Cc: codel@lists.bufferbloat.net, bloat@lists.bufferbloat.net
Subject: Re: [Bloat] [Codel] better testing, linux 3.6.1, cerowrt credits, other stuff
Date: Tue, 09 Oct 2012 13:05:32 -0700	[thread overview]
Message-ID: <5074838C.7060303@hp.com> (raw)
In-Reply-To: <87mwzvphf1.fsf@toke.dk>

On 10/09/2012 12:35 PM, Toke Høiland-Jørgensen wrote:
> Rick Jones <rick.jones2@hp.com> writes:
>
> Hi Rick
>
> Thanks for your feedback.
>
>> The script looks reasonable. Certainly cleaner than any Python I've
>> yet written :) I might be a little worried about skew error though
>> (assuming I've not mis-read the script and example ini file). That is
>> why I use the "demo mode" of netperf in
>> http://www.netperf.org/svn/netperf2/trunk/doc/examples/bloat.sh though
>> it does make the post-processing rather more involved.
>
> Ah, I see. I'll look into that. As far as I can tell from that script,
> you're basically running it with the demo mode enabled, and graphing the
> results with each line as a data point?

Mostly.  The smallest step size in rrdtool is one second, so I create 
rrd's with that as the step size, but I try for sub-second samples from 
the interval results to mitigate (or try to) some of rrdtools averaging.

> There's a comment about using negative values for -D to increase
> accuracy at a cost of performance. Is this cost significant? And if it
> is, would there be any reason why it wouldn't be possible to just use
> positive values and then fix the error by interpolating values to be at
> fixed intervals when graphing?

When the demo mode was introduced into netperf, a gettimeofday() call 
was still relatively expensive, and I wanted to mitigate the effect of 
demo mode on overall performance.  So, what the code does is guess how 
many units of work will complete within the desired output interval. 
Then, once that quantity of work has been completed, netperf makes the 
gettimeofday() call to see if it is time to emit an interim result, 
adjusting the guesstimate for units of work per time interval 
accordingly.  However, if things slow-down considerably, that can lead 
to a rather long interval between interim results.

So, now that at least some platforms have an "inexpensive" 
gettimeofday() call, if a negative value is used, that signals netperf 
to make the gettimeofday() call after each unit of work (each send or 
recv call, or pair in the case of an RR test).  That should result in 
hitting the desired interval more frequently, save for when a single one 
of those calls takes longer.

I used rrdtool so I could get all the tests "snapped" to the same set of 
one second intervals starting on one second boundaries.

>> I see you are running the TCP_RR test for less time than the
>> TCP_STREAM/TCP_MAERTS test. What do you then do to show the latency
>> without the bulk transfer load?
>
> I ran the TCP_RR test by itself to get a baseline result. The idea with
> the different lengths is to start the streams, wait two seconds, and
> then run the roundtrip so that it finished two seconds before the
> streams (i.e. the roundtrip test is only running while the streams are).
> This is for my test setup, which is just a few computers connected with
> ethernet; so no sudden roundtrip variances should occur. I can see how
> it would be useful to get something that can be graphed over time; I'll
> try to look into getting that working.

You might give the two bulk transfer tests a bit longer to get going - 
say 15 seconds or so.  In at least some of my runs of bloat.sh I've seen 
the throughput take a while to build-up.  That is perhaps part of the 
reason why Dave Taht is calling for long RTT tests?

>> I was thinking of trying to write a version of bloat.sh in python but
>> before I did I wanted to know if python was sufficiently available in
>> most folks bufferbloat testing environments. I figure in
>> "full-featured" *nix systems that isn't an issue, but what about in
>> the routers?
>
> Is there any reason why it wouldn't be possible to run the python script
> on a full-featured machine and run the netperf instances via an ssh
> tunnel on the router (on a different interface than the one being
> tested, of course)?

Not really, apart from script complexity and brittleness.  The 
netperf_by_flavor.py script does something along those lines for 
OpenStack Nova instances.  (One of only two python scripts I've written 
thusfar, the second being post_proc.py which is used by that to 
post-process results of its run of the runemomniaggdemo.sh script)

happy benchmarking,

rick

  reply	other threads:[~2012-10-09 20:05 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-09  3:21 [Bloat] " Dave Taht
2012-10-09 14:31 ` Toke Høiland-Jørgensen
2012-10-09 16:45   ` [Bloat] [Codel] " Rick Jones
2012-10-09 18:28     ` Dave Taht
2012-10-09 19:35     ` Toke Høiland-Jørgensen
2012-10-09 20:05       ` Rick Jones [this message]
2012-10-10 14:27         ` Toke Høiland-Jørgensen
2012-10-10 23:27       ` Michael Richardson
2012-10-10 23:29         ` Stephen Hemminger
2012-10-10 23:55           ` Luigi Rizzo
2012-10-10 23:32       ` Rick Jones

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

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5074838C.7060303@hp.com \
    --to=rick.jones2@hp.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=codel@lists.bufferbloat.net \
    --cc=toke@toke.dk \
    /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