summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClark Williams <williams@redhat.com>2012-12-13 09:39:31 -0600
committerClark Williams <williams@redhat.com>2012-12-13 09:39:31 -0600
commitdc6e65517690aade2f1799e816e82b78d902fca3 (patch)
treedd29ebcb90696b89453c52bdc68ff3e45dd79702
parent2bdb51986aacd5c42bd74719e178eaaa71697d86 (diff)
downloadrteval-dc6e65517690aade2f1799e816e82b78d902fca3.tar.gz
rteval-dc6e65517690aade2f1799e816e82b78d902fca3.tar.xz
rteval-dc6e65517690aade2f1799e816e82b78d902fca3.zip
add module-specific command line options
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>
-rw-r--r--doc/rteval.845
-rw-r--r--rteval/cyclictest.py20
-rw-r--r--rteval/rteval.conf8
-rw-r--r--rteval/rteval.py43
4 files changed, 96 insertions, 20 deletions
diff --git a/doc/rteval.8 b/doc/rteval.8
index 7eb46ec..ba91751 100644
--- a/doc/rteval.8
+++ b/doc/rteval.8
@@ -63,12 +63,12 @@ for example to execute a ten minute run of rteval:
.B \-v, \-\-verbose
Increase the verbosity of output during the test run
.TP
-.B \-w, \-\-workdir=WORKDIR
+.B \-w WORKDIR, \-\-workdir=WORKDIR
Tell rteval to change directory to WORKDIR before creating any
subdirectories for report files. The default WORKDIR is the directory
in which rteval was started.
.TP
-.B \-l, \-\-loaddir=LOADDIR
+.B \-l LOADDIR, \-\-loaddir=LOADDIR
Tell rteval where to find the source for the loads
.TP
.B \-s, \-\-sysreport
@@ -78,12 +78,51 @@ information on the running system.
.B \-D, \-\-debug
Turn on debugging prints during run
.TP
-.B \-X, \-\-xmprpc-submit=HOST
+.B \-X HOST, \-\-xmprpc-submit=HOST
Have rteval send report data to HOST following the run, using XML-RPC
.TP
+.B \-P, \-\-xmlrpc-no-abort
+Do not abort if XML-RPC server do not respond to ping request
+.TP
.B \-Z, \-\-summarize
Have rteval summarize an existing report. This will not cause loads or
meausurement utilities to be run.
+.TP
+.B \-H, \-\-raw-histogram
+Generate raw histogram data for an already existing XML report
+.TP
+.B \-f INIFILE, \-\-inifile=INIFILE
+Initialization file for configuring loads and behavior
+.TP
+.B \-a COMMENT, \-\-annotate=COMMENT
+Add a little annotation which is stored in the report
+.TP
+.B \-L, \-\-logging
+Log the output of the loads in the report directory
+.TP
+.B \-O, \-\-onlyload
+Only run the loads (don't run measurement threads)
+
+.SH MODULE OPTIONS
+These are options that affect the execution behavior of the measurement and load modules.
+.TP
+.B \-\-cyclictest-priority=PRIORITY
+SCHED_FIFO priority for measurement threads (default: 95)
+.TP
+.B \-\-cyclictest-interval=INTERVAL
+Measurement thread interval in microseconds (default: 100)
+.TP
+.B \-\-cyclictest-distance=DISTANCE
+Interval increment in microseconds (default: 0)
+.TP
+.B \-\-cyclictest-buckets=NBUCKETS
+Number of 1 microsecond histogram buckets (default: 2000)
+.TP
+.B \-\-hackbench-jobspercore=N
+Number of jobs per online-core for hackbench load
+.TP
+.B \-\-kcompile-jobspercore=N
+Number of jobs per online-core for kernel compile load
.\" .SH SEE ALSO
.\" .BR bar (1),
.\" .BR baz (1).
diff --git a/rteval/cyclictest.py b/rteval/cyclictest.py
index abf8a95..977756d 100644
--- a/rteval/cyclictest.py
+++ b/rteval/cyclictest.py
@@ -163,8 +163,10 @@ class Cyclictest(Thread):
self.stopevent = Event()
self.finished = Event()
self.threads = params.setdefault('threads', None)
- self.priority = params.setdefault('priority', 95)
- self.interval = "-i100"
+ self.priority = int(params.setdefault('priority', 95))
+ self.interval = int(params.setdefault('interval', 100))
+ self.distance = int(params.setdefault('distance', 0))
+ self.buckets = int(params.setdefault('buckets', 2000))
self.debugging = params.setdefault('debugging', False)
self.reportfile = 'cyclictest.rpt'
self.params = params
@@ -201,19 +203,13 @@ class Cyclictest(Thread):
return '--smp'
def run(self):
- if self.params.has_key('buckets'):
- buckets = int(self.params.buckets)
- else:
- buckets = 2000
- if self.params.has_key('interval'):
- self.interval = '-i%d' % int(self.params.interval)
self.cmd = ['cyclictest',
- self.interval,
'-qm',
- '-d0',
- '-h %d' % buckets,
- "-p%d" % int(self.priority),
+ '-i %d' % self.interval,
+ '-d %d' % self.distance,
+ '-h %d' % self.buckets,
+ "-p %d" % self.priority,
self.getmode(),
]
diff --git a/rteval/rteval.conf b/rteval/rteval.conf
index ddada8f..0d1afb3 100644
--- a/rteval/rteval.conf
+++ b/rteval/rteval.conf
@@ -7,15 +7,17 @@ report_interval: 600
[cyclictest]
buckets: 2000
-interval: 100
+interval: 100
+distance: 0
+priority: 95
[loads]
kcompile: module
hackbench: module
dbench: external
-
+
[kcompile]
-source: linux-2.6.21.1.tar.bz2
+source: linux-2.6.39.tar.bz2
jobspercore: 2
[hackbench]
diff --git a/rteval/rteval.py b/rteval/rteval.py
index 5843d78..a8954a0 100644
--- a/rteval/rteval.py
+++ b/rteval/rteval.py
@@ -124,7 +124,7 @@ class RtEval(object):
'hackbench' : 'module',
},
'kcompile' : {
- 'source' : 'linux-2.6.21.tar.bz2',
+ 'source' : 'linux-2.6.39.tar.bz2',
'jobspercore': '2',
},
'hackbench' : {
@@ -150,6 +150,24 @@ class RtEval(object):
# (cmd line overrides config file values)
self.config.AppendConfig('rteval', self.cmd_options)
+ if self.cmd_options.cyclictest_interval != None:
+ self.config.AppendConfig('cyclictest', { "interval":self.cmd_options.cyclictest_interval })
+
+ if self.cmd_options.cyclictest_distance != None:
+ self.config.AppendConfig('cyclictest', { "distance":self.cmd_options.cyclictest_distance })
+
+ if self.cmd_options.cyclictest_buckets != None:
+ self.config.AppendConfig('cyclictest', { "buckets":self.cmd_options.cyclictest_distance })
+
+ if self.cmd_options.cyclictest_priority != None:
+ self.config.AppendConfig('cyclictest', { "priority":self.cmd_options.cyclictest_priority })
+
+ if self.cmd_options.hackbench_jobspercore != None:
+ self.config.AppendConfig('hackbench', { "jobspercore":self.cmd_options.hackbench_jobspercore })
+
+ if self.cmd_options.kcompile_jobspercore != None:
+ self.config.AppendConfig('kcompile', { "jobspercore":self.cmd_options.kcompile_jobspercore })
+
self.debug("workdir: %s" % self.workdir)
# prepare a mailer, if that's configured
@@ -386,11 +404,32 @@ class RtEval(object):
parser.add_option("-L", "--logging", dest="logging",
action='store_true', default=False,
help='log the output of the loads in the report directory')
-
parser.add_option("-O", "--onlyload", dest="onlyload",
action='store_true', default=False,
help="only run the loads (don't run measurement threads)")
+ # module options
+ parser.add_option("", "--cyclictest-interval", dest="cyclictest_interval",
+ action="store", type="int",
+ help="cyclictest measurement interval in microseconds")
+ parser.add_option("", "--cyclictest-distance", dest="cyclictest_distance",
+ action="store", type="int",
+ help="cyclictest measurement interval increment in microseconds")
+ parser.add_option("", "--cyclictest-buckets", dest="cyclictest_buckets",
+ action="store", type="int",
+ help="number of cyclictest 1 microsecond histogram buckets")
+ parser.add_option("", "--cyclictest-priority", dest="cyclictest_priority",
+ action="store", type="int",
+ help="SCHED_FIFO priority of measurement threads")
+
+ parser.add_option("", "--hackbench-jobspercore", dest="hackbench_jobspercore",
+ action="store", type="int",
+ help="number of hackbench jobs per-core")
+ parser.add_option("", "--kcompile-jobspercore", dest="kcompile_jobspercore",
+ action="store", type="int",
+ help="number of kernel compile jobs per-core")
+
+
(self.cmd_options, self.cmd_arguments) = parser.parse_args(args = cmdargs)
if self.cmd_options.duration:
mult = 1.0