Started service at install time and updated readme

This commit is contained in:
Domen Tabernik 2020-07-27 18:25:40 +02:00
parent f3efe9c0ee
commit f7b3932f18
2 changed files with 33 additions and 15 deletions

View File

@ -19,6 +19,7 @@ install: $(service_dir) $(conf_dir) superfans-gpu-controller.service
cp etc/systemd/system/superfans-gpu-controller.service $(service_dir) cp etc/systemd/system/superfans-gpu-controller.service $(service_dir)
-systemctl enable superfans-gpu-controller.service -systemctl enable superfans-gpu-controller.service
-systemctl enable superfans-gpu-controller -systemctl enable superfans-gpu-controller
-systemctl start superfans-gpu-controller
uninstall: uninstall:
-systemctl stop superfans-gpu-controller -systemctl stop superfans-gpu-controller

View File

@ -5,7 +5,7 @@ This controller enables automatic adjustments of FANs in SUPERMICRO servers base
# Requirements # Requirements
* Linux (tested on Ubuntu 16.04.5) * Linux (tested on Ubuntu 16.04.5)
* Python 2.7 * Python 3 / pip3
* nvidia drivers/tools (`nvidia-smi`) * nvidia drivers/tools (`nvidia-smi`)
* IPMI tool (`ipmitool`) with loaded module (`modprobe ipmi_devintf`) * IPMI tool (`ipmitool`) with loaded module (`modprobe ipmi_devintf`)
@ -13,20 +13,17 @@ Tested on SUPERMICRO 4029GP TRT2 with RTX 2080 Ti (nvidia 415.27 drivers).
NOTE: Using this script on other systems requires manual calibration of a function that converts the FANs RPM values into %-based values (function `SUPERMICRO_4029GP_TRT2_RPM_to_percent()` in `supermicro.py`). Current values are hardcoded for SUPERMICRO 4029GP TRT2. NOTE: Using this script on other systems requires manual calibration of a function that converts the FANs RPM values into %-based values (function `SUPERMICRO_4029GP_TRT2_RPM_to_percent()` in `supermicro.py`). Current values are hardcoded for SUPERMICRO 4029GP TRT2.
# Install
```bash
make
sudo make install
```
By default python packages are installed using pip3 and superfans-gpu-controller.service is created (started and enabled at boot).
# Usage # Usage
Directly call python script (requires sudo access for `impitool`):
```bash
sudo python superfans_gpu_controller.py
```
Or install systemd service (`superfans-gpu-controller.service`):
```bash
sudo chmod +x ./install_daemon.sh
sudo ./install_daemon.sh
```
Service is registered to start at system startup. Start and stop it using: Service is registered to start at system startup. Start and stop it using:
```bash ```bash
# start # start
@ -42,6 +39,13 @@ sudo systemctl status superfans-gpu-controller
sudo journalctl -f -u superfans-gpu-controller sudo journalctl -f -u superfans-gpu-controller
``` ```
## Manuall usage
Directly call python script (requires sudo access for `impitool`):
```bash
sudo python superfans_gpu_controller.py config.json
```
## Print RPMs of all FANs grouped by zones: ## Print RPMs of all FANs grouped by zones:
```bash ```bash
@ -50,7 +54,20 @@ sudo python superfans.py
# Settings # Settings
Currently the settings are hardcoded into `superfans_gpu_controller.py` using the following table: Settings are in /etc/superfans-gpu-controller.json for systemd and by default the config contains:
```python
{
"fan_settings" : {"0": 20,
"60": 25,
"70": 30,
"80": 35,
"87": 40,
"90": 43}
}
```
This corresponds to following mapping of GPU temperature in °C to the percent of activated FAN (relative to max RPM as manually set for SUPERMICRO 4029GP TRT2):
* 0°C => 20% * 0°C => 20%
* 60°C => 25% * 60°C => 25%
* 70°C => 30% * 70°C => 30%
@ -61,7 +78,7 @@ Currently the settings are hardcoded into `superfans_gpu_controller.py` using th
At full workload using 4x RTX 2080 Ti this results in around 75°C - 80°C at GPU. At full workload using 4x RTX 2080 Ti this results in around 75°C - 80°C at GPU.
## TODO: ## TODO:
* [ ] split settings into seperate config file * [x] split settings into seperate config file
* [ ] enable linear increases between each setting point * [ ] enable linear increases between each setting point
* [ ] enable online calibration of FANs (currenlty hardcoded for SUPERMICRO 4029GP TRT2!!) * [ ] enable online calibration of FANs (currenlty hardcoded for SUPERMICRO 4029GP TRT2!!)
* [ ] enable robust detection of faulty FANs as outliers (using RANSAC-like algorithm) * [ ] enable robust detection of faulty FANs as outliers (using RANSAC-like algorithm)