From: Viktor Rosendahl <viktor.rosendahl@gmail.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-devel@vger.kernel.org
Subject: Re: Adding latency tracking to trace-cmd
Date: Thu, 8 Apr 2021 23:01:53 +0200 [thread overview]
Message-ID: <2b107e3e-ea62-919f-dcbb-3c324f709806@gmail.com> (raw)
In-Reply-To: <20210406164244.602df538@gandalf.local.home>
On Tue, 2021-04-06 at 16:42 -0400, Steven Rostedt wrote:
> On Tue, 6 Apr 2021 20:03:46 +0000
> <Viktor.Rosendahl@bmw.de> wrote:
>
<clip>
> > Without the --random option, I would at this point need to start
another
> > test
> > campaign, only then would I start seeing the longer latencies from
bar().
> >
> > On the other hand, if I use the --random option with the
latency-collector,
> > then
> > what will happen is that sometimes the latency-collector will open
the trace
> > file immediately and other times it will sleep and wait for up to
one second
> > before doing so. If it opens the file immediately, we will get the
first
> > latency. If based on that random toin coss function decides to
sleep, then
> > we
> > will get the second.
> >
> > If a long test camaping is exectuted, and foobar() is called
several times
> > during that campaign, then there is a good probability that we will
capture
> > both
> > the latency from foo() and the one from bar().
> > Now --random is a bit more complicated because it actually tosses
the coin
> > again
> > if another latency occurs when it is sleeping before opening the
file. The
> > probability of that coin toss function are chosen so that if we
assume that
> > there is a maximum of N closely occuring latencies, we will get
each of them
> > with probability 1/N. If the latency-collector detects a situation
were it
> > actually has detected N closely occuring latencies, it will
automatically
> > increase N to N + 1 and update the probablities of the coin toss
> > accordingly.
> >
> > So basically the idea is that by acting randomly, we will not
systematically
> > lose a particular latency. It will also not make matters worse if
we never
> > get
> > latencies that occur close to each other; the only drawback is that we
> > sometimes
> > wait for one second before opening the trace file and that doesn't
really
> > matter
> > if there aren't any closely occuring latencies.
>
> Hmm, sounds more like "--various" would be better than "--random". Just
> because it appears you wont to try different timings. Having a --random
> option just doesn't sound like it's what you expect it to be.
>
I guess that you are right that with --random many people may assume the
sleep time to be random. Perhaps --dizzy-sleep or --arbitrary-sleep
would be better?
For the latency-collector, I used the name --random because the behavior
is based on the lrand48_r() call, seeded by /dev/urandom. In my thinking
it's the sleeping behavior that is random, not the sleep time.
I guess that a mathematical purist may say that the behavior is
arbitrary rather than random, because if the value N is different from
two, then there are unequal probabilities between the two choices.
At first when I developed the latency-collector, I thought that using a
random sleep time would be the right approach but I came to the
conclusion that it is not a good idea.
If we have the case with a burst of two latencies, where the first one
is 5 ms, , then if we for example sleep randomly between 0 and 500 ms,
we will only have a 1% chance to get the first latency. If we use the
random algorithm from the latency-collector, with N=2, then we have 50%
chance, which is much better. Even if we would have been paranoid to
initialize with N=5, in order to prepare for bursts sizes of up to 5,
then we would still have a 20% chance.
If we have a random sleep time then we would need to make assumptions on
how long the latencies are and how much time there is between them, and
there is no way to guess that beforehand.
With the random behavior, we only need to make an assumption about how
many latencies there are going to be in a burst, which is the value N.
This is also impossible to know with certainty but we can make some
educated guess about it. Also, as I already mentioned, if the
latency-collector ever encounters N latencies in a burst, then it will
automatically increment N.
> There's already a "-s" option that takes a sleep interval between
wakeups,
> which sounds similar to what you have. Perhaps we can make "-1" a special
> value to do the "random" wakeup thing. "0" is already special to make it
> wake up when it detects data in the buffer.
>
To me "-s -1" feels a bit too cryptic and non-descriptive. Also, I
wonder how many would read the description of the -s option carefully
enough to notice it.
On the other hand, trace-cmd record seems to already use most of the
alphabet as short options.
Do you think it could be acceptable to add a new long option, such as
--dizzy-sleep?
best regards,
Viktor
next prev parent reply other threads:[~2021-04-08 21:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-24 16:54 Adding latency tracking to trace-cmd Steven Rostedt
2021-02-24 19:22 ` Viktor.Rosendahl
2021-02-24 20:10 ` Steven Rostedt
2021-04-06 17:38 ` Steven Rostedt
2021-04-06 20:03 ` Viktor.Rosendahl
2021-04-06 20:24 ` Viktor.Rosendahl
2021-04-06 20:42 ` Steven Rostedt
2021-04-08 21:01 ` Viktor Rosendahl [this message]
2021-04-08 21:17 ` Steven Rostedt
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=2b107e3e-ea62-919f-dcbb-3c324f709806@gmail.com \
--to=viktor.rosendahl@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.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).