linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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




  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).