Пример #1
0
    def test_overlapping_freq_doms(self):
        """Can't build an EM with energy nodes overlapping freq domains"""

        # To make this easy we'll just use a single active state everywhere, and
        # no idle states
        active_states = {10000: ActiveState(capacity=1024, power=100)}

        def cpu_node(cpu):
            return EnergyModelNode(cpu=cpu,
                                   active_states=active_states,
                                   idle_states=[])

        root_node = EnergyModelRoot(children=[
            EnergyModelNode(name='cluster1',
                            active_states=active_states,
                            idle_states=[],
                            children=[cpu_node(0), cpu_node(1)])
        ])

        def cpu_pd(cpu):
            return PowerDomain(idle_states=[], cpu=cpu)

        with self.assertRaises(ValueError):
            EnergyModel(root_node=root_node,
                        root_power_domain=PowerDomain(
                            idle_states=[], children=[cpu_pd(0),
                                                      cpu_pd(1)]),
                        freq_domains=[[0], [1]]),
Пример #2
0
from energy_model import (EnergyModel, ActiveState, EnergyModelCapacityError,
                          EnergyModelNode, EnergyModelRoot, PowerDomain)

# Import these just to test that they can be constructed
from libs.utils.platforms.juno_energy import juno_energy
from libs.utils.platforms.pixel_energy import pixel_energy
from libs.utils.platforms.hikey_energy import hikey_energy
""" A very basic test suite for the EnergyModel class."""

# WARNING!
# Note that the tests below have hard-coded expectations about the result. If
# you change the numbers in this EM, you'll need to recalculate those hard-coded
# values (or just refactor these tests)

little_cluster_active_states = OrderedDict([
    (1000, ActiveState(power=10)),
    (2000, ActiveState(power=20)),
])

little_cluster_idle_states = OrderedDict([
    ('WFI', 5),
    ('cpu-sleep-0', 5),
    ('cluster-sleep-0', 1),
])

little_cpu_active_states = OrderedDict([
    (1000, ActiveState(capacity=100, power=100)),
    (1500, ActiveState(capacity=150, power=150)),
    (2000, ActiveState(capacity=200, power=200)),
])
Пример #3
0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot,
                          PowerDomain, EnergyModel)

from collections import OrderedDict

silver_cpu_active_states = OrderedDict([
    ( 307200, ActiveState(capacity=149, power=90)),
    ( 422400, ActiveState(capacity=205, power=121)),
    ( 480000, ActiveState(capacity=229, power=142)),
    ( 556800, ActiveState(capacity=253, power=164)),
    ( 652800, ActiveState(capacity=296, power=198)),
    ( 729600, ActiveState(capacity=350, power=239)),
    ( 844800, ActiveState(capacity=406, power=306)),
    ( 960000, ActiveState(capacity=460, power=371)),
    (1036800, ActiveState(capacity=491, power=430)),
    (1113600, ActiveState(capacity=527, power=486)),
    (1190400, ActiveState(capacity=572, power=541)),
    (1228800, ActiveState(capacity=584, power=586)),
    (1324800, ActiveState(capacity=630, power=651)),
    (1401600, ActiveState(capacity=666, power=732)),
    (1478400, ActiveState(capacity=711, power=827)),
    (1593600, ActiveState(capacity=763, power=925)),
Пример #4
0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from collections import OrderedDict

from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot,
                          PowerDomain, EnergyModel)

a53_cluster_active_states = OrderedDict([
    (450000, ActiveState(power=26)),
    (575000, ActiveState(power=30)),
    (700000, ActiveState(power=39)),
    (775000, ActiveState(power=47)),
    (850000, ActiveState(power=57)),
])

# TODO warn if any of the idle states aren't represented by power domains
a53_cluster_idle_states = OrderedDict([
    ("WFI", 56),
    ("cpu-sleep-0", 56),
    ("cluster-sleep-0", 17),
])

a53_cpu_active_states = OrderedDict([
    (450000, ActiveState(capacity=235, power=33)),
Пример #5
0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot,
                          PowerDomain, EnergyModel)

from collections import OrderedDict

cluster_active_states = OrderedDict([
    (208000, ActiveState(capacity=178, power=16)),
    (432000, ActiveState(capacity=369, power=29)),
    (729000, ActiveState(capacity=622, power=47)),
    (960000, ActiveState(capacity=819, power=75)),
    (1200000, ActiveState(capacity=1024, power=112))
])

cluster_idle_states = OrderedDict([('WFI', 47), ('cpu-sleep', 47),
                                   ('cluster-sleep', 0)])

cpu_active_states = OrderedDict([(208000, ActiveState(capacity=178, power=69)),
                                 (432000, ActiveState(capacity=369,
                                                      power=124)),
                                 (729000, ActiveState(capacity=622,
                                                      power=224)),
                                 (960000, ActiveState(capacity=819,
Пример #6
0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from energy_model import (ActiveState, EnergyModelNode, EnergyModelRoot,
                          PowerDomain, EnergyModel)

from collections import OrderedDict

silver_cpu_active_states = OrderedDict([
    (307200, ActiveState(capacity=149, power=90)),
    (384000, ActiveState(capacity=188, power=111)),
    (460800, ActiveState(capacity=225, power=133)),
    (537600, ActiveState(capacity=257, power=160)),
    (614400, ActiveState(capacity=281, power=182)),
    (691200, ActiveState(capacity=315, power=210)),
    (768000, ActiveState(capacity=368, power=251)),
    (844800, ActiveState(capacity=406, power=306)),
    (902400, ActiveState(capacity=428, power=332)),
    (979200, ActiveState(capacity=469, power=379)),
    (1056000, ActiveState(capacity=502, power=438)),
    (1132800, ActiveState(capacity=538, power=494)),
    (1209600, ActiveState(capacity=581, power=550)),
    (1286400, ActiveState(capacity=611, power=613)),
    (1363200, ActiveState(capacity=648, power=670)),
    (1440000, ActiveState(capacity=684, power=752)),