diff --git a/powerapi-powermeter/mavenproject2/pom.xml b/powerapi-powermeter/mavenproject2/pom.xml new file mode 100644 index 0000000..10ac16f --- /dev/null +++ b/powerapi-powermeter/mavenproject2/pom.xml @@ -0,0 +1,157 @@ + + + 4.0.0 + com.sacha + mavenproject2 + 1.0-SNAPSHOT + jar + + UTF-8 + 1.7 + 1.7 + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.1.1 + + + test + + java + + + com.sacha.mavenproject2.guiClass + + arg0 + arg1 + + + + + + + + + + + org.scala-lang + scala-library + 2.11.7 + + + org.apache.logging.log4j + log4j-api + 2.5 + + + org.apache.logging.log4j + log4j-core + 2.5 + + + org.scoverage + scalac-scoverage-runtime_2.11 + 1.1.1 + provided + + + org.scoverage + scalac-scoverage-plugin_2.11 + 1.1.1 + provided + + + com.typesafe.akka + akka-actor_2.11 + 2.3.14 + + + com.typesafe + config + 1.2.1 + + + fr.inria.powerspy + powerspy-core_2.11 + 1.2 + + + com.nativelibs4java + bridj + 0.7.0 + + + com.github.scala-incubator.io + scala-io-core_2.11 + 0.4.3 + + + com.github.scala-incubator.io + scala-io-file_2.11 + 0.4.3 + + + org.jfree + jfreechart + 1.0.19 + + + org.scala-saddle + saddle-core_2.11 + 1.3.4 + + + org.hyperic + sigar + 1.6.5.132 + + + net.java.dev.jna + jna + 4.2.1 + + + io.spray + spray-json_2.11 + 1.3.2 + + + com.github.docker-java + docker-java + 2.1.4 + + + org.influxdb + influxdb-java + 2.1 + + + com.typesafe.akka + akka-testkit_2.11 + 2.3.14 + test + + + org.scalatest + scalatest_2.11 + 2.2.5 + test + + + org.scalamock + scalamock-scalatest-support_2.11 + 3.2.2 + test + + + org.powerapi + powerapi-core_2.11 + 4.0 + jar + + + \ No newline at end of file diff --git a/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.form b/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.form new file mode 100644 index 0000000..4b97aed --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.form @@ -0,0 +1,111 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.java b/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.java new file mode 100644 index 0000000..02ad69d --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/java/com/sacha/mavenproject2/guiClass.java @@ -0,0 +1,195 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.sacha.mavenproject2; + +import java.util.ArrayList; +import java.util.Arrays; +import javax.swing.JOptionPane; +import org.powerapi.PowerMeter; +import org.powerapi.PowerModule; +import org.powerapi.PowerMonitoring; +import org.powerapi.core.target.Application; +import org.powerapi.core.target.Target; +import org.powerapi.module.cpu.simple.ProcFSCpuSimpleModule; +import org.powerapi.reporter.JFreeChartDisplay; +import scala.collection.JavaConversions; +import scala.concurrent.duration.Duration; + +/** + * + * @author sacha + */ +public class guiClass extends javax.swing.JFrame { + + /** + * Creates new form guiClass + */ + public guiClass() { + initComponents(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jButton1 = new javax.swing.JButton(); + appNameField = new javax.swing.JTextField(); + monitorTimeField = new javax.swing.JTextField(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jButton1.setText("Display"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + appNameField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + appNameFieldActionPerformed(evt); + } + }); + + monitorTimeField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + monitorTimeFieldActionPerformed(evt); + } + }); + + jLabel1.setText("Application Name"); + + jLabel2.setText("Monitor time"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGap(23, 23, 23) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 66, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jButton1) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(appNameField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(monitorTimeField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(87, 87, 87)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGap(51, 51, 51) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(appNameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(monitorTimeField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2)) + .addGap(50, 50, 50) + .addComponent(jButton1) + .addGap(45, 45, 45)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void appNameFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_appNameFieldActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_appNameFieldActionPerformed + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + try{ + String appName=appNameField.getText(); + + int monitorTime=Integer.parseInt(monitorTimeField.getText()); + + ArrayList modules; + modules = new ArrayList(Arrays.asList(ProcFSCpuSimpleModule.apply())); + PowerMeter cpu_simple = PowerMeter.loadModule(JavaConversions.asScalaBuffer(modules)); + JFreeChartDisplay chart = new JFreeChartDisplay(); + ArrayList targets = new ArrayList(Arrays.asList(new Application(appName))); + PowerMonitoring monitoring = cpu_simple.monitor(JavaConversions.asScalaBuffer(targets)).every(Duration.create(1L, "seconds")); + monitoring.to(chart); + + cpu_simple.waitFor(Duration.create(monitorTime, "minutes")); + + monitoring.cancel(); + cpu_simple.shutdown(); + } + catch(NumberFormatException ex){JOptionPane.showMessageDialog(null, "Please enter the correct application name and monitor time");} + }//GEN-LAST:event_jButton1ActionPerformed + + private void monitorTimeFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_monitorTimeFieldActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_monitorTimeFieldActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(guiClass.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(guiClass.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(guiClass.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(guiClass.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new guiClass().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField appNameField; + private javax.swing.JButton jButton1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JTextField monitorTimeField; + // End of variables declaration//GEN-END:variables +} diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/akka.conf b/powerapi-powermeter/mavenproject2/src/main/resources/akka.conf new file mode 100644 index 0000000..41a628a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/akka.conf @@ -0,0 +1,26 @@ +akka { + # Options: OFF, ERROR, WARNING, INFO, DEBUG + loglevel = ERROR + + log-dead-letters-during-shutdown = off + log-dead-letters = off + + actor { + guardian-supervisor-strategy = "org.powerapi.core.GuardianFailureStrategy" + + debug { + # Enable function of LoggingReceive, which is to log any received message at + # DEBUG level + receive = off + + # Enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill and the like) + autoreceive = off + + # Enable DEBUG logging of actor lifecycle changes + lifecycle = off + + # Enable DEBUG logging of subscription changes on the eventStream + event-stream = off + } + } +} diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/application.conf b/powerapi-powermeter/mavenproject2/src/main/resources/application.conf new file mode 100644 index 0000000..cefc673 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/application.conf @@ -0,0 +1,5 @@ +include "akka" +include "rapl" +include "hardware" +include "display-file" +include "powerspy" diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/display-file.conf b/powerapi-powermeter/mavenproject2/src/main/resources/display-file.conf new file mode 100644 index 0000000..806d193 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/display-file.conf @@ -0,0 +1,7 @@ +powerapi { + reporter { + file { + prefix = "powerapi-out" + } + } +} \ No newline at end of file diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/hardware.conf b/powerapi-powermeter/mavenproject2/src/main/resources/hardware.conf new file mode 100644 index 0000000..f2ebebf --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/hardware.conf @@ -0,0 +1,6 @@ +powerapi { + cpu { + tdp = 65 + } +} + diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/log4j.xml b/powerapi-powermeter/mavenproject2/src/main/resources/log4j.xml new file mode 100644 index 0000000..29b70c9 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/log4j.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/log4j2.xml b/powerapi-powermeter/mavenproject2/src/main/resources/log4j2.xml new file mode 100644 index 0000000..3a5187a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/log4j2.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/logback.xml b/powerapi-powermeter/mavenproject2/src/main/resources/logback.xml new file mode 100644 index 0000000..b814b0a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + UTF-8 + [%-5level] [d{MM/dd/yyyy HH:mm:ss.SSS}] [%thread] [%logger{36}] - %msg%n + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/powerspy.conf b/powerapi-powermeter/mavenproject2/src/main/resources/powerspy.conf new file mode 100644 index 0000000..ad601e5 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/powerspy.conf @@ -0,0 +1,3 @@ +powerspy { + mac = "00:0B:CE:07:1E:87" +} diff --git a/powerapi-powermeter/mavenproject2/src/main/resources/rapl.conf b/powerapi-powermeter/mavenproject2/src/main/resources/rapl.conf new file mode 100644 index 0000000..21316a1 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/src/main/resources/rapl.conf @@ -0,0 +1,9 @@ +rapl.supported-architectures = [ + {id = 42, model = "Sandybridge"} + {id = 45, model = "Sandybridge-EP"} + {id = 58, model = "Ivybridge"} + {id = 62, model = "Ivybridge-EP"} + {id = 60, model = "Haswell"} + {id = 63, model = "Haswell-EP"} + {id = 61, model = "Broadwell"} +] diff --git a/powerapi-powermeter/mavenproject2/target/classes/akka.conf b/powerapi-powermeter/mavenproject2/target/classes/akka.conf new file mode 100644 index 0000000..41a628a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/akka.conf @@ -0,0 +1,26 @@ +akka { + # Options: OFF, ERROR, WARNING, INFO, DEBUG + loglevel = ERROR + + log-dead-letters-during-shutdown = off + log-dead-letters = off + + actor { + guardian-supervisor-strategy = "org.powerapi.core.GuardianFailureStrategy" + + debug { + # Enable function of LoggingReceive, which is to log any received message at + # DEBUG level + receive = off + + # Enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill and the like) + autoreceive = off + + # Enable DEBUG logging of actor lifecycle changes + lifecycle = off + + # Enable DEBUG logging of subscription changes on the eventStream + event-stream = off + } + } +} diff --git a/powerapi-powermeter/mavenproject2/target/classes/application.conf b/powerapi-powermeter/mavenproject2/target/classes/application.conf new file mode 100644 index 0000000..cefc673 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/application.conf @@ -0,0 +1,5 @@ +include "akka" +include "rapl" +include "hardware" +include "display-file" +include "powerspy" diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$1.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$1.class new file mode 100644 index 0000000..20904f6 Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$1.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$2.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$2.class new file mode 100644 index 0000000..fffae3b Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$2.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$3.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$3.class new file mode 100644 index 0000000..b7e96ad Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$3.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$4.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$4.class new file mode 100644 index 0000000..4ab3ede Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass$4.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass.class new file mode 100644 index 0000000..2bf0c49 Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/guiClass.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/mainClass.class b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/mainClass.class new file mode 100644 index 0000000..b1e5e8b Binary files /dev/null and b/powerapi-powermeter/mavenproject2/target/classes/com/sacha/mavenproject2/mainClass.class differ diff --git a/powerapi-powermeter/mavenproject2/target/classes/display-file.conf b/powerapi-powermeter/mavenproject2/target/classes/display-file.conf new file mode 100644 index 0000000..806d193 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/display-file.conf @@ -0,0 +1,7 @@ +powerapi { + reporter { + file { + prefix = "powerapi-out" + } + } +} \ No newline at end of file diff --git a/powerapi-powermeter/mavenproject2/target/classes/hardware.conf b/powerapi-powermeter/mavenproject2/target/classes/hardware.conf new file mode 100644 index 0000000..f2ebebf --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/hardware.conf @@ -0,0 +1,6 @@ +powerapi { + cpu { + tdp = 65 + } +} + diff --git a/powerapi-powermeter/mavenproject2/target/classes/log4j.xml b/powerapi-powermeter/mavenproject2/target/classes/log4j.xml new file mode 100644 index 0000000..29b70c9 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/log4j.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/target/classes/log4j2.xml b/powerapi-powermeter/mavenproject2/target/classes/log4j2.xml new file mode 100644 index 0000000..3a5187a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/log4j2.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/target/classes/logback.xml b/powerapi-powermeter/mavenproject2/target/classes/logback.xml new file mode 100644 index 0000000..b814b0a --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/logback.xml @@ -0,0 +1,13 @@ + + + + + UTF-8 + [%-5level] [d{MM/dd/yyyy HH:mm:ss.SSS}] [%thread] [%logger{36}] - %msg%n + + + + + + + diff --git a/powerapi-powermeter/mavenproject2/target/classes/powerspy.conf b/powerapi-powermeter/mavenproject2/target/classes/powerspy.conf new file mode 100644 index 0000000..ad601e5 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/powerspy.conf @@ -0,0 +1,3 @@ +powerspy { + mac = "00:0B:CE:07:1E:87" +} diff --git a/powerapi-powermeter/mavenproject2/target/classes/rapl.conf b/powerapi-powermeter/mavenproject2/target/classes/rapl.conf new file mode 100644 index 0000000..21316a1 --- /dev/null +++ b/powerapi-powermeter/mavenproject2/target/classes/rapl.conf @@ -0,0 +1,9 @@ +rapl.supported-architectures = [ + {id = 42, model = "Sandybridge"} + {id = 45, model = "Sandybridge-EP"} + {id = 58, model = "Ivybridge"} + {id = 62, model = "Ivybridge-EP"} + {id = 60, model = "Haswell"} + {id = 63, model = "Haswell-EP"} + {id = 61, model = "Broadwell"} +]