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 3f26aeed6f0937d0caf83fb0109ef09d52ef79f7..cf1bc2e6b2b797b386cd51454ef61bfb21f8725b 100644 (file)
@@ -25,6 +25,7 @@ function index()
 
                conntrack       = _("Conntrack"),
                cpu                     = _("Processor"),
+               cpufreq         = _("CPU Frequency"),
                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" },
-               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" }
        }
 
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 4435d5c61e05ff88aaed09bab4af78121e5d70de..8fdcf434c8b748902791fbaa0cf1edcbaeaff253 100644 (file)
@@ -55,6 +55,9 @@ config statistics 'collectd_conntrack'
 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'
index 49d8a09935dbddc1c9b7a32b7b13583b838980be..ab8159bc26934ef67bcb7be844e8f369094b825d 100755 (executable)
@@ -273,6 +273,12 @@ plugins = {
                { }
        },
 
+       cpufreq = {
+               { },
+               { },
+               { }
+       },
+
        csv     = {
                { "DataDir" },
                { "StoreRates" },