mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
tools/thermal: Add a temperature capture tool
The 'thermometer' tool allows to capture the temperature of a set of thermal zones defined in a configuration file at a specified rate. It is designed to have the lowest possible overhead. It will write the captured temperature per thermal zone per file so making easier to write a gnuplot script. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Tested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Link: https://lore.kernel.org/r/20220420160933.347088-4-daniel.lezcano@linaro.org
This commit is contained in:
+13
-3
@@ -31,6 +31,7 @@ help:
|
||||
@echo ' bootconfig - boot config tool'
|
||||
@echo ' spi - spi tools'
|
||||
@echo ' tmon - thermal monitoring and tuning tool'
|
||||
@echo ' thermometer - temperature capture tool'
|
||||
@echo ' thermal - thermal library'
|
||||
@echo ' tracing - misc tracing tools'
|
||||
@echo ' turbostat - Intel CPU idle stats and freq reporting tool'
|
||||
@@ -95,6 +96,9 @@ turbostat x86_energy_perf_policy intel-speed-select: FORCE
|
||||
tmon: FORCE
|
||||
$(call descend,thermal/$@)
|
||||
|
||||
thermometer: FORCE
|
||||
$(call descend,thermal/$@)
|
||||
|
||||
freefall: FORCE
|
||||
$(call descend,laptop/$@)
|
||||
|
||||
@@ -105,7 +109,7 @@ all: acpi cgroup counter cpupower gpio hv firewire \
|
||||
perf selftests bootconfig spi turbostat usb \
|
||||
virtio vm bpf x86_energy_perf_policy \
|
||||
tmon freefall iio objtool kvm_stat wmi \
|
||||
pci debugging tracing thermal
|
||||
pci debugging tracing thermal thermometer
|
||||
|
||||
acpi_install:
|
||||
$(call descend,power/$(@:_install=),install)
|
||||
@@ -128,6 +132,9 @@ turbostat_install x86_energy_perf_policy_install intel-speed-select_install:
|
||||
tmon_install:
|
||||
$(call descend,thermal/$(@:_install=),install)
|
||||
|
||||
thermometer_install:
|
||||
$(call descend,thermal/$(@:_install=),install)
|
||||
|
||||
freefall_install:
|
||||
$(call descend,laptop/$(@:_install=),install)
|
||||
|
||||
@@ -140,7 +147,7 @@ install: acpi_install cgroup_install counter_install cpupower_install gpio_insta
|
||||
virtio_install vm_install bpf_install x86_energy_perf_policy_install \
|
||||
tmon_install freefall_install objtool_install kvm_stat_install \
|
||||
wmi_install pci_install debugging_install intel-speed-select_install \
|
||||
tracing_install
|
||||
tracing_install thermometer_install
|
||||
|
||||
acpi_clean:
|
||||
$(call descend,power/acpi,clean)
|
||||
@@ -173,6 +180,9 @@ thermal_clean:
|
||||
turbostat_clean x86_energy_perf_policy_clean intel-speed-select_clean:
|
||||
$(call descend,power/x86/$(@:_clean=),clean)
|
||||
|
||||
thermometer_clean:
|
||||
$(call descend,thermal/thermometer,clean)
|
||||
|
||||
tmon_clean:
|
||||
$(call descend,thermal/tmon,clean)
|
||||
|
||||
@@ -187,6 +197,6 @@ clean: acpi_clean cgroup_clean counter_clean cpupower_clean hv_clean firewire_cl
|
||||
vm_clean bpf_clean iio_clean x86_energy_perf_policy_clean tmon_clean \
|
||||
freefall_clean build_clean libbpf_clean libsubcmd_clean \
|
||||
gpio_clean objtool_clean leds_clean wmi_clean pci_clean firmware_clean debugging_clean \
|
||||
intel-speed-select_clean tracing_clean thermal_clean
|
||||
intel-speed-select_clean tracing_clean thermal_clean thermometer_clean
|
||||
|
||||
.PHONY: FORCE
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
thermometer-y += thermometer.o
|
||||
@@ -0,0 +1,26 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Makefile for cgroup tools
|
||||
|
||||
ifeq ($(srctree),)
|
||||
srctree := $(patsubst %/,%,$(dir $(CURDIR)))
|
||||
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
||||
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
||||
# $(info Determined 'srctree' to be $(srctree))
|
||||
endif
|
||||
|
||||
CFLAGS = -Wall -Wextra
|
||||
CFLAGS += -I$(srctree)/tools/thermal/lib
|
||||
|
||||
LDFLAGS = -L$(srctree)/tools/thermal/lib
|
||||
LDFLAGS += -lthermal_tools
|
||||
LDFLAGS += -lconfig
|
||||
|
||||
VERSION = 0.0.1
|
||||
TARGET=thermometer
|
||||
|
||||
all: $(TARGET)
|
||||
%: %.c
|
||||
$(CC) $(CFLAGS) -D VERSION=\"$(VERSION)\" -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
$(RM) $(TARGET)
|
||||
@@ -0,0 +1,92 @@
|
||||
.TH THERMOMETER 8
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
.SH NAME
|
||||
\fBthermometer\fP - A thermal profiling tool
|
||||
|
||||
.SH SYNOPSIS
|
||||
.ft B
|
||||
.B thermometer
|
||||
.RB [ options ]
|
||||
.RB [ command ]
|
||||
.br
|
||||
.SH DESCRIPTION
|
||||
\fBthermometer \fP captures the thermal zones temperature at a
|
||||
specified sampling period. It is optimized to reduce as much as
|
||||
possible the overhead while doing the temperature acquisition in order
|
||||
to prevent disrupting the running application we may want to profile.
|
||||
|
||||
This low overhead also allows a high rate sampling for the temperature
|
||||
which could be necessary to spot overshots and undershots.
|
||||
|
||||
If no configuration file is specified, then all the thermal zones will
|
||||
be monitored at 4Hz, so every 250ms. A configuration file specifies
|
||||
the thermal zone names and the desired sampling period. A thermal zone
|
||||
name can be a regular expression to specify a group of thermal zone.
|
||||
|
||||
The sampling of the different thermal zones will be written into
|
||||
separate files with the thermal zone name. It is possible to specify a
|
||||
postfix to identify them for example for a specific scenario. The
|
||||
output directory can be specified in addition.
|
||||
|
||||
Without any parameters, \fBthermometer \fP captures all the thermal
|
||||
zone temperatures every 250ms and write to the current directory the
|
||||
captured files postfixed with the current date.
|
||||
|
||||
If a running \fBduration\fP is specified or a \fBcommand\fP, the
|
||||
capture ends at the end of the duration if the command did not
|
||||
finished before. The \fBduration\fP can be specified alone as well as
|
||||
the \fBcommand\fP. If none is specified, the capture will continue
|
||||
indefinitively until interrupted by \fBSIGINT\fP or \fBSIGQUIT\fP.
|
||||
.PP
|
||||
|
||||
.SS Options
|
||||
.PP
|
||||
The \fB-h, --help\fP option shows a short usage help
|
||||
.PP
|
||||
The \fB-o <dir>, --output <dir>\fP option defines the output directory to put the
|
||||
sampling files
|
||||
.PP
|
||||
The \fB-c <config>, --config <config>\fP option specifies the configuration file to use
|
||||
.PP
|
||||
The \fB-d <seconds>, --duration <seconds>\fP option specifies the duration of the capture
|
||||
.PP
|
||||
The \fB-l <loglevel>, --loglevel <loglevel>\fP option sets the loglevel [DEBUG,INFO,NOTICE,WARN,ERROR]
|
||||
.PP
|
||||
The \fB-p <string>, --postfix <string>\fP option appends \fBstring\fP at the end of the capture filenames
|
||||
.PP
|
||||
The \fB-s, --syslog\fP option sets the output to syslog, default is \fBstdout\fP
|
||||
.PP
|
||||
The \fB-w, --overwrite\fP overwrites the output files if they exist
|
||||
.PP
|
||||
|
||||
.PP
|
||||
|
||||
.SS "Exit status:"
|
||||
.TP
|
||||
0
|
||||
if OK,
|
||||
.TP
|
||||
1
|
||||
Error with the options specified as parameters
|
||||
.TP
|
||||
2
|
||||
Error when configuring the logging facility
|
||||
.TP
|
||||
3
|
||||
Error when configuring the time
|
||||
.TP
|
||||
4
|
||||
Error in the initialization routine
|
||||
.TP
|
||||
5
|
||||
Error during the runtime
|
||||
|
||||
.SH Capture file format
|
||||
|
||||
Every file contains two columns. The first one is the uptime timestamp
|
||||
in order to find a point in time since the system started up if there
|
||||
is any thermal event. The second one is the temperature in milli
|
||||
degree. The first line contains the label of each column.
|
||||
|
||||
.SH AUTHOR
|
||||
Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
|
||||
thermal-zones = (
|
||||
{ name = "cpu[0-9]-thermal";
|
||||
polling = 100; }
|
||||
)
|
||||
Reference in New Issue
Block a user