Age | Commit message (Collapse) | Author | Files | Lines |
|
Conflicts:
doc/rteval.8
rteval.spec
rteval/cyclictest.py
rteval/hackbench.py
rteval/rteval.conf
rteval/rteval.py
setup.py
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Bugzilla: 1432625
updated specfile to 2.13
updated kernel tarball in specfile to linux-4.9
updated version to 2.13
Makefile: changed kernel tar file to 4.9; removed default build of xmlrpcrpm
change requires for rteval-loads to version 1.4
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Bugzilla: 1382155
current default for cyclictest is to use itimers as the default timer
which was fine back in the day but now we should default to using
modern timer with hrtimer underpinings.
Add the -n cyclictest option to the default commandline to force
use of clock_nanosleep(2)
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
This modification to kcompile takes into account NUMA topology
rather than treating the system as a big SMP box. Make loads are
started on a per-node basis (e.g. on a four node system there would be
four makes started), and the make commands are restricted to the cpu
cores available on that node.
This is an attempt to reduce cross-node traffic and to better mimic
a well-behaved realtime application.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
This file adds classes for CpuList, NumaNodes and SysTopology. The SysTopology class
is intended to be instantiated early in the rteval run and provide information to
modules that will allow them to intelligently place loads and measurement programs
based on the system resources.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
This file adds classes for Cpus, NumaNodes and SysTopology. The SysTopology class
is intended to be instantiated early in the rteval run and provide information to
modules that will allow them to intelligently place loads and measurement programs
based on the system resources.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Bugzilla: 1312057
Added function get_user_name() to handle unset environment variables
SUDO_USER and USER.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Bugzilla: 1333831
if only one of the cpulist options (--measurement-cpulist and
--loads-cpulist) is specified, default the unspecified cpulist to
be the inverse of the specified list.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
The hwlatdetect module was never intended to run with a load; it is
a standalone RT test and should not be an rteval test module.
Remove it.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add the --tracemark and --notrace options to the cyclictest command line
when the --cyclictest-breaktrace option has been specified.
Remove the logic which tried to automatically do an extract of the trace
data after a breaktrace triggered. Leave that for the user to do.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
print the rteval version and exit
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Added the -V/--version option to print the rteval version number
and exit.
Added code to handle no arguments, which will trigger a usage message
from the option parser.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
rteval failed while running in a test environment with the following error:
File "/usr/lib/python2.7/site-packages/rteval/rtevalConfig.py", line 41, in default_config_search
(os.getenv('SUDO_USER') or os.getenv('USER'))), '.rteval'),
TypeError: cannot concatenate 'str' and 'NoneType' objects
Add this patch to deal with no SUDO_USER or USER environment variable in sparse
environments.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Previously a SIGINT would cleanly stop the run and would allow for
report generation, but any other signal would kill the run. Add
SIGTERM to valid stop events. Still kill the run if any signal
other than SIGINT or SIGTERM are received.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
When --loads-cpulist is specified, make sure we take that into
account when setting up to use either numactl or taskset to place
the hackbench workloads.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
when --load-cpulist is specified report where the loads are running.
Ditto for --measurement-cpulist.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Stop using --cpubind and move to --cpunodebind.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Change delay between finish of one load invocation from 5 seconds
to 2 seconds.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
fix version mixup between specfile, setup.py and rteval.py
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Sync'ed with distgit modifications
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
setup groups to be 3 times number of cpus per node and increase
both loops and datasize from 100 to 1000
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
[1282826]
Modify the hackbench load to avoid cross-node memcopies, which tends to result
in latency spikes as the number of nodes/cpus grows. Create one hackbench instance
per numa node and set internal jobs value to the number of cores per node.
This change makes sense because no realtime application designer in their right
mind would setup something like hackbench to allocate/memcpy/deallocate across
numa nodes.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
The HWLatDetect module is not ready for production use and
should not be used with another measurement module anyway.
Comment it out in the default configuration.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Remove references to rteval/rteval.py and add refs to
rteval/version.py.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
make sure kernel-headers is installed to support the
kcompile load.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
python-schedtils -> python-schedutils
python-ethtools -> python-ethtool
Reported-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Bugzilla: 1212452
When no configuration was specified on the command line, rteval was not
loading the default configuration file.
Signed-off-by: Jiri Kastner <jkastner@redhat.com>
Signed-off-by: Luis Claudio R. Goncalves <lgoncalv@redhat.com>
|
|
|
|
Change to use the selected set of cpu cores for measuremen threads
rather than assuming all cores will be measured. This means that
the cpu list may be 'sparse' so take care to not use ranges; use
the actual list of selected cpu cores.
Stop parsing /proc/cpuinfo and use the helper routine cpuinfo() to
get cpu information.
Add a text representation for a RunData object so that it
can be printed (mostly for debugging).
Change the report generation loop to iterate over the actual cpus
specified and not a range of 0..ncpus since a range no longer
specifies the correct cpus.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add helper function in misc.py:
expand_cpulist() - expands a string cpu range into a list of
cpu numbers (make sure this is a list of string values)
online_cpus() - return a list of online cpu numbers
cpuinfo() - return a dictionary of dictionaries where the first
index is the core number (as a string) and the second
is the property defined under that core in the /proc/cpuinfo
file.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Use the input cpulist from --loads-cpulist to place the kcompile
and hackbench loads (or any other load modules) on specific cpu
ranges with the 'taskset' utility.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add a cpulist paramter to load and measurement groups for use in
setting affinity in both loads and measurement modules.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Use the input cpulist from --loads-cpulist to place the kcompile
and hackbench loads on specific cpu ranges with the 'taskset'
utility.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add a cpulist paramter to load and measurement groups for use in
setting affinity in both loads and measurement modules.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Get rid of a couple of trailing whitespaces and make sure that
list initializers all have commas (so subsequent additions don't
fail on the first try)
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
To successfully run the kcompile load, the system must have
the kernel-headers package installed. This commit adds:
Requires: gcc binutils make kernel-headers
to the rteval-loads specfile.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
set the environment variable LD_BIND_NOW before kicking everything
off. This will force shared library symbols to be resolved up
front and not lazily resolved during the test run.
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Conflicts:
rteval.spec
|
|
The wrong XML tag was used in the database column for mean and median, causing
these two fields to be mixed up. So the database saved the mean value in the median
column and the median value in the mean column.
For those who use this parser, the easiest approach is to just rename the columns in
database to correct this. This should be done before installing this updated
parser definition.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Just a temporary hack until the whole path detection is overhauled.
Signed-off-by: David Sommerseth <davids@redhat.com>
(cherry picked from commit ad54f695d4629b4f77f264b5c87cd6adc5d011af)
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Backport of commit e0ca74e9c9f7f83a9db08d062b5ca8bdf05ff748 from v1.3x
Signed-off-by: Clark Williams <clark.williams@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
This caused Python 2.7 sdist to not include the files listed in
the recursive-include statement.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Escaped any use of '%' in rpm specfile to prevent rpm from trying
to expand the following name as a variable
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
properly escaped any '%' characters used in changelog entries
and removed trailing whitespace.
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
properly escaped any '%' characters used in changelog entries
and removed trailing whitespace.
Signed-off-by: Clark Williams <clark.williams@gmail.com>
|
|
This module runs in parallel with cyclictest and will every minute
use sysstat/sadc to collect all available system statistics. These
statistics is both added as a single file to the tarball and embedded
into the summary.xml.
Also changed the polling time which checks if measurement and load modules
are alive from every second to every minute.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
This adds a dependency of the trace-cmd package as well, but it will
improve the ability to better understand what happened when this the
threshold broke.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
The data used to do the mathematical reporting is based on histogram data,
where the calculated variance will be rather pointless to gather.
Imagine you have 3 samples in the historgram in the 2000µs slot, even if
you have quite a lot of data with the average measurements around 50µs,
the calculated "variance" for that time slot will be (1950^2)*3. Even
though the final variance calculation will divide on number of samples
gathered, it will take an enormous amount of samples within a the lower
time slots to make this value interesting.
So rather, don't report or save the calculated variance. However, the
standard deviation is based on the variance, that value is far more sane
due to the needed square root function on the final variance value. So
it gives a far more sane and interesting value. The applied math in the
cyclictest module should be fine itself, it's just the variance value
that isn't much interesting on this kind of data source.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Currently ignoring load modules in general, as the <loads/> tags
isn't easily extended. Not convinced it makes any sense to
track these time stamps on load modules anyway.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
To avoid depending on libxslt-python, use the more standard Python lxml
module for XSLT processing.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Ensure that hackbench really is stopped before continuing further.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
As the rtevalModulePrototype::run() method will call Hackbench::_WorkloadTask()
every second without ensuring hackbench is running first - wait for hackbench
to complete before returning from _WorkloadTask().
This approach was chosen here as Hackbench is normally a shortliving process
anyway.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
Also resolvs some potential naming conflicts with the 'id' and 'type'
variables.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
- Updated the GPLv2 license text to match the latest GPLv2 from FSF
- Updated all FSF addresses in all copyright notices in source files
- Updated copyright years for all contributors to include 2013
- Removed all #!/usr/bin/python lines in files which does not need it
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Avoids saving misinformation in the report, by just reporting the latency
statistics when samples have been collected. In addition also avoid
displaying these empty fields in the summary report.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Adds a note in the summary report if breaktrace was triggered with
some info related to that.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Using subprocess.PIPE doesn't allow cyclictest to completely exit
before the pipe is emptied. When using cyclictest with --breaktrace,
rteval will then not see that cyclictest isn't measuring and will
wait until the complete measurement duration has completed instead
of doing an earlier exit.
By using tempfile.SpooledTemporaryFile(), subprocess have a valid
file descriptor it can write the stdout data too. This makes also
cyclictest exit instantly when it needs to.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
As rteval depends on cyclictest running in histogram mode, the
distance argument doesn't make sense as cyclictest enforces it to 0.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This enables the --breaktrace feature in the cyclictest tool, but
rteval will also collect the trace data and put it in the resulting
tarball.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Modules doesn't start running instantly, but they start preparing to
be kicked off.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This is to help the system to settle down before kicking off the
realtime measurement workload. Otherwise some abnormal latency
spikes might be logged, which would be false alarms. Considering
that the a measurement run should run for several hours, this
time-shifting for 30 seconds shouldn't really change the overall
results.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
If a module sets the self._donotrun flag to True, the module logic will
take care of not running this module at all.
This also sorts out some issues when hackbench is not run, where some of
the log file descriptors are not found when cleaning up in the end.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
If rteval is used as a library, it would easily throw an exception
due to the wrong data type. This patch makes it a bit more flexible.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
These files was added by commit a99fa86133705e63bc7183db7b287d8855c3648d
Also added some more tweaks to avoid importing libxml2 and other
python modules. These modules might not be available on the build box,
and shouldn't be needed when building and packaging rteval.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This is to avoid having massive build requirements just to retrieve
the rteval version.
The version string is also still available via the rteval module as
well, to avoid other external implementations to fail with this change.
But that variable is basically just a "re-export" of the value found
in rteval/version.py
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
directory without options
This commit introduce a new method default_config_search to search, for
each file needed in the configuration, the better default place. This place
can be the rteval file directory, the rteval file directory appended with the
'rteval' directory, the ~/.rteval directory of the user, the /etc/rteval
directory, or the /usr/share/rteval directory.
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
instantiation
Previously, we used a default Log.INFO verbose level before parsing command line
arguments, as modules load is necessary to know all the available arguments. In this
patch, we added an small command line analysis for the verbose and debug arguments to
set properly the log verbosity before loading modules. Doing so, we are able to have
the wanted verbosity level before starting the load of modules, and not to have
unwanted messages during execution.
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This also renames the _XMLreport() method to GetXMLreport()
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This is to make it easier to apply default values when importing the rteval
module from other places than rteval-cmd.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Previously, when a module was raising a RuntimeError, parent threads weren't
using it to stop the execution of the program. As RuntimeError are frequently
fatal for what we want to set for the execution of rteval, this patches proposes
to use a new rtevalRuntimeError which will set a flag on a module when raised to
allow its parent to raise a RuntimeError to the main thread.
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
module error
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
These components are used by the rteval-xmlrpc package as well,
to avoid forcing a full rteval install on the XML-RPC server.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
- Ignore MANIFEST, generated by setup.py
- Ignore autotools files and dirs in ./server/
- Ignore gziped files
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Also get rid of all hard-coded paths for rteval and use setup.py
instead.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This updates the spec file to also use distutils/setup.py directly,
making it independent of the Makefile
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This is to avoid an annoying DMI warning if the RtEval() class is
not going to be used.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This only takes care of the rteval measurement stuff, it does not account
for the XML-RPC server side at all.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
- Don't parse the cyclic_rawdata table any more. The last rteval release to
use that table was v1.4.
- Parse the hwlatedetect data by default. This is a new feature of
rteval v2.0, so lets add this parsing by default.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This reorganises most of the XSLT template, separating out pre v2.0 and post v2.0
reports, preserving support for all report versions. Also tried to preserve as
much as possible of common code.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
- The rtevxmlrpc database user needs SELECT privileges on rtevalruns, otherwise
the DatabaseStatus() XML-RPC call fails.
- The hwlatdetect_summary table was defined with a wrong column name
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Just a type, used 'ms' instead of 'us'
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Added metavar for the global options, to make them more readable
instead of f.ex. RTEVAL___DURATION.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Added proper breakpoints when the hwlatdetect module did not load,
to ensure rteval can complete without any errors. Also added a
warning note in the summary report if this module failed to run.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
The iterator loop exited one too early, so one module was always missing.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
If it was attempted to disable a module from the config file, that
was impossible as the default was to enable them.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
All these variables are mostly default values anyway.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This cleans up the API a little bit, and lets the configuration access
become a bit easier in the load and measurement classes.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
If a section was missing in the config file when being set from the command
line, an exception would occur. In these cases, create the section
"on-the-fly" in the configuration object.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Try to grab the values from the config file instead of the defaults from
the module, if it is present.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Removed all the module defaults from rteval-cmd and updated
the modules' default values to the same values. Now module defaults are
only managed inside the module.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Now all the command line argument modifications will update the
configuration object. Command line arguments will override any
default or configuration variables.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
All rteval modules must now provide a ModuleParameters() function
which returns a dictionary containing the option setup it expects.
Each module will get a separate option group, and all its options
will be prefixed with the module name. These option variables will
be stored as well, prefixed with the module name. So if the a module
'dummy' configures an option 'value1', it will be stored as
'dummy_value1' in the option container. To set this option, you
will need to use --dummy-value1 from the command line.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Also pick the rteval version from the module itself, to avoid
having it hardcoded more places.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
template
Just adds the full path of the XSLT file it tried to parse.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Instead of throwing an exception which could lead to a soft-lockup,
rather catch it and report it and complete the shutdown properly.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Sometimes it receives an internal variable in the iteration list.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This cleans up rteval further by making the RtEval class a pure measurement
feature which receives all the needed setup and controls loads and measurment
modules, in addition to the final reporting.
The command line and config parsing is kept inside the command line tool, where
it will set up everything before passing it all to the RtEval calss.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Now the rtevalCfgSection() class is simpler to iterate over, variables can
be accessed directly (as before) but can now also be changed like this:
v = rtevalCfgSection({})
v.value1 = 'new test value'
print v.value1
This also cleans up some nasty hacks in rtevalConfig(). But this also
stops providing the global rteval config variables directly via this class.
From this point of, you need to use rtevalConfig::GetSection('rteval') to
access the core rteval config settings.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add command line options:
--cyclictest-priority
--cyclictest-distance
--cyclictest-interval
--cyclictest-buckets
--hackbench-jobspercore
--kcompile-jobspercore
These options allow setting module specific behavior for a run.
Updated the rteval.8 man page to reflect this and the rteval.conf file
as well.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This is to narrow down the variable scope to make it easier to see the
consequences of the next steps.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Forgot to commit some needed methods with the last commit. This
provides a more direct access to particular module objects and
information about imported modules.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
There might be reasons why measurement threads don't complete the
set duration time. If this is an error, that should be handled in
the measurement module and not globally.
If one or more measurement threads have stopped before the duration time
has expired, rather do a controlled exit - generating a report.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
serialised
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Added a few minor log line adjustments too
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
The config parser made all section names and key names lower case
by default. But when changing that to preserving the string case,
it also put comments into the value fields. So the second part
of the patch strips away everything from key values after the
first '#' and strips out leading and trailing spaces.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Updated the templates to work with the newer summary.xml format
introduced by the measurements profile patches.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
|
|
Add the 'distance' parameter to affect the -d option for cyclictest
and default it to 25 microseconds.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Add another '_' to the stdout and stderr logging file handles
to match usage.
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Some systems (Fedora 17+) do not store the boot time dmesg output
in a file. If it does not exist, try to run the dmesg program to
generate current dmesg output. If the file doesn't exist and we
can't find the dmesg program, print an error
Signed-off-by: Clark Williams <williams@redhat.com>
|
|
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
module
This is a massive re-write of the original cyclictest, as the old code base
was not prepared for being a dynamic module. And it makes use of the new
rtevalModulesPrototype() API.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This removes the hard-coded parts of cyclictest and hwlatdetect, and
takes a good step forward in modularising the measurement modules.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
When iterating an MeasurementModules() object, it will loop through
and return registered MeasurementProfile() objects.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This will return True if one or more of the modules which has been
started do run. If the MeasurementProfile is for parallel running
tasks, it expects all modules to be running. Otherwise it will
return True if one of the modules are running.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
Checking if the modules are alive needs to happen after it has been
unleashed.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
rtevalModulePrototype
These modules also need some more clean-up when we get further.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
rtevalModulePrototype
Just basic adoptation to make things work again. These LoadThread() based classes needs
some more cleaning up later on.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This class defines the needed methods for both rteval load and measurement
modules. It also implements the needed run logic, so the modules just
need to implement those code pieces unique for the module.
The needed methods to implement are:
_WorkloadSetup() - Prepares for building/compiling additional code
_WorkloadBuild() - Does the building/compiling. This method needs to
call self._setReady() when it is done.
_WorkloadPrepare() - Final preparations before the workload is kicked off
_WorkloadTask() - Is called in a loop until the rteval duration has
expired. This should kick off the core workload.
_WorkloadAlive() - Implements the needed check to see that the workload
is running
_WorkloadCleanup() - Called after rteval have stopped the modules' workload
and should save the needed information for the final
report back to rteval
MakeReport() - This method generates the report and returns it as a
libxml2.xmlNode object.
This patch also adopts the RtEvalModules() class to depend on the API of
rtevalModulePrototype().
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This patch adds the needed code to import and categorise the measurement
modules into measurement profiles so that they can be run profile by profile.
The profile defines if they should be run separately or in parallel, and with
or without load modules.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This ensures that the module configuration parameter is always
an rtevalCfgSection() object.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
|
This method will block until all running modules have completed their work.
Signed-off-by: David Sommerseth <davids@redhat.com>
|