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
next prev parent 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