From 999540e2f3c206ec57302c4a7caf6664bcd59511 Mon Sep 17 00:00:00 2001 From: Tobias Langer Date: Mon, 21 Nov 2016 10:41:31 +0100 Subject: [PATCH] Added support for utilization based simulation. --- run.py | 6 +++--- tasksetgen.py | 34 ++++++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/run.py b/run.py index 8a24b72..ebc725b 100755 --- a/run.py +++ b/run.py @@ -14,9 +14,9 @@ def get_exp_cnt(path): def main(): parser = argparse.ArgumentParser('Run all the scripts so everything works fine.') - parser.add_argument('experiments', type=int, nargs=1, default=1, + parser.add_argument('experiments', type=int, nargs='?', default=1, help='The number of experiments to be run.') - parser.add_argument('utilization', type=float, nargs='?', default=1, + parser.add_argument('utilization', type=float, nargs='?', help='The utilization for the experiments to be run.', default=None) @@ -32,7 +32,7 @@ def main(): cnt = 0 remain = args.experiments while remain > 0: - if parser.utilization is not None: + if args.utilization is not None: subprocess.call(['./tasksetgen.py', '--microseconds', '--uniform', '5', '--utilization {}:{}'.format(args.utilization - 0.25, args.utilization + 0.25), str(remain), 'experiments/ese2016_{}'.format(cnt), diff --git a/tasksetgen.py b/tasksetgen.py index e4f24ef..ac3af51 100755 --- a/tasksetgen.py +++ b/tasksetgen.py @@ -128,6 +128,9 @@ def main(): default='.') parser.add_argument('experiment_target', type=str, help='Output directory for experiments.', nargs='?', default='.') + + parser.add_argument('--utility', type=str, help='The utility for which tasksets should be generated. Is a range such as 2.5:3.5', nargs=1) + parser.add_argument('--baseclock', type=str, default='system_clock', nargs='?', help='The clock which is to be used for the execution.') @@ -174,16 +177,35 @@ def main(): else: distribution = Distribution.uniform + utility = None + try: + utility_val = args.utility.split(':') + if len(utility_val > 3): + print('Invalid utility specified.', file=sys.sterr) + sys.exit(1) + + utility = [float(util) for util in utility_val] + except AttributeError: + pass + print('Generating tasks…', file=sys.stderr) tasksets = [] while len(tasksets) < args.tasksetcount: taskset = [] - while len(taskset) < args.cores + 1 or \ - calc_utilization(taskset) <= args.cores and \ - hyperperiod(taskset) < 300000: # Limit hyperperiod to 5 minutes - taskset.append(create_task(distribution)) - if len(taskset) >= args.cores + 1: - tasksets.append(taskset) + if utility is None: + while len(taskset) < args.cores + 1 or \ + calc_utilization(taskset) <= args.cores and \ + hyperperiod(taskset) < 300000: # Limit hyperperiod to 5 minutes + taskset.append(create_task(distribution)) + if len(taskset) >= args.cores + 1: + tasksets.append(taskset) + else: + taskset_util = calc_utilization(taskset) + while taskset_util < utility[0] and taskset_util < utility[1]: + taskset.append(create_task(distribution)) + if taskset_util < utility[1]: + if len(taskset) >= args.cores + 1: + tasksets.append(taskset) now = datetime.datetime.now() -- libgit2 0.26.0