Esempio n. 1
0
def generate_and_compare(*args, **kargs):
    ts = generate_taskset(*args, **kargs)
    (res_inf, ts_inf) = pfp_sched_test_msrp_inflate(ts)
    (res_ilp, ts_ilp) = pfp_sched_test_msrp_ilp(ts)

    global ts_count, schedulable_count

    ts_count += 1
    if res_ilp:
        schedulable_count +=1

    keep = False
    if not res_ilp and res_inf:
        # ILP should not say 'no' when inflation-based analysis says 'yes'
        print 'TS%d - FAIL: ILP -> no, but INF -> yes' % ts_count
        keep = True

    if res_ilp and res_inf:
        for i in range(len(ts)):
            if ts_inf[i].response_time < ts_ilp[i].response_time:
                # ILP should not never be more pessimistic
                print 'TS%d T%d: ILP -> %d, but INF -> %d' % \
                    (ts_count, i + 1, ts_inf[i].response_time, ts_ilp[i].response_time)
                keep = True

    if keep:
        ser.write(ts, "ts-%07d.xml" % ts_count)
Esempio n. 2
0
def generate_taskset_files(util_name, period_name, cap, number):
    generator = mkgen(NAMED_UTILIZATIONS[util_name],
                      NAMED_PERIODS[period_name])
    generated_sets = []
    for i in range(number):
        taskset = generator(max_util=cap, time_conversion=ms2us)
        filename = "{0}_{1}_{2}_{3}".format(util_name, period_name, cap, i)
        write(taskset, filename)
        generated_sets.append(filename)
    return generated_sets
Esempio n. 3
0
 def test_serialize_taskset(self):
     s.write(self.ts, self.f)
     self.f.seek(0)
     xs = s.load(self.f)
     self.assertIsInstance(xs, m.TaskSystem)
     self.assertEqual(len(xs), len(self.ts))
     for x, t in zip(xs, self.ts):
         self.assertEqual(x.cost, t.cost)
         self.assertEqual(x.deadline, t.deadline)
         self.assertEqual(x.period, t.period)
         self.assertEqual(x.id, t.id)
Esempio n. 4
0
 def test_serialize_taskset(self):
     s.write(self.ts, self.f)
     self.f.seek(0)
     xs = s.load(self.f)
     self.assertIsInstance(xs, m.TaskSystem)
     self.assertEqual(len(xs), len(self.ts))
     for x,t in zip(xs, self.ts):
         self.assertEqual(x.cost, t.cost)
         self.assertEqual(x.deadline, t.deadline)
         self.assertEqual(x.period, t.period)
         self.assertEqual(x.id, t.id)
Esempio n. 5
0
def generate_taskset_files(util_name, period_name, cap, number):
    generator = mkgen(NAMED_UTILIZATIONS[util_name],
                      NAMED_PERIODS[period_name])
    generated_sets = []
    for i in range(number):
        taskset = generator(max_util=cap, time_conversion=ms2us)
        filename = "{0}_{1}_{2}_{3}".format(util_name,
                                            period_name, cap, i)
        write(taskset, filename)
        generated_sets.append(filename)
    return generated_sets
Esempio n. 6
0
def generate_lock_taskset_files(util_name, period_name, cap, cslength, nres,
                                pacc, number):
    generator = mkgen(NAMED_UTILIZATIONS[util_name],
                      NAMED_PERIODS[period_name])
    generated_sets = []
    for i in range(number):
        taskset = generator(max_util=cap, time_conversion=ms2us)
        resources.initialize_resource_model(taskset)
        for task in taskset:
            for res_id in range(nres):
                if random.random() < pacc:
                    nreqs = random.randint(1, 5)
                    length = CSLENGTH[cslength]
                    for j in range(nreqs):
                        task.resmodel[res_id].add_request(length())
        filename = "{0}_{1}_{2}_{3}_{4}_{5}_{6}".format(
            util_name, period_name, cap, cslength, nres, pacc, i)
        write(taskset, filename)
        generated_sets.append(filename)
    return generated_sets
Esempio n. 7
0
def generate_lock_taskset_files(util_name, period_name, cap,
                                cslength, nres, pacc, number):
    generator = mkgen(NAMED_UTILIZATIONS[util_name],
                      NAMED_PERIODS[period_name])
    generated_sets = []
    for i in range(number):
        taskset = generator(max_util=cap, time_conversion=ms2us)
        resources.initialize_resource_model(taskset)
        for task in taskset:
            for res_id in range(nres):
                if random.random() < pacc:
                    nreqs = random.randint(1, 5)
                    length = CSLENGTH[cslength]
                    for j in range(nreqs):
                       task.resmodel[res_id].add_request(length())
        filename = "{0}_{1}_{2}_{3}_{4}_{5}_{6}".format(
                util_name, period_name, cap, cslength, nres, pacc,
                i)
        write(taskset, filename)
        generated_sets.append(filename)
    return generated_sets