1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2024-10-06 10:51:13 +01:00

Merge pull request #101 from setrofim/master

Adding taskset capability to lmbench + minor fixes.
This commit is contained in:
Sebastian Goscik 2016-02-11 09:35:58 +00:00
commit 232e4b3e65
3 changed files with 55 additions and 27 deletions

View File

@ -61,7 +61,7 @@ class Dhrystone(Workload):
'threads (if ``threads`` > 1).')),
Parameter('taskset_mask', kind=int, default=0,
description='''
The processes spawned by the workload will be pinned to cores
The processes spawned by the workload will be pinned to cores
as specified by this parameter
'''),
]

View File

@ -24,10 +24,10 @@ class GoogleMap(GameWorkload):
Navigation app.
Stock map provided by Google Inc.
Based on revent, we can use this workload to
do multiple tasks such as navigation usecases,
Based on revent, we can use this workload to
do multiple tasks such as navigation usecases,
swipe & pinch etc.
Provided revent is for Odriod XU3 for navigation use
case. For running on other devices, we need to build
revent.

View File

@ -29,42 +29,64 @@ class lmbench(Workload):
test_names = ['lat_mem_rd', 'bw_mem']
description = """
Run a subtest from lmbench, a suite of portable ANSI/C microbenchmarks for UNIX/POSIX.
Run a subtest from lmbench, a suite of portable ANSI/C microbenchmarks for
UNIX/POSIX.
In general, lmbench measures two key features: latency and bandwidth. This workload supports a subset
of lmbench tests. lat_mem_rd can be used to measure latencies to memory (including caches). bw_mem
can be used to measure bandwidth to/from memory over a range of operations.
In general, lmbench measures two key features: latency and bandwidth. This
workload supports a subset of lmbench tests. lat_mem_rd can be used to
measure latencies to memory (including caches). bw_mem can be used to
measure bandwidth to/from memory over a range of operations.
Further details, and source code are available from:
http://sourceforge.net/projects/lmbench/.
See lmbench/bin/README for license details.
"""
Further details, and source code are available from:
http://sourceforge.net/projects/lmbench/.
See lmbench/bin/README for license details.
"""
parameters = [
Parameter('test', default='lat_mem_rd', allowed_values=test_names,
description="Specifies an lmbench test to run."),
description='''
Specifies an lmbench test to run.
'''),
Parameter('stride', kind=list_or_integer, default=[128],
description='Stride for lat_mem_rd test. Workload will iterate over one or more integer values.'),
Parameter('thrash', kind=bool, default=True, description='Sets -t flag for lat_mem_rd_test'),
description='''
Stride for lat_mem_rd test. Workload will iterate over one or
more integer values.
'''),
Parameter('thrash', kind=bool, default=True,
description='Sets -t flag for lat_mem_rd_test'),
Parameter('size', kind=list_or_string, default="4m",
description='Data set size for lat_mem_rd bw_mem tests.'),
Parameter('mem_category', kind=list_or_string,
default=('rd', 'wr', 'cp', 'frd', 'fwr', 'fcp', 'bzero', 'bcopy'),
description='List of memory catetories for bw_mem test.'),
Parameter('parallelism', kind=int, default=None, description='Parallelism flag for tests that accept it.'),
Parameter('warmup', kind=int, default=None, description='Warmup flag for tests that accept it.'),
Parameter('repetitions', kind=int, default=None, description='Repetitions flag for tests that accept it.'),
Parameter('parallelism', kind=int, default=None,
description='Parallelism flag for tests that accept it.'),
Parameter('warmup', kind=int, default=None,
description='Warmup flag for tests that accept it.'),
Parameter('repetitions', kind=int, default=None,
description='Repetitions flag for tests that accept it.'),
Parameter('force_abi', kind=str, default=None,
description='Override device abi with this value. Can be used to force arm32 on 64-bit devices.'),
description='''
Override device abi with this value. Can be used to force
arm32 on 64-bit devices.
'''),
Parameter('run_timeout', kind=int, default=900,
description="""
Timeout for execution of the test.
"""),
Parameter('times', kind=int, default=1, constraint=lambda x: x > 0,
description="""
Specifies the number of times the benchmark will be run in a "tight loop",
i.e. without performaing setup/teardown inbetween. This parameter is distinct from
"repetitions", as the latter takes place within the benchmark and produces a single result.
Specifies the number of times the benchmark will be run in a
"tight loop", i.e. without performaing setup/teardown
inbetween. This parameter is distinct from "repetitions", as
the latter takes place within the benchmark and produces a
single result.
"""),
Parameter('taskset_mask', kind=int,
description="""
Specifies the CPU mask the benchmark process will be pinned to.
"""),
]
@ -124,11 +146,17 @@ class lmbench(Workload):
self.commands.append(command + what)
def _setup_common(self):
command = self.device_exe + " "
parts = []
if self.taskset_mask:
parts.append('{} taskset 0x{:x} {}'.format(self.device.busybox,
self.taskset_mask,
self.device_exe))
else:
parts.append(self.device_exe)
if self.parallelism is not None:
command = command + '-P {} '.format(self.parallelism)
parts.append('-P {}'.format(self.parallelism))
if self.warmup is not None:
command = command + '-W {} '.format(self.warmup)
parts.append('-W {}'.format(self.warmup))
if self.repetitions is not None:
command = command + '-N {} '.format(self.repetitions)
return command
parts.append('-N {}'.format(self.repetitions))
return ' '.join(parts)