luci-app-statistics: add support for CPU frequency scaling stats
authorHannu Nyman <hannu.nyman@iki.fi>
Tue, 8 Nov 2016 20:24:56 +0000 (22:24 +0200)
committerHannu Nyman <hannu.nyman@iki.fi>
Tue, 8 Nov 2016 20:24:56 +0000 (22:24 +0200)
Add support for 'cpufreq' plugin in collectd, which monitors
the CPU cores' frequencies. Some platforms enable dynamic
frequency scaling according to CPU load.

'cpufreq' plugin can currently be built for x86 and mvebu.
(and it should likely be enabled also for ipq806x)

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua [new file with mode: 0644]
applications/luci-app-statistics/root/etc/config/luci_statistics
applications/luci-app-statistics/root/usr/bin/stat-genconfig

index 3f26aee..cf1bc2e 100644 (file)
@@ -25,6 +25,7 @@ function index()
 
                conntrack       = _("Conntrack"),
                cpu                     = _("Processor"),
 
                conntrack       = _("Conntrack"),
                cpu                     = _("Processor"),
+               cpufreq         = _("CPU Frequency"),
                csv                     = _("CSV Output"),
                df                      = _("Disk Space Usage"),
                disk            = _("Disk Usage"),
                csv                     = _("CSV Output"),
                df                      = _("Disk Space Usage"),
                disk            = _("Disk Usage"),
@@ -56,7 +57,7 @@ function index()
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
-               general = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "uptime" },
+               general = { "cpu", "cpufreq", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "uptime" },
                network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", "splash_leases", "tcpconns", "iwinfo" }
        }
 
                network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", "splash_leases", "tcpconns", "iwinfo" }
        }
 
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
new file mode 100644 (file)
index 0000000..d111663
--- /dev/null
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+       translate("CPU Frequency Plugin Configuration"),
+       translate("This plugin collects statistics about the processor frequency scaling."))
+
+-- collectd_cpufreq config section
+s = m:section( NamedSection, "collectd_cpufreq", "luci_statistics" )
+
+-- collectd_cpufreq.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+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
new file mode 100644 (file)
index 0000000..6e63630
--- /dev/null
@@ -0,0 +1,25 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.cpufreq",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       return {
+               title = "%H: Processor frequency",
+               alt_autoscale = true,
+               vlabel = "Frequency (Hz)",
+               number_format = "%4.0lf%s",
+               data = {
+                       instances = {
+                               cpufreq = { "3", "2", "1", "0" }
+                       },
+                       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 }
+                       }
+               }
+       }
+end
+
index 4435d5c..8fdcf43 100644 (file)
@@ -55,6 +55,9 @@ config statistics 'collectd_conntrack'
 config statistics 'collectd_cpu'
        option enable '1'
 
 config statistics 'collectd_cpu'
        option enable '1'
 
+config statistics 'collectd_cpufreq'
+       option enable '0'
+
 config statistics 'collectd_df'
        option enable '0'
        option Devices '/dev/mtdblock/4'
 config statistics 'collectd_df'
        option enable '0'
        option Devices '/dev/mtdblock/4'
index 49d8a09..ab8159b 100755 (executable)
@@ -273,6 +273,12 @@ plugins = {
                { }
        },
 
                { }
        },
 
+       cpufreq = {
+               { },
+               { },
+               { }
+       },
+
        csv     = {
                { "DataDir" },
                { "StoreRates" },
        csv     = {
                { "DataDir" },
                { "StoreRates" },