fix power output

This commit is contained in:
Robin Appelman 2021-03-31 19:45:59 +02:00
commit 3af0288836
2 changed files with 11 additions and 5 deletions

View file

@ -11,7 +11,7 @@ In order to get the power monitoring output you'll need to give the palantir use
- Create `/etc/udev/rules.d/99-powermonitoring.rules` with - Create `/etc/udev/rules.d/99-powermonitoring.rules` with
```udev ```udev
SUBSYSTEM=="powercap", ACTION=="add", RUN+="/bin/chgrp -R powermonitoring /sys%p", RUN+="/bin/chmod -R g=u /sys%p" SUBSYSTEM=="powercap", ACTION=="add", RUN+="/bin/chgrp -R powermonitoring /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
SUBSYSTEM=="powercap", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R powermonitoring /sys%p", RUN+="/bin/chmod -R g=u /sys%p" SUBSYSTEM=="powercap", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R powermonitoring /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
``` ```
@ -24,11 +24,11 @@ In order to get the power monitoring output you'll need to give the palantir use
- Add your user to the group - Add your user to the group
``` ```
sudo usermod -a G powermonitoring palantir sudo usermod -a -G powermonitoring palantir
``` ```
- Verify that you can read energy usage - Verify that you can read energy usage
``` ```
sudo su - palantir -c 'cat /sys/class/powercap/intel-rapl:0:0/energy_uj sudo su - palantir -c 'cat /sys/class/powercap/intel-rapl:0:0/energy_uj'
``` ```

View file

@ -23,7 +23,7 @@ impl PowerUsage {
for (i, package) in self.packages_uj.iter().enumerate() { for (i, package) in self.packages_uj.iter().enumerate() {
writeln!( writeln!(
&mut w, &mut w,
"total_power{{host=\"{}\", package=\"{}\"}} {:.3}", "package_power{{host=\"{}\", package=\"{}\"}} {:.3}",
hostname, hostname,
i, i,
*package as f64 / 1_000_000.0 *package as f64 / 1_000_000.0
@ -37,7 +37,13 @@ pub fn power_usage() -> Result<Option<PowerUsage>> {
return Ok(None); return Ok(None);
} }
let dir = read_dir("/sys/devices/virtual/powercap/intel-rapl")?; let dir = match read_dir("/sys/devices/virtual/powercap/intel-rapl") {
Ok(dir) => dir,
Err(_) => {
CAN_READ.store(false, Ordering::Relaxed);
return Ok(None);
}
};
let mut usage = PowerUsage::default(); let mut usage = PowerUsage::default();
for package in dir { for package in dir {
let package = package?; let package = package?;