[modules/cpu] Add per-cpu mode
By explicitly setting "cpu.percpu=True" as parameter, it is now possible to get the CPU utilization on a per-cpu basis. Future extension: One widget per CPU (add ID of CPU and add warning/error state on a per CPU basis) see #785
This commit is contained in:
parent
4a6be622a8
commit
8001ed3ada
1 changed files with 16 additions and 6 deletions
|
@ -12,6 +12,7 @@ Parameters:
|
||||||
* cpu.warning : Warning threshold in % of CPU usage (defaults to 70%)
|
* cpu.warning : Warning threshold in % of CPU usage (defaults to 70%)
|
||||||
* cpu.critical: Critical threshold in % of CPU usage (defaults to 80%)
|
* cpu.critical: Critical threshold in % of CPU usage (defaults to 80%)
|
||||||
* cpu.format : Format string (defaults to '{:.01f}%')
|
* cpu.format : Format string (defaults to '{:.01f}%')
|
||||||
|
* cpu.percpu : If set to true, show each individual cpu (defaults to false)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
|
@ -20,28 +21,37 @@ import core.module
|
||||||
import core.widget
|
import core.widget
|
||||||
import core.input
|
import core.input
|
||||||
|
|
||||||
|
import util.format
|
||||||
|
|
||||||
|
|
||||||
class Module(core.module.Module):
|
class Module(core.module.Module):
|
||||||
def __init__(self, config, theme):
|
def __init__(self, config, theme):
|
||||||
super().__init__(config, theme, core.widget.Widget(self.utilization))
|
super().__init__(config, theme, core.widget.Widget(self.utilization))
|
||||||
self.widget().set("theme.minwidth", self._format.format(100.0 - 10e-20))
|
self._percpu = util.format.asbool(self.parameter("percpu", False))
|
||||||
self._utilization = psutil.cpu_percent(percpu=False)
|
self.update()
|
||||||
|
self.widget().set("theme.minwidth", self._format.format(*[100.0 - 10e-20]*len(self._utilization)))
|
||||||
core.input.register(
|
core.input.register(
|
||||||
self, button=core.input.LEFT_MOUSE, cmd="gnome-system-monitor"
|
self, button=core.input.LEFT_MOUSE, cmd="gnome-system-monitor"
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _format(self):
|
def _format(self):
|
||||||
return self.parameter("format", "{:.01f}%")
|
fmt = self.parameter("format", "{:.01f}%")
|
||||||
|
if self._percpu:
|
||||||
|
fmt = [fmt]*len(self._utilization)
|
||||||
|
fmt = " ".join(fmt)
|
||||||
|
return fmt
|
||||||
|
|
||||||
def utilization(self, _):
|
def utilization(self, _):
|
||||||
return self._format.format(self._utilization)
|
return self._format.format(*self._utilization)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
self._utilization = psutil.cpu_percent(percpu=False)
|
self._utilization = psutil.cpu_percent(percpu=self._percpu)
|
||||||
|
if not self._percpu:
|
||||||
|
self._utilization = [self._utilization]
|
||||||
|
|
||||||
def state(self, _):
|
def state(self, _):
|
||||||
return self.threshold_state(self._utilization, 70, 80)
|
return self.threshold_state(sum(self._utilization)/len(self._utilization), 70, 80)
|
||||||
|
|
||||||
|
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
Loading…
Reference in a new issue