From df3c8728b995026a6df13efaf9a782b486de9ec5 Mon Sep 17 00:00:00 2001 From: Hannu Nyman Date: Tue, 8 Nov 2016 22:24:56 +0200 Subject: [PATCH] luci-app-statistics: add support for CPU frequency scaling stats 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 --- .../luci_statistics/luci_statistics.lua | 3 ++- .../model/cbi/luci_statistics/cpufreq.lua | 14 +++++++++++ .../rrdtool/definitions/cpufreq.lua | 25 +++++++++++++++++++ .../root/etc/config/luci_statistics | 3 +++ .../root/usr/bin/stat-genconfig | 6 +++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua create mode 100644 applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index 3f26aeed6f..cf1bc2e6b2 100644 --- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -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 index 0000000000..d1116630b4 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua @@ -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 index 0000000000..6e63630109 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua @@ -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 + diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics index 4435d5c61e..8fdcf434c8 100644 --- a/applications/luci-app-statistics/root/etc/config/luci_statistics +++ b/applications/luci-app-statistics/root/etc/config/luci_statistics @@ -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' diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig index 49d8a09935..ab8159bc26 100755 --- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig +++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig @@ -273,6 +273,12 @@ plugins = { { } }, + cpufreq = { + { }, + { }, + { } + }, + csv = { { "DataDir" }, { "StoreRates" }, -- 2.30.2