tmon.8 (4923B)
1.TH TMON 8 2# SPDX-License-Identifier: GPL-2.0 3.SH NAME 4\fBtmon\fP - A monitoring and testing tool for Linux kernel thermal subsystem 5 6.SH SYNOPSIS 7.ft B 8.B tmon 9.RB [ Options ] 10.br 11.SH DESCRIPTION 12\fBtmon \fP can be used to visualize thermal relationship and 13real-time thermal data; tune 14and test cooling devices and sensors; collect thermal data for offline 15analysis and plot. \fBtmon\fP must be run as root in order to control device 16states via sysfs. 17.PP 18\fBFunctions\fP 19.PP 20.nf 211. Thermal relationships: 22- show thermal zone information 23- show cooling device information 24- show trip point binding within each thermal zone 25- show trip point and cooling device instance bindings 26.PP 272. Real time data display 28- show temperature of all thermal zones w.r.t. its trip points and types 29- show states of all cooling devices 30.PP 313. Thermal relationship learning and device tuning 32- with a built-in Proportional Integral Derivative (\fBPID\fP) 33controller, user can pair a cooling device to a thermal sensor for 34testing the effectiveness and learn about the thermal distance between the two 35- allow manual control of cooling device states and target temperature 36.PP 374. Data logging in /var/tmp/tmon.log 38- contains thermal configuration data, i.e. cooling device, thermal 39 zones, and trip points. Can be used for data collection in remote 40 debugging. 41- log real-time thermal data into space separated format that can be 42 directly consumed by plotting tools such as Rscript. 43 44.SS Options 45.PP 46The \fB-c --control\fP option sets a cooling device type to control temperature 47of a thermal zone 48.PP 49The \fB-d --daemon\fP option runs \fBtmon \fP as daemon without user interface 50.PP 51The \fB-g --debug\fP option allow debug messages to be stored in syslog 52.PP 53The \fB-h --help\fP option shows help message 54.PP 55The \fB-l --log\fP option write data to /var/tmp/tmon.log 56.PP 57The \fB-t --time-interval\fP option sets the polling interval in seconds 58.PP 59The \fB-T --target-temp\fP option sets the initial target temperature 60.PP 61The \fB-v --version\fP option shows the version of \fBtmon \fP 62.PP 63The \fB-z --zone\fP option sets the target therma zone instance to be controlled 64.PP 65 66.SH FIELD DESCRIPTIONS 67.nf 68.PP 69\fBP \fP passive cooling trip point type 70\fBA \fP active cooling trip point type (fan) 71\fBC \fP critical trip point type 72\fBA \fP hot trip point type 73\fBkp \fP proportional gain of \fBPID\fP controller 74\fBki \fP integral gain of \fBPID\fP controller 75\fBkd \fP derivative gain of \fBPID\fP controller 76 77.SH REQUIREMENT 78Build depends on ncurses 79.PP 80Runtime depends on window size large enough to show the number of 81devices found on the system. 82 83.PP 84 85.SH INTERACTIVE COMMANDS 86.pp 87.nf 88\fBCtrl-C, q/Q\fP stops \fBtmon\fP 89\fBTAB\fP shows tuning pop up panel, choose a letter to modify 90 91.SH EXAMPLES 92Without any parameters, tmon is in monitoring only mode and refresh 93screen every 1 second. 94.PP 951. For monitoring only: 96.nf 97$ sudo ./tmon 98 992. Use Processor cooling device to control thermal zone 0 at default 65C. 100$ sudo ./tmon -c Processor -z 0 101 1023. Use intel_powerclamp(idle injection) cooling device to control thermal zone 1 103$ sudo ./tmon -c intel_powerclamp -z 1 104 1054. Turn on debug and collect data log at /var/tmp/tmon.log 106$ sudo ./tmon -g -l 107 108For example, the log below shows PID controller was adjusting current states 109for all cooling devices with "Processor" type such that thermal zone 0 110can stay below 65 dC. 111 112#---------- THERMAL DATA LOG STARTED ----------- 113Samples TargetTemp acpitz0 acpitz1 Fan0 Fan1 Fan2 Fan3 Fan4 Fan5 114Fan6 Fan7 Fan8 Fan9 Processor10 Processor11 Processor12 Processor13 115LCD14 intel_powerclamp15 1 65.0 65 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 2 11665.0 66 65 0 0 0 0 0 0 0 0 0 0 4 4 4 4 6 0 3 65.0 60 54 0 0 0 0 0 0 0 0 1170 0 4 4 4 4 6 0 4 65.0 53 53 0 0 0 0 0 0 0 0 0 0 4 4 4 4 6 0 1185 65.0 52 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 1196 65.0 53 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 1207 65.0 68 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 1218 65.0 68 68 0 0 0 0 0 0 0 0 0 0 5 5 5 5 6 0 1229 65.0 68 68 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 0 12310 65.0 67 67 0 0 0 0 0 0 0 0 0 0 7 7 7 7 6 0 12411 65.0 67 67 0 0 0 0 0 0 0 0 0 0 8 8 8 8 6 0 12512 65.0 67 67 0 0 0 0 0 0 0 0 0 0 8 8 8 8 6 0 12613 65.0 67 67 0 0 0 0 0 0 0 0 0 0 9 9 9 9 6 0 12714 65.0 66 66 0 0 0 0 0 0 0 0 0 0 10 10 10 10 6 0 12815 65.0 66 67 0 0 0 0 0 0 0 0 0 0 10 10 10 10 6 0 12916 65.0 66 66 0 0 0 0 0 0 0 0 0 0 11 11 11 11 6 0 13017 65.0 66 66 0 0 0 0 0 0 0 0 0 0 11 11 11 11 6 0 13118 65.0 64 61 0 0 0 0 0 0 0 0 0 0 11 11 11 11 6 0 13219 65.0 60 59 0 0 0 0 0 0 0 0 0 0 12 12 12 12 6 0 133 134Data can be read directly into an array by an example R-script below: 135 136#!/usr/bin/Rscript 137tdata <- read.table("/var/tmp/tmon.log", header=T, comment.char="#") 138attach(tdata) 139jpeg("tmon.jpg") 140X11() 141g_range <- range(0, intel_powerclamp15, TargetTemp, acpitz0) 142plot( Samples, intel_powerclamp15, col="blue", ylim=g_range, axes=FALSE, ann=FALSE) 143par(new=TRUE) 144lines(TargetTemp, type="o", pch=22, lty=2, col="red") 145dev.off()