aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-04-10Merge branch 'v2/master'HEADmasterClark Williams80-2009/+6242
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>
2017-03-17update rt-tests URL in docs/READMEClark Williams1-2/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2017-03-16Merge branch 'v2/kcompile-by-nodes' into v2/masterv2.14v2/masterClark Williams10-72/+378
2017-03-16version 2.14Clark Williams2-3/+6
Signed-off-by: Clark Williams <williams@redhat.com>
2017-03-16removed incorrect import of systopologyClark Williams1-1/+0
Signed-off-by: Clark Williams <williams@redhat.com>
2017-03-15update specfiles with correct changelog and version/releaseClark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2017-03-15version 2.13v2.13Clark Williams4-9/+12
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>
2017-03-15cyclictest.py: make -n option default to use clock_nanosleep(2)Clark Williams1-1/+1
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>
2017-03-15Added EXTRA Makefile variable for testing miscellaneous optionsClark Williams1-1/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2017-03-15kcompile.py: modify to manage jobs on per-node basisClark Williams3-60/+109
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>
2017-03-15add systopology.pyClark Williams4-4/+253
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>
2016-11-28systopology.py: change class Cpus to CpuListClark Williams1-8/+14
Signed-off-by: Clark Williams <williams@redhat.com>
2016-11-26systopology: fix calls to common _sysread() functionClark Williams1-12/+4
Signed-off-by: Clark Williams <williams@redhat.com>
2016-11-22add systopology.pyClark Williams1-0/+239
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>
2016-10-24version 2.12v2.12Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2016-10-24handle unset USER env variablesClark Williams1-2/+12
Bugzilla: 1312057 Added function get_user_name() to handle unset environment variables SUDO_USER and USER. Signed-off-by: Clark Williams <williams@redhat.com>
2016-08-30version 2.11v2.11Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2016-08-30return non-zero exit when hitting breaktrace thresholdClark Williams1-0/+7
Signed-off-by: Clark Williams <williams@redhat.com>
2016-08-03version 2.10Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2016-05-09version 2.9v2.9Clark Williams2-3/+6
Signed-off-by: Clark Williams <williams@redhat.com>
2016-05-09default cpulist for modules if only one specifiedClark Williams2-1/+16
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>
2016-04-28modules: remove hwlatdetect module [1261161]Clark Williams2-171/+0
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>
2016-04-27specfile: require version 0.97 of rt-testsv2.8Clark Williams2-5/+9
Signed-off-by: Clark Williams <williams@redhat.com>
2016-04-26cyclictest: fix tracing logicClark Williams1-20/+8
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>
2016-04-26rteval: added --version optionClark Williams1-2/+2
print the rteval version and exit Signed-off-by: Clark Williams <williams@redhat.com>
2016-04-21options: add --version option and handle empty argument listClark Williams1-1/+11
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>
2016-04-14config: deal with sparse environment [1312057]Ben Rose1-5/+5
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>
2016-04-01version 2.7v2.7Clark Williams2-2/+6
Signed-off-by: Clark Williams <williams@redhat.com>
2016-04-01rteval: treat SIGINT and SIGTERM as valid end-of-run events [1278757]Clark Williams1-11/+9
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>
2016-03-04added cpulist options to man pageClark Williams1-5/+11
Signed-off-by: Clark Williams <williams@redhat.com>
2016-02-14added bz to changelog for 2.6.1Clark Williams1-1/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2016-02-11version 2.6v2.6Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2016-02-09hackbench: make sure we obey cpulist constraintsClark Williams1-1/+7
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>
2016-02-09report load and measurement placement with cpulistsClark Williams1-2/+12
when --load-cpulist is specified report where the loads are running. Ditto for --measurement-cpulist. Signed-off-by: Clark Williams <williams@redhat.com>
2015-12-10version 2.5v2.5Clark Williams2-3/+6
Signed-off-by: Clark Williams <williams@redhat.com>
2015-12-10hackbench: stop using old numactl argumentClark Williams1-6/+10
Stop using --cpubind and move to --cpunodebind. Signed-off-by: Clark Williams <williams@redhat.com>
2015-12-10loads: change loop delay from 5s to 2sClark Williams1-1/+1
Change delay between finish of one load invocation from 5 seconds to 2 seconds. Signed-off-by: Clark Williams <williams@redhat.com>
2015-12-09specfile: added require of numactl packageClark Williams1-1/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-23update to v1.41v1.41v1/masterClark Williams3-4/+7
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-23hackbench: fix logging filehandle naming errorClark Williams1-1/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-23version 1.40-2Clark Williams3-3/+6
fix version mixup between specfile, setup.py and rteval.py Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-23update to v1.40v1.40Clark Williams1-2/+8
Sync'ed with distgit modifications Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-20update to v1.39v1.39Clark Williams3-3/+6
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-20hackbench: modify to avoid cross-node NUMA copiesClark Williams1-50/+78
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-19version 2.4Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-19hackbench: increase default parametersClark Williams1-17/+25
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>
2015-11-19modules: modify the run() sleeptime to be configurable and default to 5 secondsClark Williams1-1/+3
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-19Makefile.am: added -std=gnu89 to AM_CPPFLAGSClark Williams1-1/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-19Makefile: add srpm targets for rtevalClark Williams1-1/+12
Signed-off-by: Clark Williams <williams@redhat.com>
2015-11-19hackbench: start one hackbench per numa node to prevent cross-node copies ↵Clark Williams1-36/+67
[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>
2015-08-26cputopology: fix unit test functionClark Williams1-4/+4
Signed-off-by: Clark Williams <williams@redhat.com>
2015-08-12specfile and version update for 2.3-1 buildv2.3Clark Williams2-2/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2015-08-12config: comment out HWLatDetect measurement module [1245699]Clark Williams1-2/+4
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>
2015-08-12docs: update release checklist to reflect source changesClark Williams1-4/+4
Remove references to rteval/rteval.py and add refs to rteval/version.py. Signed-off-by: Clark Williams <williams@redhat.com>
2015-08-12specfile: require kernel-headers for kcompile loadClark Williams1-0/+1
make sure kernel-headers is installed to support the kcompile load. Signed-off-by: Clark Williams <williams@redhat.com>
2015-06-16README fix package naming errorsClark Williams1-7/+4
python-schedtils -> python-schedutils python-ethtools -> python-ethtool Reported-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Clark Williams <williams@redhat.com>
2015-06-10specfile: added missing %%files entry for rteval/misc.py*v2.2Clark Williams1-0/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2015-06-10specfile update for 2.2-1 buildClark Williams1-2/+12
Signed-off-by: Clark Williams <williams@redhat.com>
2015-06-10rteval: updated version to 2.2Clark Williams1-2/+2
Signed-off-by: Clark Williams <williams@redhat.com>
2015-06-10rteval-cmd: load default configs when no config file is specifiedJiri Kastner1-1/+2
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>
2015-06-10Merge branch 'v2.0-work' into v2.0Clark Williams6-28/+119
2015-06-10cyclictest: use --measurement-cpulist to place cyclictest threadsClark Williams1-22/+50
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>
2015-06-10rteval: add miscellaneous global helper functionsClark Williams1-0/+63
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>
2015-06-10loads: added ability to place load threads on specific cpu rangeClark Williams4-9/+29
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>
2015-06-10modules: add group cpulist parameter to modulesClark Williams3-1/+14
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>
2015-06-08loads: added ability to place load threads on specific cpu rangeClark Williams2-2/+22
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>
2015-06-08modules: add group cpulist parameter to modulesClark Williams3-1/+14
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>
2015-06-08loads: clean up trailing whitespace and listsClark Williams2-5/+5
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>
2015-06-05rteval-loads: added require for kernel-headers packageClark Williams1-3/+6
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>
2015-06-05update rteval-loads.spec from dist-gitClark Williams1-1/+4
Signed-off-by: Clark Williams <williams@redhat.com>
2015-01-08specfile update for 2.1-6 buildClark Williams1-1/+4
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2015-01-08removed reference to MRG in the rteval whitepaperClark Williams1-1/+1
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2015-01-08picked up specfile changes from dist-gitClark Williams1-7/+6
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2015-01-08rteval: set LD_BIND_NOW to force symbol resolutionClark Williams1-0/+5
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>
2014-11-25Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams2-2/+6
Conflicts: rteval.spec
2014-05-16server/parser: BUG: The parsed values of mean and median was mixed upDavid Sommerseth1-2/+2
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>
2014-03-27specfile: updated for 2.1-4 buildClark Williams1-1/+4
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-03-27rteval-2.0-3.1.el6rt: Fix issues with wrong installdirDavid Sommerseth1-4/+10
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>
2014-03-26added sysstat to requiresClark Williams1-1/+5
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-03-26spec: fix more bogus dates in changelogClark Williams1-2/+2
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-03-26added sysstat to requiresClark Williams1-1/+5
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-03-26spec: fix more bogus dates in changelogClark Williams1-2/+2
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-03-26Merge remote-tracking branch 'origin/v2.0' into v2.0Clark Williams1-0/+1
2014-03-26spec: fix bogus changelog datesClark Williams1-3/+3
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2014-01-22Add some input data validation when parsing the output histogram from cyclictestDavid Sommerseth1-0/+8
Backport of commit e0ca74e9c9f7f83a9db08d062b5ca8bdf05ff748 from v1.3x Signed-off-by: Clark Williams <clark.williams@gmail.com> Signed-off-by: David Sommerseth <davids@redhat.com>
2013-12-11update to v1.38v1.38Clark Williams3-29/+30
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2013-12-11add some input data validation when parsing the output histogram from cyclictestClark Williams1-7/+7
Signed-off-by: Clark Williams <clark.williams@gmail.com>
2013-11-08Fix MANIFEST.in - remove trailing / on the doc directoryDavid Sommerseth1-1/+1
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>
2013-11-08Fix formatting syntax, %d -> %sDavid Sommerseth1-1/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-11-08Fix --onlyload and reportdir being set to NoneDavid Sommerseth1-1/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-09-17specfile: correctly escaped usages of percent-sign in changelogClark Williams1-10/+13
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>
2013-09-05cleaned up changelog section of specfileClark Williams1-9/+9
properly escaped any '%' characters used in changelog entries and removed trailing whitespace. Signed-off-by: Clark Williams <clark.williams@gmail.com>
2013-09-03cleaned up changelog section of specfileClark Williams1-9/+9
properly escaped any '%' characters used in changelog entries and removed trailing whitespace. Signed-off-by: Clark Williams <clark.williams@gmail.com>
2013-06-17Added new measurement module, sysstatDavid Sommerseth5-4/+178
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>
2013-05-02Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams4-17/+13
2013-05-02cyclictest: Added trace-cmd extract when breaktrace aborts exectionDavid Sommerseth2-0/+11
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>
2013-04-15cyclictest: Don't bother reporting 'variance'David Sommerseth3-17/+2
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>
2013-04-02Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams10-43/+127
2013-03-15Don't report any buckets where no samples have been collectedDavid Sommerseth1-0/+3
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-03-14Added timestamps tracking when each module starts and stopsDavid Sommerseth3-0/+34
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>
2013-03-13Migrated from libxslt to lxmlDavid Sommerseth6-43/+90
To avoid depending on libxslt-python, use the more standard Python lxml module for XSLT processing. Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-31Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams2-4/+9
2013-01-31rteval-parser: Only consider cyclic statistics which have samples registeredDavid Sommerseth1-1/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-31hackbench: Adjusted the clean-up after running the load runs have completedDavid Sommerseth1-3/+6
Ensure that hackbench really is stopped before continuing further. Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-31hackbench: Wait for hackbench to completeDavid Sommerseth1-0/+2
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>
2013-01-30Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams1-68/+68
2013-01-29cyclictest: Clean-up more object internal variablesDavid Sommerseth1-68/+68
Also resolvs some potential naming conflicts with the 'id' and 'type' variables. Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-28Merge remote-tracking branch 'davids/davids/v2.0' into v2.0Clark Williams43-1322/+506
2013-01-18Preparing rteval 2.1v2.1David Sommerseth2-4/+14
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-18Copyright updatesDavid Sommerseth41-1196/+225
- 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>
2013-01-18cyclictest: Only log and show statistic data when samples are collectedDavid Sommerseth2-63/+66
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>
2013-01-18cyclictest: Make the unit test work againDavid Sommerseth1-3/+30
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-18cyclictest: Report if breaktrace was triggeredDavid Sommerseth2-4/+47
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>
2013-01-18cyclictest: Use a tempfile buffer for cyclictest's stdout dataDavid Sommerseth1-5/+13
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>
2013-01-17cyclictest: Removed --cyclictest-distance optionDavid Sommerseth1-5/+0
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>
2013-01-17cyclictest: Added --cyclictest-breaktrace featureDavid Sommerseth1-3/+40
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>
2013-01-17Made some log lines clearerDavid Sommerseth1-3/+3
Modules doesn't start running instantly, but they start preparing to be kicked off. Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-17Preparing rteval-2.0.1David Sommerseth2-4/+11
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-17Add a 30 seconds sleep before unleashing the measurement threadsDavid Sommerseth1-0/+2
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>
2013-01-15Fixed a few log messages in load modulesDavid Sommerseth2-3/+3
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-15Reworked the run logic for modules - allow them to flag they won't runDavid Sommerseth3-33/+50
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>
2013-01-14hwlatdetect: Add some more useful debug infoDavid Sommerseth1-0/+6
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-14Fix up type casting in the core module codeDavid Sommerseth1-4/+4
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>
2013-01-11add rteval test run directory wildcard to .gitignoreClark Williams1-0/+1
Signed-off-by: Clark Williams <williams@redhat.com>
2013-01-10rteval.spec: Added missing new files (version.py*)David Sommerseth2-3/+14
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>
2013-01-10Put the rteval version into a separate importable fileDavid Sommerseth3-4/+33
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>
2013-01-10Changes the default_config to allow running rteval from git/extracted ↵Raphaël Beamonte3-13/+35
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>
2013-01-10Adds the --quiet command line argument to disable Log.ERR and Log.WARN messagesRaphaël Beamonte1-0/+5
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com> Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-10Moves the update of the log verbosity to use it properly during modules ↵Raphaël Beamonte1-8/+13
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>
2013-01-08cyclictest: Ensure that the self.__interval is always setDavid Sommerseth1-2/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-04Make rtevaReport::_XMLreport() publicly availableDavid Sommerseth2-3/+2
This also renames the _XMLreport() method to GetXMLreport() Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-04Move the configuration defaults from rteval-cmd and into the rtevalConfig moduleDavid Sommerseth2-21/+26
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>
2013-01-04Corrects an error message which was duplicate of the following raiseRaphaël Beamonte1-2/+1
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com> Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-04Corrects RuntimeError behavior using a new rtevalRuntimeError for modulesRaphaël Beamonte2-9/+35
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>
2013-01-04Adds is_alive() before join() to remove a RuntimeError raise when Ctrl-C on ↵Raphaël Beamonte1-1/+2
module error Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com> Signed-off-by: David Sommerseth <davids@redhat.com>
2013-01-04Replace concatened paths with a call to os.path.joinRaphaël Beamonte3-3/+3
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com> Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-21Split out common rteval componentsDavid Sommerseth1-5/+29
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>
2012-12-21Updated .gitignoreDavid Sommerseth1-0/+10
- Ignore MANIFEST, generated by setup.py - Ignore autotools files and dirs in ./server/ - Ignore gziped files Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-21Let's get ready for the v2.0 releaseDavid Sommerseth1-1/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-21Updated the Makefile to fit better with the new regime tooDavid Sommerseth1-43/+14
Also get rid of all hard-coded paths for rteval and use setup.py instead. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-21Updated rteval.spec to package rteval v2.0David Sommerseth1-12/+9
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>
2012-12-21Make distutils package the doc/ dir and compress man page on installDavid Sommerseth2-3/+16
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-21Postpone loading of the rteval.SystemInfo moduleDavid Sommerseth1-1/+2
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>
2012-12-21Updated python setup.py to package rteval betterDavid Sommerseth3-6/+37
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>
2012-12-20Changed the parsing defaults for summary reportsDavid Sommerseth2-2/+2
- 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>
2012-12-20Rework the XSLT template for rteval-parserd to tackle rteval v2.0 reportsDavid Sommerseth1-259/+499
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>
2012-12-20Fix minor issues in rteval-parser database schemasDavid Sommerseth6-1/+7
- 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
2012-12-20Fixed silly typo in cyclictest reportDavid Sommerseth1-1/+1
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-20Use proper time unit in the hwlatdetect summary reportDavid Sommerseth1-3/+3
Just a type, used 'ms' instead of 'us' Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-20Cleaned up the --help screenDavid Sommerseth1-6/+6
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>
2012-12-19Fix HWLatDetect exceptions when hwlatdetect could not be loadedDavid Sommerseth2-8/+17
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>
2012-12-19Fix minor issues to make HWLatDetect module runDavid Sommerseth1-4/+4
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-19Fix that not all measurement modules where loadedDavid Sommerseth1-2/+1
The iterator loop exited one too early, so one module was always missing. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-19Don't override measurement and loads config sections from config fileDavid Sommerseth1-7/+9
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>
2012-12-19Clean-up the configDavid Sommerseth1-28/+0
All these variables are mostly default values anyway. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-19Instead of passing the config class a few places, save it in __init__()David Sommerseth4-16/+17
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>
2012-12-19Tackle if trying to set a configuration value not found in the config fileDavid Sommerseth1-1/+8
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>
2012-12-19Use default values from config file when setting up modules' option parserDavid Sommerseth3-7/+23
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>
2012-12-19Put all default values for modules into the modules itselfDavid Sommerseth4-15/+4
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>
2012-12-19Update config with values from the command lineDavid Sommerseth3-33/+49
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>
2012-12-18Add module options for the currently available modulesDavid Sommerseth4-0/+57
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-18Added infrastructure to add command line arguments from modulesDavid Sommerseth4-13/+76
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>
2012-12-18Merge signal handlers into a single functionDavid Sommerseth1-10/+9
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-18Added missing copyright infoDavid Sommerseth1-0/+25
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-17Updated distutils to pick up the restructured rtevalDavid Sommerseth2-8/+20
Also pick the rteval version from the module itself, to avoid having it hardcoded more places. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-17Improve the error message when the DMI module can't locate the needed XSLT ↵David Sommerseth1-1/+2
template Just adds the full path of the XSLT file it tried to parse. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-17Process better error issues with the module threads when stoppingDavid Sommerseth1-2/+5
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>
2012-12-17Add a hack around some oddities with Python iterationsDavid Sommerseth1-1/+4
Sometimes it receives an internal variable in the iteration list. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-17Split up rteval.py into a pure measurement module and the command line toolDavid Sommerseth14-506/+573
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>
2012-12-14Cleaned up rtevalConfig parserDavid Sommerseth2-64/+93
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>
2012-12-13update to v1.37v1.37Clark Williams3-3/+8
Signed-off-by: Clark Williams <williams@redhat.com>
2012-12-13add module-specific command line optionsClark Williams4-20/+96
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>
2012-12-13Cleaned up the XML report filename variable usageDavid Sommerseth2-8/+7
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-13Prefix all class private variables in RtEval() with __David Sommerseth2-79/+77
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>
2012-12-07Add ModuleContainer methods for accessing particular module objectsDavid Sommerseth1-0/+18
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>
2012-12-07Don't raise an exception if measurement threads stops runningDavid Sommerseth1-2/+7
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>
2012-12-07Rework the Unleash()/isAlive() logic to support running measurement threads ↵David Sommerseth2-13/+45
serialised Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-07Make the rtevalModulePrototype::_WorkloadAlive() method publicDavid Sommerseth5-11/+11
Added a few minor log line adjustments too Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-07Don't wait for a module to complete if it didn't start runningDavid Sommerseth1-0/+3
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Make the config parser case sensitive and make it ignore commentsDavid Sommerseth1-1/+2
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>
2012-12-05hwlatdetect: A few more tweaks to make it runDavid Sommerseth2-6/+4
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Update hwlatdetect module to the new rtevalModulePrototype APIDavid Sommerseth2-40/+87
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Updated summary and histogram XSLT templatesDavid Sommerseth2-37/+58
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>
2012-12-05Merge in patches for v2.0 from Clark WilliamsDavid Sommerseth4-8/+18
2012-12-05add 'distance' parameter to cyclictestClark Williams2-1/+6
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>
2012-12-05change hard coded './' to use the HERE variable in MakefileClark Williams1-4/+5
Signed-off-by: Clark Williams <williams@redhat.com>
2012-12-05fix incorrect variable name in hackbench.pyClark Williams1-2/+2
Add another '_' to the stdout and stderr logging file handles to match usage. Signed-off-by: Clark Williams <williams@redhat.com>
2012-12-05handle no 'dmesg' file in osinfo.pyClark Williams1-3/+7
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>
2012-12-05hackbench: Correct local stderr/stdout variablesDavid Sommerseth1-2/+2
Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05First cut at rewriting cyclictest to become a dynamic loadable measurement ↵David Sommerseth2-125/+169
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>
2012-12-05Make rteval make use of the MeasurementModules() and MeasurementProfiles()David Sommerseth2-38/+31
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>
2012-12-05Make MeasurementModules() objects iteratableDavid Sommerseth1-0/+20
When iterating an MeasurementModules() object, it will loop through and return registered MeasurementProfile() objects. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Extend the MeasurementProfile() class with an isAlive() methodDavid Sommerseth2-0/+21
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>
2012-12-05Don't check if the module is alive at the Start(), it's too early nowDavid Sommerseth1-2/+0
Checking if the modules are alive needs to happen after it has been unleashed. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Adopted kcompile and hackbench modules to use the new API from ↵David Sommerseth2-110/+131
rtevalModulePrototype These modules also need some more clean-up when we get further. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-05Adopted the LoadThread() and CommandLineLoad() classes to use the new ↵David Sommerseth1-61/+17
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>
2012-12-05Added a rtevalModulePrototype() classDavid Sommerseth1-4/+142
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>
2012-12-04Added initial module framework for measurement modulesDavid Sommerseth1-0/+133
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>
2012-12-04Add proper type checking when instantiating a module objectDavid Sommerseth1-1/+4
This ensures that the module configuration parameter is always an rtevalCfgSection() object. Signed-off-by: David Sommerseth <davids@redhat.com>
2012-12-04Added RtEvalModules::WaitForCompletion() methodDavid Sommerseth1-0/+10
This method will block until all running modules have completed their work. Signed-off-by: David Sommerseth <davids@redhat.com>