From e6f30bb7f39c67e1b2eaf312aa8d1f06e7b0a0ab Mon Sep 17 00:00:00 2001 From: Hannu Nyman Date: Tue, 30 Jul 2019 20:47:02 +0300 Subject: [PATCH] luci-app-statistics: cpufreq: changes in data structure Collectd 5.9.0 changed the data structure of the cpufreq plugin: CPU cores are now handled as separate plugin instances. There are also new data items per core: * time spent at each frequency * amount of frequency transitions Enable these new data items, but initially hide them behind a new config option "ExtraItems" (default: disabled), as the amount of graphs in multi-core systems could be rather large. Note that the frequencies are not (yet) sorted, so the information value of the time-spent graph is semi-random. Signed-off-by: Hannu Nyman --- .../model/cbi/luci_statistics/cpufreq.lua | 6 +++ .../rrdtool/definitions/cpufreq.lua | 49 +++++++++++++++---- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua index d1116630b..435f186e0 100644 --- a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua @@ -11,4 +11,10 @@ s = m:section( NamedSection, "collectd_cpufreq", "luci_statistics" ) enable = s:option( Flag, "enable", translate("Enable this plugin") ) enable.default = 0 +-- collectd_cpufreq.extraitems +extraitems = s:option( Flag, "ExtraItems", translate("Extra items"), translate("More details about frequency usage and transitions")) +extraitems.default = "0" +extraitems.optional = true +extraitems:depends( "enable", 1 ) + return m diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua index 08aab04b8..40a6955e5 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua @@ -2,28 +2,59 @@ module("luci.statistics.rrdtool.definitions.cpufreq",package.seeall) +local uci = require("luci.model.uci").cursor() +local extraitems = uci:get("luci_statistics", "collectd_cpufreq", "ExtraItems") or nil + function item() return luci.i18n.translate("CPU Frequency") end function rrdargs( graph, plugin, plugin_instance, dtype ) - return { - title = "%H: Processor frequency", + local cpufreq = { + title = "%H: Processor frequency - core %pi", alt_autoscale = true, vlabel = "Frequency (Hz)", number_format = "%3.2lf%s", data = { - sources = { - cpufreq = { "" } - }, + types = {"cpufreq" }, + options = { + cpufreq = { color = "ff0000", title = "Frequency" }, + } + } + } + + if extraitems then + + local transitions = { + title = "%H: Frequency transitions - core %pi", + alt_autoscale = true, + vlabel = "Transitions", + number_format = "%3.2lf%s", + data = { + types = { "transitions" }, options = { - cpufreq_0 = { color = "ff0000", title = "Core 0", noarea=true, overlay=true }, - cpufreq_1 = { color = "0000ff", title = "Core 1", noarea=true, overlay=true }, - cpufreq_2 = { color = "00ff00", title = "Core 2", noarea=true, overlay=true }, - cpufreq_3 = { color = "00ffff", title = "Core 3", noarea=true, overlay=true } + transitions = { color = "0000ff", title = "Transitions", noarea=true }, } } } + + local percentage = { + title = "%H: Frequency distribution - core %pi", + alt_autoscale = true, + vlabel = "Frequency (Hz)", + number_format = "%5.2lf%%", + data = { + types = { "percent" }, + options = { + percent = { title = "Frequency %di" }, + } + } + } + + return { cpufreq, transitions, percentage } + else + return { cpufreq } + end end -- 2.25.1