1*94f69966SJacob PanTMON - A Monitoring and Testing Tool for Linux kernel thermal subsystem 2*94f69966SJacob Pan 3*94f69966SJacob PanWhy TMON? 4*94f69966SJacob Pan========== 5*94f69966SJacob PanIncreasingly, Linux is running on thermally constrained devices. The simple 6*94f69966SJacob Panthermal relationship between processor and fan has become past for modern 7*94f69966SJacob Pancomputers. 8*94f69966SJacob Pan 9*94f69966SJacob PanAs hardware vendors cope with the thermal constraints on their products, more 10*94f69966SJacob Panand more sensors are added, new cooling capabilities are introduced. The 11*94f69966SJacob Pancomplexity of the thermal relationship can grow exponentially among cooling 12*94f69966SJacob Pandevices, zones, sensors, and trip points. They can also change dynamically. 13*94f69966SJacob Pan 14*94f69966SJacob PanTo expose such relationship to the userspace, Linux generic thermal layer 15*94f69966SJacob Panintroduced sysfs entry at /sys/class/thermal with a matrix of symbolic 16*94f69966SJacob Panlinks, trip point bindings, and device instances. To traverse such 17*94f69966SJacob Panmatrix by hand is not a trivial task. Testing is also difficult in that 18*94f69966SJacob Panthermal conditions are often exception cases that hard to reach in 19*94f69966SJacob Pannormal operations. 20*94f69966SJacob Pan 21*94f69966SJacob PanTMON is conceived as a tool to help visualize, tune, and test the 22*94f69966SJacob Pancomplex thermal subsystem. 23*94f69966SJacob Pan 24*94f69966SJacob PanFiles 25*94f69966SJacob Pan===== 26*94f69966SJacob Pan tmon.c : main function for set up and configurations. 27*94f69966SJacob Pan tui.c : handles ncurses based user interface 28*94f69966SJacob Pan sysfs.c : access to the generic thermal sysfs 29*94f69966SJacob Pan pid.c : a proportional-integral-derivative (PID) controller 30*94f69966SJacob Pan that can be used for thermal relationship training. 31*94f69966SJacob Pan 32*94f69966SJacob PanRequirements 33*94f69966SJacob Pan============ 34*94f69966SJacob PanDepends on ncurses 35*94f69966SJacob Pan 36*94f69966SJacob PanBuild 37*94f69966SJacob Pan========= 38*94f69966SJacob Pan$ make 39*94f69966SJacob Pan$ sudo ./tmon -h 40*94f69966SJacob PanUsage: tmon [OPTION...] 41*94f69966SJacob Pan -c, --control cooling device in control 42*94f69966SJacob Pan -d, --daemon run as daemon, no TUI 43*94f69966SJacob Pan -l, --log log data to /var/tmp/tmon.log 44*94f69966SJacob Pan -h, --help show this help message 45*94f69966SJacob Pan -t, --time-interval set time interval for sampling 46*94f69966SJacob Pan -v, --version show version 47*94f69966SJacob Pan -g, --debug debug message in syslog 48*94f69966SJacob Pan 49*94f69966SJacob Pan1. For monitoring only: 50*94f69966SJacob Pan$ sudo ./tmon 51