- modify hwlatdetector.py to detect and use the ftrace hwlatdetector
- rewrite using base class for detector
Big rewrite where we create a base Detector class and use that
as the base class for Tracer and Hwlat classes.
Signed-off-by: Clark Williams <williams@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
We decided it is more interesting, in our automated tests, to have a
higher tolerance to SMI as most of the test boxes are not optimized for
RT. On the other hand, we would like to know how big are the SMI
latencies on these boxes.
This commit adds the --hardlimit parameter, which defines the real
PASS/FAIL latency criteria. Latencies above --threshold will be
annotated, but the test may PASS if the observed latencies are smaller
than --hardlimit.
When --hardlimit is not informed, the value used for --threshold is also
used as the hard limit.
Signed-off-by: Luis Claudio R. Goncalves <lgoncalv@redhat.com>
Signed-off-by: Clark Williams <williams@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
The short option 's' was originally intended to be the short form of
--system
Commit b35bc97cfd
which added the new option --secaligned broke this, by accidently
inserting the new option between the short form and long form.
Reported-by: Daniel Seemer <phaiax-cyclictest@invisibletower.de>
Signed-off-by: John Kacur <jkacur@redhat.com>
Fix spelling mistake, "that" should be "than" in the following message
For less that 2ms run times, you need to
have HRTICK enabled in debugfs/sched_features
Signed-off-by: John Kacur <jkacur@redhat.com>
Improve message if max latency is below threshold.
If the maximum latency is below the threshold for reporting, 0us is output.
This is confusing, and not accurate, so print the message "Below threshold"
instead.
Suggested-by: Jiri Kastner <jkastner@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Although the interval code was added the 'i' was missing from the getopt
list, and there was no help text for it either.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: John Kacur <jkacur@redhat.com>
- Add cyclicdeadline and deadline_test to the Makefile
- Conditionally define _GNU_SOURCE in the new programs
- Add the new programs to the .gitignore file
Signed-off-by: John Kacur <jkacur@redhat.com>
Add cyclicdeadline and deadline_test - these are two programs written by
Steven Rostedet to test the functionality and performance of
SCHED_DEADLINE
Signed-off-by: John Kacur <jkacur@redhat.com>
Cyclictest's SMI counter implementation is based on the turbostat
tool in the Linux kernel. This patch syncs cyclictest's has_smi_counter()
with turbostat's check.
From turbostat's commits:
cdc5727 tools/power turbostat: initial KBL support
ec53e59 tools/power turbostat: initial SKX support
e4085d5 tools/power turbostat: initial BXT support
[ John & Clark, I did it in the branch devel/v2.0, but we need ]
[ this in the 0.x and 1.x series as well. ]
Signed-off-by: Daniel Bristot de Oliveira <bristot@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
This checklist is no longer relevant. It has a lot of steps that are
distro relevant, and I've removed all of the files that are not distro
independent
Signed-off-by: John Kacur <jkacur@redhat.com>
- smidetect was long ago renamed to hwlatdetct, reflect this in hwlat.txt
- Fix a few spelling mistakes, and add a missing option
Signed-off-by: John Kacur <jkacur@redhat.com>
Fix a number of errors like procesor->processor, specifed->specified and
cylictest->cyclictest.
Note, Uwe Kleine-König <ukleinek@debian.org> pointed out some of these
spelling errors previously.
Signed-off-by: John Kacur <jkacur@redhat.com>
John,
This patch is against the devel/v0.98 branch. It turns off tracing in the tracemark() so that we don't lose information about what was going on when we hit the latency:
The current logic of using --tracemark and --notrace works for running
cyclictest with trace-cmd, but even if we are not doing any trace
manipulation in cyclictest, we still need to stop tracing when we hit a
breaktrace threshold (i.e. -b <n>).
Modify startup logic to hold open file descriptors for the tracemark file
*and* the tracing_on file. When we hit a threshold and call the tracemark()
function, write the marker to the trace buffers and then write a "0\n" to
the tracing_on file to turn off tracing, otherwise we lose the information
immediately prior to the point where we hit the latency.
Signed-off-by: Clark Williams <williams@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
We have done a good job keeping cyclictest help up-to-date, but we have
not been actively updating the man page.
There were many missing options, as well as options that don't exist
anymore. To be more precise, some short form options had been removed,
but there are still corresponding long-version options.
This patch contains a considerable amount of updates to the man-page to
keep it in sync, and in some cases it also updates the cyclictest help
where needed. For example, the cyclictest help options were not always
in the proper order. In some cases I changed the wording to make it more
closely correspond to the man page
Signed-off-by: John Kacur <jkacur@redhat.com>
Signed-off-by: Clark Williams <williams@redhat.com>
NUMA users should have long ago stepped up to libs that have
numa_parse_cpustring_all(). Make this the default so that we can include
isolated cpus in the affinity string.
If there are any NUMA users or distros left that have old libraries that
don't have numa_parse_cpu_string_all(), and only numa_parse_cpu_string()
they can compile like this
make HAVE_PARSE_CPUSTRING_ALL=0
Signed-off-by: John Kacur <jkacur@redhat.com>
Reviewed-and-Tested-by: Luiz Capitulino <lcapitulino@redhat.com>
The new --tracemark option can be used to run cyclictest under
trace-cmd.
This means we don't want cyclictest's built-in tracing to be used, so
this option is only compatible with --notrace.
Therefore turn --notrace on if --tracemark is invoked even if the user
doesn't explicitly request this.
Signed-off-by: John Kacur <jkacur@redhat.com>
Commit 3290f8412a changed
exit(-1) to exit(1) for many programs in rt-tests for consistency.
rt-migrate-test needs tri-state exit statuses, because of the way
some existing bash scripts consume it's results.
This could no-doubt be improved in the future, and there are some
inconsistencies in the exit statuses in this program alone, but as they
are not urgent to fix, and the current fix makes things worse, reverting
this for now.
Signed-off-by: John Kacur <jkacur@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
cyclictest will only write to /sys/kernel/debug/tracing/trace_maker
if it's also setup to do tracing. This conflicts with
running cyclictest under trace-cmd.
The --tracemark option tells cyclictest to write to the
trace_marker file even when it's not doing tracing.
It can be used like this:
# trace-cmd record [...] cyclictest [...] -bX --tracemark --notrace
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
A function added by a future commit will want to call
this code too.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
If you pass -b and --notrace to cyclictest today, it will
write to tracing_on when -b latency is reached.
Fix this by making tracing() check notrace.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
A function added by the next commit will want to call
this code too.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
The kernel uses only 8 bits of the status as a return
code, so this actually becomes 255 in the shell.
In any case, the most widely convension is exit(1)
for failures, so let's be consistent.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Add the description of the --smi comand line option of cyclictest.
"--smi Enable SMI count/detection on processors with SMI count support."
Signed-off-by: Daniel Bristot de Oliveira <bristot@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Modify the sample reading code to return correct string data and to
catch exceptions in non-blocking mode correctly on python{2,3}
Signed-off-by: Clark Williams <williams@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Use __future__ import of print_function and make sure all instances
of print are now functions rather than statements.
Signed-off-by: Clark Williams <williams@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Originally the hwlat_detector was built as only a module and was
controlled by module parameters. The latest version uses debugfs
control files so there is no real need to force it to be a module.
The hwlatdetector script in rt-tests assumes that the hwlat_detector
code was built as a module. This patch adds logic to detect and
handle if hwlat_detector is a builtin.
Signed-off-by: Clark Williams <williams@redhat.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
This helps it compile with clang or any other compilers besides gcc
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Remove anything to do with rpm, spec, release and so on that should be
maintained in distribution specific ways. One exception is make tarball,
which is useful in a more general way.
Signed-off-by: John Kacur <jkacur@redhat.com>
The doc dir only contains one file which is a list of things for the
maintainers to do at release time, no need to package this in the
tarball.
Since the file rt.spec-in has now been removed, we no-longer need to
mention it in the .gitattributes file
Signed-off-by: John Kacur <jkacur@redhat.com>
There is no need to maintain this file here, since it's not general
enough for general use. Every distribution will have it's own way of
doing this.
Signed-off-by: John Kacur <jkacur@redhat.com>
There was an easily fixed merge conflict in the option_values, using the
conflict as an opportunity to clean this up
Signed-off-by: John Kacur <jkacur@redhat.com>
These could be defined elsewhere, be careful when defining these
Cc: John Kacur <jkacur@redhat.com>
Signed-off-by: Henrik Austad <haustad@cisco.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Some buildsystems use androidabe, so an exact match will break in those
circumstances.
Cc: John Kacur <jkacur@redhat.com>
Signed-off-by: Henrik Austad <haustad@cisco.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Bionic is the libc implementation used in Android and should not be
confused with the architecture.
Cc: John Kacur <jkacur@redhat.com>
Signed-off-by: Henrik Austad <haustad@cisco.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
88af643971 (android: adjust target for android) introduced some really
ugly ifdefs to avoid calling into pthread_barrier_wait and
pthread_barrier_init.
This patch attempts to coalesce this into a single place and let the
compiler handle the linking so that cyclictest.c is untouched by evil
ifdefs.
It also combines NO_PTHREAD_BARRIER and NO_PTHREAD_SETAFFINITY into a
PTHREAD_BIONIC as it does not make much sense to keep them separated.
Compiled and tested on:
- x86_64 (v3.13 kernel)
- tilegx (v3.10 kernel)
- arm64 android (v3.10 kernel)
Note: this includes bionic.h unconditionally, so it makes most sense to
keep bionic.h in src/include/ (and not in src/arch/bionic/).
Cc: John Kacur <jkacur@redhat.com>
Signed-off-by: Henrik Austad <haustad@cisco.com>
Signed-off-by: John Kacur <jkacur@redhat.com>
Unfortunately c869f3cdcd wasn't sufficient
to fix #ifdef #else functionality for uclib, broken by the changes for
bionic.
In practice this probably didn't break anyone though, except possibly
for the new bionic code which probaly doesn't have too many adapters
(yet).
This should also help Henrik move the NO_PTHREAD_SETAFFINITY functionality to
the bionic file.
Signed-off-by: John Kacur <jkacur@redhat.com>
Create a linked-list of data, including a time stamp, that is
recorded everytime a latency measurement is above a given number (trigger).
This data is printed out at the end of a run. If we have
more spikes than we have allocated nodes in our list for, we stop
recording the data, but keep counting the number of spikes.
This introduces two new long options.
--spike=trigger, where the trigger is given in usec. Any time a
spike > trigger occurs we record the data.
--spike-nodes=num_of_nodes, is the amount of data we can record, the
default is 1024
Here is what a sample run looks like. (non-rt kernel)
su -c './cyclictest -t4 -p99 --spike=30 --duration=60'
Password:
policy: fifo: loadavg: 0.69 0.78 0.60 1/641 6420
T: 0 ( 6385) P:99 I:1000 C: 59996 Min: 2 Act: 2 Avg: 2 Max:
1476
T: 1 ( 6386) P:99 I:1500 C: 39999 Min: 1 Act: 2 Avg: 2 Max:
952
T: 2 ( 6387) P:99 I:2000 C: 29999 Min: 2 Act: 2 Avg: 3 Max:
504
T: 3 ( 6388) P:99 I:2500 C: 23999 Min: 1 Act: 2 Avg: 2 Max:
1423
T: 2 Spike: 504: TS: 490531620
T: 2 Spike: 270: TS: 526847386
T: 2 Spike: 51: TS: 527211167
T: 2 Spike: 44: TS: 528261160
T: 1 Spike: 31: TS: 528952631
T: 2 Spike: 32: TS: 529253148
T: 2 Spike: 52: TS: 529317169
T: 0 Spike: 1444: TS: 530049519
T: 1 Spike: 419: TS: 530049520
T: 0 Spike: 1476: TS: 530318551
T: 1 Spike: 952: TS: 530318553
T: 3 Spike: 1423: TS: 530318551
T: 0 Spike: 972: TS: 531532046
T: 0 Spike: 34: TS: 531987109
spikes = 14
Signed-off-by: John Kacur <jkacur@redhat.com>
Place TARGETS after sources. The evaluation of it doesn't depend on it's
position in the file, so remove the incorrect comment
Signed-off-by: John Kacur <jkacur@redhat.com>