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