def task_schedulable_for_offset(all_tsks, tsk_k, a_k, m): """Tests condition 8 from the paper""" I1s = [I1(tsk_i, tsk_k, a_k) for tsk_i in all_tsks] Idiffs = [ I2(tsk_i, tsk_k, a_k) - i1 for (tsk_i, i1) in izip(all_tsks, I1s) ] Idiff = topsum(Idiffs, None, m - 1) return sum(I1s) + Idiff <= m * (a_k + tsk_k.deadline - tsk_k.cost)
def ak_bounds(all_tsks, m): U = all_tsks.utilization() c_sigma = topsum(all_tsks, lambda t: t.cost, m - 1) y = sum([(t.period - t.deadline) * t.utilization() for t in all_tsks]) mu = m - U def ak_bound(tsk_k): # Equation 9 in the paper return (c_sigma - tsk_k.deadline * mu + y + m * tsk_k.cost) / mu return [ak_bound(t) for t in all_tsks]
def task_schedulable_for_offset(all_tsks, tsk_k, a_k, m): """Tests condition 8 from the paper""" I1s = [I1(tsk_i, tsk_k, a_k) for tsk_i in all_tsks] Idiffs = [I2(tsk_i, tsk_k, a_k) - i1 for (tsk_i, i1) in izip(all_tsks, I1s)] Idiff = topsum(Idiffs, None, m -1) return sum(I1s) + Idiff <= m * (a_k + tsk_k.deadline - tsk_k.cost)
def test_topsum(self): vals = [30, 60, 10, 40, 50, 20] self.assertEqual(m.topsum(vals, lambda x: x * 2, 3), 2 * (40 + 50 + 60)) self.assertEqual(m.lcm(99), 99) self.assertEqual(m.lcm(10, 20, 3), 60)