Skip to content
This repository has been archived by the owner on Mar 11, 2019. It is now read-only.

PowerAPI: A Middleware Toolkit to Learn and Monitor the CPU Power Consumption

Maxime Colmant edited this page Jul 13, 2016 · 4 revisions

Overview

This pages describes the settings, analysis and experiments presented in the Middleware'16 submission.

The source code is checked in the Middleware'16 folder.

Prerequisites

To launch the analysis or the experiments, you must install:

  • sbt, to compile and create self-running apps.
  • openjdk-7-jdk and openjdk-7-jre, to get java.
  • libpfm-4.6, to get an extended access to hardware counters.
  • bluez and libbluetooth-dev, to use the external PowerSPY power meter.
  • parsec-2.1, NPB-3.3.1, SpecJBB, as workloads used in our article.

Source code

Several sbt projects, based on PowerAPI, have been developed upon needs.

Each project has its own configuration, and has to be adapted when needed.

HPC events analysis

The source code used during the Learning Phase (cf. Section 3.1) is checked inside the hpc-analysis-default project for Intel or AMD architectures, or the hpc-analysis-arm project for ARM architecture instead.

Process-level Power Monitoring

The source code used for this experiment (cf. Section 5.3) is checked inside the exp-process-level-xeon project.

Adaptive CPU Power Models

The source code used for this experiment (cf. Section 5.4) is checked inside the exp-domain-pmodel-tegra-1c and exp-domain-pmodel-tegra-4c projects.

System Impact on CPU Power Models

The source code used for this experiment (cf. Section 5.5) is checked inside the exp-system-impact-xeon project.

How to build?

  • Clone the repository: `git clone https://github.com/Spirals-Team/powerapi.git``
  • Checkout the Middleware'16 branch: git checkout research/middleware-16
  • Go to the parent sbt project: cd powerapi-middleware-16
  • Launch sbt: sbt, and choose one of the project listed below: > project ...
  • Create a self-running app: universal:packageZipTarball
  • Get the app packaged as a tarball, extract it, configure it (conf/) and use it (sudo ./bin/...)

All projects are listed in the powerapi-middleware-16 project.

  • hpc-analysis-default
  • hpc-analysis-arm
  • exp-domain-pmodel-tegra-1c
  • exp-domain-pmodel-tegra-4c
  • exp-process-level-xeon
  • exp-system-impact-xeon

Setups

Processor Freq. Design TDP SMT DVFS Turbo OS Kernel Details
Intel Xeon W3520 2.66GHz 8 threads 130W Yes Yes Yes Ubuntu 14.04 3.13 ondemand governor enabled
Intel Xeon W3520 2.66GHz 8 threads 130W Yes Yes Yes CentOS 7 3.10 balanced profile enabled
Intel Xeon W3520 2.66GHz 8 threads 130W Yes Yes Yes CentOS 7 3.10 latency-performance profile enabled
Intel i3 2120 3.10GHz 4 threads 55W Yes Yes No Ubuntu 14.04 3.13 ondemand governor enabled
ARM Cortex A15 2.32GHz 4 cores N/A No No No Ubuntu 14.04 3.10 -
ARM Cortex A15 2.32GHz 1 low power core N/A No No No Ubuntu 14.04 3.10 -
AMD Opteron 8354 2.2GHz 16 cores N/A No No No Ubuntu 14.04 3.13 -