powerapi-ng / powerapi-scala Goto Github PK
View Code? Open in Web Editor NEWPowerAPI is a middleware toolkit for building software-defined power meters
Home Page: http://powerapi.org
License: GNU Affero General Public License v3.0
PowerAPI is a middleware toolkit for building software-defined power meters
Home Page: http://powerapi.org
License: GNU Affero General Public License v3.0
There is a problem in the sigar test for non-unix systems when the getProcessCpuTime is called on the Process(1)
Uses the helper as a parameter in order to rewrite tests (we will be able to mock this object).
Implement a new version of the Clock actor based on the topic-based message bus and including supervision strategies.
It could be useful to propose a way to prefix each configuration parameter for allowing to use the same module with different parameters.
Provide a filesystem interface using FUSE (GPLv2 - http://fuse.sourceforge.net) to control and monitor the power consumption.
stagem2@misc:~/powerapi/powerapi-cli$ ~/sbt/bin/sbt publishLocal
/home/stagem2/powerapi/powerapi-cli/build.sbt:3: error: not found: value Universal
mappings in Universal += downloadBluecove.value -> s"lib/${downloadBluecove.value.name}"
^
[error] Type error in expression
Scala version: 2.9.2+dfsg-2, from Debian 8 (Jessie)
Java version: 1.7.0_95 (openjdk 7u95-2.6.4-1~deb8u1), from Debian 8
sbt version: 0.13.9 (the latest from http://www.scala-sbt.org/)
On some limited architecture, the default actor timeout is not enough and causes some crash.
Provide a command line support for PowerAPI.
good morning/ afternoon
I am working on a school project that requires using powerapi to estimate the energy consumption, I don't seem to quite understand how to configure the software, though, here are the entry lines from my terminal
mint@mint ~ $ cd Documents/
mint@mint ~ /Documents $ cd powerapi-cli/
mint@mint ~ /Documents/powerapi-cli $ ./bin/powerapi
after this i dont realy now how to proceed because the configuration file (powerapi-cli/conf /powerapi.conf) is empty and i couldn't find any documentation on how to configure it myself.
PS: i got this software version from the website powerapi.org
any help is welcome.
Hi there!
I'm running powerapi v4.2 in 6 different RHEL machines. I created a systemd service that runs powerapi and sends the output to an influxdb database. I noticed a strange behaviour that I would like to share.
In two of these six machines I had, since beginning, 4 processors and 6GB of RAM. Powerapi runs fine but from times to times the process dies and my grafana lacks a lot of data that was not sent to the influxdb since the process has died. After some time the systemd is able to restart the process and the situation normalizes.
In the other four machines I had, in the beginning, one processor and 1GB of RAM. In these machines powerapi sometimes started and sometimes did not. The command line just hang, it seemed to me that the process was waiting to something.
After a lot of analyses, I decided to upgrade the hardware to 2 processors and 4GB of RAM. With this new configuration powerapi started right after I ran the command and everything seemed to work perfectly but after some hours I noticed the same behaviour that I described in the other two machines: from times to times the process simple dies.
I tried v4.0 and after creating the database at influxdb and the retention policy, again, the process starts and from time to time it dies with no apparent reason.
I tried v3.4 and in this version the command line seems more 'responsive'. The process starts right after I hit the enter key in the command line. 3.4 seems ok to me but I noticed that this version doesn't have influxdb support.
In all the tests I ran, I used the same configuration in the powerapi.conf file: powerapi.cpu.tdp = 130
I made some adjustments and started powerapi with more heap memory alocated to the JVM but the behaviour is the same.
So, in the newest version, is there a specific hardware / software requirement to use powerapi? Some clue about this behaviour?
Provide a web interface to remotely control and monitor power consumption of processes.
There is a problem when a warning message is expected in the ClockSuite. Sometime, the message is not caught by the listener and thus the warning is printed. It takes time for printing it, so the assertion on the number of received messages can be wrong.
Write all the methods to give the possibility to pass each argument to the Power modules instead of to read the values inside configuration files.
I am trying to monitor the power consumption of docker container(s) with the new version of your docker container. The reported values are all zeros whiles with the earlier version this was not the case.
Command used :
docker run --name powerapi --rm --privileged --net=host --pid=host -v /var/run:/var/run docker_image modules procfs-cpu-simple monitor --frequency 1000 --containers name_of_container --console
I however also tried doing the same monitoring from my host machine using the cli version 4.2.1 but displays zero for the power consumed by the container(s).
Command used :
./bin/powerapi modules procfs-cpu-simple monitor --frequency 1000 --containers name_of container --console
Thanks.
Import and tune the code of the Topic-based Message Bus for the new version of PowerAPI.
There is a problem with the TargetUsageRatio when a All target is received. Indeed, the one created contains a ratio which is always 1. It should be active time/global time.
(suggested by @dukeboard)
We miss a message-based reporter to publish the power reports on a given channel (whose topic can be the PID) as we had in BitWatts.
Create the structure of the project from Scala Activator and commit it to GitHub.
Cleans the actors hierarchy by stopping the actor created in a Monitor class for the Power Display classes.
Inspect all files and check if there is a \n at the end.
There is a problem with the bus definition. Indeed, it was built as a singleton but each PowerMeter will need a new instance for keeping an insolation.
Dear powerapi developpers,
While version 4.0 has been released for a while now, the documentation still mentions version 3.3 in the Getting started section, namely in pages:
Pull requests cannot be submitted for wiki pages, but I can provide you patches if needed.
Thanks for your work on powerapi!
Thomas
There is a problem with the tests written for the Clock. It does not work every time on the Core2Duo (limited resources). The tests have to be rewritten as the SubcriptionSuite.
Currently, the architectures compatible with RAPL are directly written inside the Helper. Given the fact the architectures are constantly evolving, such parameters should be put inside a configuration file instead.
Package PowerAPI as docker images to ease the deployment.
To use PowerSPY (connected with an USB dongle), this thread can probably help.
There is a problem with the TargetUsageRatio used to compute the power.
Indeed, we use the UsageReport sent by the module/cpu/simple/Sensor which have to consider the idle time from the CPU. Here, only the active time is to be considered.
Dear PowerAPI maintainers,
A new version 4.0 of PowerAPI has been released in April, which overrides the previous version 4.0 released about a year before.
However, the behaviour between the two versions is different and the new release contains files mentioning a v4.2 (namely lib/powerapi-cli.powerapi-cli-4.2.jar).
Would it be possible to clear the situation by separating versions 4.0 and 4.2?
Thanks a lot for your work on PowerAPI,
Thomas
Write documentation for end-users.
Write documentation for developers.
I faced a linkage error while starting a monitoring with the Sigar module.
Apparently, the version compiled with Scala has not the same method signature that the version delivered in the package.
java.lang.UnsatisfiedLinkError: org.hyperic.sigar.ptql.SigarProcessQuery.create(Ljava/lang/String;)V
at org.hyperic.sigar.ptql.SigarProcessQuery.create(Native Method)
at org.hyperic.sigar.ptql.ProcessQueryFactory.getQuery(ProcessQueryFactory.java:66)
version used: release 3.3
Best regards,
ps: don't hesitate if you want more details about the stack trace.
Hi,
I am a student researcher at Carnegie Mellon University and am using PowerAPI to make power measurements on some Tensorflow Python code.
I am working on a NVIDIA Jetson TK1 Kit (http://www.nvidia.com/object/jetson-tk1-embedded-dev-kit.html), where I have the option of turning on/off cores to change the device's performance level.
When I have all the cores turned on (high performance), PowerAPI suggests that the device is using less power than when I have all the cores turned off (low performance).
Do you have any insights into this result? I would have expected the opposite to occur.
Thank you,
Connor Lin
Provide a daemon mode to run PowerAPI as a OS-level service.
There is a problem when the Sensor tries to read the values (stored as lists) from the configuration file. The conversions used are wrong.
Hi Guys,
I am having a problem to get a reading, i tried with " procfs-cpu-simple monitor --frequency 1000 --pids xxx" (valid pids)
but somehow i only get 0 mhz, it keep on spaming 0 mhz...
i have checked my tdp (google) and then set in the configuration (as below)
I wonder is there anything else that i need to do or miss out?
Thanks.
The cache in the Sensor is not correctly updated, then the TargetUsageRatio is always equal to 0.0.
Refactors the code to generate an interface for all the external power meters.
Adds the remaining information to the display method to give the possibility to print it.
Implement the sampling feature for building a cpu power profile.
Provide a trait for reading values in configuration files.
Only under Windows, the global execution time for the cpu, returned by Sigar, is too high. Thus, estimations computed by Sigar module are wrong.
Trying to get started with powerapi on Archlinux. I tried this
$ cat powerapi-cli.conf
powerapi.cpu.tdp = 45
$ docker run \
--rm --privileged --pid=host \
-v $PWD/powerapi-cli.conf:/powerapi/conf/powerapi-cli.conf \
spirals/powerapi-cli:4.2.1 \
modules procfs-cpu-simple monitor --frequency 1000 --apps firefox --pids 2372 --console
results in:
library initialization failed - unable to allocate file descriptor table - out of memory%
Further info:
kernel: 4.20.1
$ free -m
total used free shared buff/cache available
Mem: 16010 1908 12072 257 2029 13530
Swap: 0 0 0
$ docker version
Client:
Version: 18.09.1-ce
API version: 1.39
Go version: go1.11.4
Git commit: 4c52b901c6
Built: Thu Jan 10 06:51:04 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.09.1-ce
API version: 1.39 (minimum version 1.12)
Go version: go1.11.4
Git commit: 4c52b901c6
Built: Thu Jan 10 06:50:46 2019
OS/Arch: linux/amd64
Experimental: false
Any ideas?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.