Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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