コード例 #1
0
    def test_utilization(self):
        rt = ResultTrace()
        rt._lists_start = {
            "job_db_inx": [2, 1],
            "account": ["account2", "account1"],
            "cpus_req": [96, 48],
            "cpus_alloc": [96, 48],
            "job_name": ["jobName2", "jobName1"],
            "id_job": [2, 1],
            "id_qos": [3, 2],
            "id_resv": [4, 3],
            "id_user": [5, 4],
            "nodes_alloc": [4, 2],
            "partition": ["partition2", "partition1"],
            "priority": [199, 99],
            "state": [2, 3],
            "timelimit": [200, 100],
            "time_submit": [3003, 3000],
            "time_start": [3001, 3002],
            "time_end": [3005, 3010]
        }

        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144))

        self.assertEqual(utilization_timestamps, [3001, 3002, 3005, 3010])
        self.assertEqual(utilization_values, [96, 144, 48, 0])
        self.assertEqual(acc_waste, 0)

        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144, endCut=3006))
        self.assertEqual(utilization_timestamps, [3001, 3002, 3005, 3006])
        self.assertEqual(utilization_values, [96, 144, 48, 48])
        self.assertEqual(acc_waste, 0)
コード例 #2
0
    def test_utlization_sotre_load(self):
        rt = ResultTrace()
        self.addCleanup(self._del_table, "usage_values")
        rt._get_utilization_result().create_table(self._db)

        rt._lists_start = {
            "job_db_inx": [2, 1],
            "account": ["account2", "account1"],
            "cpus_req": [96, 48],
            "cpus_alloc": [96, 48],
            "job_name": ["jobName2", "jobName1"],
            "id_job": [2, 1],
            "id_qos": [3, 2],
            "id_resv": [4, 3],
            "id_user": [5, 4],
            "nodes_alloc": [4, 2],
            "partition": ["partition2", "partition1"],
            "priority": [199, 99],
            "state": [2, 3],
            "timelimit": [200, 100],
            "time_submit": [3000, 3000],
            "time_start": [3001, 3003],
            "time_end": [3005, 3010]
        }

        rt._wf_extractor = FakeWFExtractor()
        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144,
                                                   do_preload_until=3003,
                                                   endCut=3010,
                                                   store=True,
                                                   db_obj=self._db,
                                                   trace_id=1))
        self.assertEqual(acc_waste, 24)

        self.assertEqual(utilization_timestamps,
                         [3003, 3005, 3006, 3007, 3008, 3010])
        self.assertEqual(utilization_values, [144, 48, 36, 24, 48, 0])
        rt_2 = ResultTrace()
        rt_2.load_utilization_results(self._db, 1)
        new_ut, new_acc, new_corrected_ut = rt_2.get_utilization_values()
        self.assertAlmostEqual(integrated_ut, new_ut)
        self.assertEqual(acc_waste, new_acc)
        print("new_corrected_ut", new_corrected_ut)
        self.assertAlmostEqual(corrected_ut, new_corrected_ut)
コード例 #3
0
    last_value = None
    for (st, vl) in zip(ut_stamps, ut_values):
        if last_value is not None:
            new_stamps.append(st)
            new_values.append(last_value)
        new_stamps.append(st)
        new_values.append(vl)
        last_value = vl
    return new_stamps, new_values


(integrated_ut, utilization_timestamps, utilization_values, acc_waste,
 corrected_integrated_ut) = (
     rt.calculate_utilization(
         machine.get_total_cores(),
         #do_preload_until=exp.get_start_epoch(),
         #endCut=exp.get_end_epoch(),
         store=False,
         ending_time=max_submit_time))

utilization_timestamps, utilization_values = adjust_ut_plot(
    utilization_timestamps, utilization_values)

acc_period = 60
(waiting_ch_stamps, waiting_ch_values, core_h_per_min_stamps,
 core_h_per_min_values, waiting_requested_ch_values,
 requested_core_h_per_min_values) = rt.calculate_waiting_submitted_work_all(
     acc_period, ending_time=max_submit_time)

base_stamp = waiting_ch_stamps[0]
utilization_timestamps = [x - base_stamp for x in utilization_timestamps]
core_h_per_min_stamps = [x - base_stamp for x in core_h_per_min_stamps]
コード例 #4
0
    def test_utlization_waste(self):
        rt = ResultTrace()
        rt._lists_start = {
            "job_db_inx": [2, 1],
            "account": ["account2", "account1"],
            "cpus_req": [96, 48],
            "cpus_alloc": [96, 48],
            "job_name": ["jobName2", "jobName1"],
            "id_job": [2, 1],
            "id_qos": [3, 2],
            "id_resv": [4, 3],
            "id_user": [5, 4],
            "nodes_alloc": [4, 2],
            "partition": ["partition2", "partition1"],
            "priority": [199, 99],
            "state": [2, 3],
            "timelimit": [200, 100],
            "time_submit": [3000, 3000],
            "time_start": [3001, 3003],
            "time_end": [3005, 3010]
        }

        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144, do_preload_until=3002))

        self.assertEqual(utilization_timestamps, [3002, 3003, 3005, 3010])
        self.assertEqual(utilization_values, [96, 144, 48, 0])
        self.assertEqual(acc_waste, 0)
        self.assertEqual(integrated_ut, corrected_ut)

        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144,
                                                   do_preload_until=3003,
                                                   endCut=3006))

        self.assertEqual(utilization_timestamps, [3003, 3005, 3006])
        self.assertEqual(utilization_values, [144, 48, 48])
        self.assertEqual(acc_waste, 0)
        self.assertEqual(integrated_ut, corrected_ut)

        self.assertEqual(integrated_ut, (2.0 * 144.0 + 48.0) / (3.0 * 144.0))

        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144,
                                                   do_preload_until=3003,
                                                   endCut=3010))

        self.assertEqual(utilization_timestamps, [3003, 3005, 3010])
        self.assertEqual(utilization_values, [144, 48, 0])
        self.assertAlmostEqual(integrated_ut, 0.523809, delta=0.001)
        self.assertEqual(acc_waste, 0)
        self.assertEqual(integrated_ut, corrected_ut)

        rt._wf_extractor = FakeWFExtractor()
        (integrated_ut, utilization_timestamps, utilization_values, acc_waste,
         corrected_ut) = (rt.calculate_utilization(144,
                                                   do_preload_until=3003,
                                                   endCut=3010))
        self.assertEqual(acc_waste, 24)

        self.assertEqual(utilization_timestamps,
                         [3003, 3005, 3006, 3007, 3008, 3010])
        self.assertEqual(utilization_values, [144, 48, 36, 24, 48, 0])
        self.assertAlmostEqual((integrated_ut - corrected_ut) * 7 * 144, 24)