Ejemplo n.º 1
0
    def trim_lat_df(self, start, lat_df):
        if lat_df.empty:
            return lat_df

        lat_df = Trace.squash_df(lat_df, start, lat_df.index[-1], "t_delta")
        # squash_df only updates t_delta, remove t_start to make sure it's not used
        return lat_df.drop('t_start', 1)
Ejemplo n.º 2
0
    def max_idle_time(self, trace, start, end, cpus):
        """
        :returns: The maximum idle time of 'cpus' in the [start, end] interval
        """
        idle_df = pd.DataFrame()
        max_time = 0
        max_cpu = 0

        for cpu in cpus:
            busy_df = self.get_active_df(trace, cpu)
            busy_df = Trace.squash_df(busy_df, start, end)
            busy_df = busy_df[busy_df.state == 0]

            if busy_df.empty:
                continue

            local_max = busy_df.delta.max()
            if local_max > max_time:
                max_time = local_max
                max_cpu = cpu

        return max_time, max_cpu
Ejemplo n.º 3
0
    def test_squash_df(self):
        """
        TestTrace: squash_df() behaves as expected
        """
        index = [float(i) for i in range(15, 20)]
        data = [(1, i % 2) for i in range(15, 20)]
        df = pd.DataFrame(index=index, data=data, columns=['delta', 'state'])

        ## Test "standard" slice:

        # The df here should be:
        # Time delta state
        # 16.5  .5   0
        # 17    .5   1
        df1 = Trace.squash_df(df, 16.5, 17.5,)
        head = df1.head(1)
        tail = df1.tail(1)
        self.assertEquals(len(df1.index), 2)
        self.assertEquals(df1.index.tolist(), [16.5, 17])
        self.assertAlmostEqual(head['delta'].values[0], 0.5, places=self.FLOAT_PLACES)
        self.assertAlmostEqual(tail['delta'].values[0], 0.5, places=self.FLOAT_PLACES)
        self.assertEquals(head['state'].values[0], 0)
        self.assertEquals(tail['state'].values[0], 1)

        ## Test slice where no event exists in the interval

        # The df here should be:
        # Time delta state
        # 16.2  .6   0
        df2 = Trace.squash_df(df, 16.2, 16.8)
        self.assertEquals(len(df2.index), 1)
        self.assertEquals(df2.index[0], 16.2)
        self.assertAlmostEqual(df2['delta'].values[0], 0.6, places=self.FLOAT_PLACES)
        self.assertEquals(df2['state'].values[0], 0)

        ## Test slice that matches an event's index

        # The df here should be:
        # Time delta state
        # 16   1   0
        df3 = Trace.squash_df(df, 16, 17)
        self.assertEquals(len(df3.index), 1)
        self.assertEquals(df3.index[0], 16)
        self.assertAlmostEqual(df3['delta'].values[0], 1, places=self.FLOAT_PLACES)
        self.assertEquals(df3['state'].values[0], 0)

        ## Test slice past last event
        # The df here should be:
        # Time delta state
        # 19.5  .5  1
        df4 = Trace.squash_df(df, 19.5, 22)
        self.assertEquals(len(df4.index), 1)
        self.assertEquals(df4.index[0], 19.5)
        self.assertAlmostEqual(df4['delta'].values[0], 0.5, places=self.FLOAT_PLACES)
        self.assertEquals(df4['state'].values[0], 1)

        ## Test slice where there's no past event
        df5 = Trace.squash_df(df, 10, 30)
        self.assertEquals(len(df5.index), 5)

        ## Test slice where that should contain nothing
        df6 = Trace.squash_df(df, 8, 9)
        self.assertEquals(len(df6.index), 0)
Ejemplo n.º 4
0
    def test_squash_df(self):
        """
        TestTrace: squash_df() behaves as expected
        """
        index = [float(i) for i in range(15, 20)]
        data = [(1, i % 2) for i in range(15, 20)]
        df = pd.DataFrame(index=index, data=data, columns=['delta', 'state'])

        ## Test "standard" slice:

        # The df here should be:
        # Time delta state
        # 16.5  .5   0
        # 17    .5   1
        df1 = Trace.squash_df(
            df,
            16.5,
            17.5,
        )
        head = df1.head(1)
        tail = df1.tail(1)
        self.assertEquals(len(df1.index), 2)
        self.assertEquals(df1.index.tolist(), [16.5, 17])
        self.assertAlmostEqual(head['delta'].values[0],
                               0.5,
                               places=self.FLOAT_PLACES)
        self.assertAlmostEqual(tail['delta'].values[0],
                               0.5,
                               places=self.FLOAT_PLACES)
        self.assertEquals(head['state'].values[0], 0)
        self.assertEquals(tail['state'].values[0], 1)

        ## Test slice where no event exists in the interval

        # The df here should be:
        # Time delta state
        # 16.2  .6   0
        df2 = Trace.squash_df(df, 16.2, 16.8)
        self.assertEquals(len(df2.index), 1)
        self.assertEquals(df2.index[0], 16.2)
        self.assertAlmostEqual(df2['delta'].values[0],
                               0.6,
                               places=self.FLOAT_PLACES)
        self.assertEquals(df2['state'].values[0], 0)

        ## Test slice that matches an event's index

        # The df here should be:
        # Time delta state
        # 16   1   0
        df3 = Trace.squash_df(df, 16, 17)
        self.assertEquals(len(df3.index), 1)
        self.assertEquals(df3.index[0], 16)
        self.assertAlmostEqual(df3['delta'].values[0],
                               1,
                               places=self.FLOAT_PLACES)
        self.assertEquals(df3['state'].values[0], 0)

        ## Test slice past last event
        # The df here should be:
        # Time delta state
        # 19.5  .5  1
        df4 = Trace.squash_df(df, 19.5, 22)
        self.assertEquals(len(df4.index), 1)
        self.assertEquals(df4.index[0], 19.5)
        self.assertAlmostEqual(df4['delta'].values[0],
                               0.5,
                               places=self.FLOAT_PLACES)
        self.assertEquals(df4['state'].values[0], 1)

        ## Test slice where there's no past event
        df5 = Trace.squash_df(df, 10, 30)
        self.assertEquals(len(df5.index), 5)

        ## Test slice where that should contain nothing
        df6 = Trace.squash_df(df, 8, 9)
        self.assertEquals(len(df6.index), 0)