[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.critical: Critical threshold in % of CPU usage (defaults to 80%)
|
||||
* cpu.format : Format string (defaults to '{:.01f}%')
|
||||
* cpu.percpu : If set to true, show each individual cpu (defaults to false)
|
||||
"""
|
||||
|
||||
import psutil
|
||||
|
@ -20,28 +21,37 @@ import core.module
|
|||
import core.widget
|
||||
import core.input
|
||||
|
||||
import util.format
|
||||
|
||||
|
||||
class Module(core.module.Module):
|
||||
def __init__(self, config, theme):
|
||||
super().__init__(config, theme, core.widget.Widget(self.utilization))
|
||||
self.widget().set("theme.minwidth", self._format.format(100.0 - 10e-20))
|
||||
self._utilization = psutil.cpu_percent(percpu=False)
|
||||
self._percpu = util.format.asbool(self.parameter("percpu", False))
|
||||
self.update()
|
||||
self.widget().set("theme.minwidth", self._format.format(*[100.0 - 10e-20]*len(self._utilization)))
|
||||
core.input.register(
|
||||
self, button=core.input.LEFT_MOUSE, cmd="gnome-system-monitor"
|
||||
)
|
||||
|
||||
@property
|
||||
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, _):
|
||||
return self._format.format(self._utilization)
|
||||
return self._format.format(*self._utilization)
|
||||
|
||||
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, _):
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue