Beispiel #1
0
 def testUpdate(self):
     lm = LoadMetrics()
     lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 1}, {})
     assert lm.approx_workers_used() == 0.5
     lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 0}, {})
     assert lm.approx_workers_used() == 1.0
     lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 0}, {})
     assert lm.approx_workers_used() == 2.0
Beispiel #2
0
    def testLoadMessages(self):
        lm = LoadMetrics()
        lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 1}, {})
        self.assertEqual(lm.approx_workers_used(), 0.5)
        lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 1}, {"CPU": 1})
        self.assertEqual(lm.approx_workers_used(), 1.0)

        # Both nodes count as busy since there is a queue on one.
        lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 2}, {})
        self.assertEqual(lm.approx_workers_used(), 2.0)
        lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 0}, {})
        self.assertEqual(lm.approx_workers_used(), 2.0)
        lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 1}, {})
        self.assertEqual(lm.approx_workers_used(), 2.0)

        # No queue anymore, so we're back to exact accounting.
        lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 0}, {})
        self.assertEqual(lm.approx_workers_used(), 1.5)
        lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 1}, {"GPU": 1})
        self.assertEqual(lm.approx_workers_used(), 2.0)

        lm.update("3.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        lm.update("4.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        lm.update("5.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        lm.update("6.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        lm.update("7.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        lm.update("8.3.3.3", {"CPU": 2}, {"CPU": 1}, {})
        self.assertEqual(lm.approx_workers_used(), 8.0)

        lm.update("2.2.2.2", {"CPU": 2}, {"CPU": 1}, {})  # no queue anymore
        self.assertEqual(lm.approx_workers_used(), 4.5)
Beispiel #3
0
 def testBottleneckResource(self):
     lm = LoadMetrics()
     lm.update("1.1.1.1", {"CPU": 2}, {"CPU": 0}, {})
     lm.update("2.2.2.2", {"CPU": 2, "GPU": 16}, {"CPU": 2, "GPU": 2}, {})
     assert lm.approx_workers_used() == 1.88
Beispiel #4
0
 def testPruneByNodeIp(self):
     lm = LoadMetrics()
     lm.update("1.1.1.1", {"CPU": 1}, {"CPU": 0}, {})
     lm.update("2.2.2.2", {"CPU": 1}, {"CPU": 0}, {})
     lm.prune_active_ips({"1.1.1.1", "4.4.4.4"})
     assert lm.approx_workers_used() == 1.0