This repository has been archived by the owner on Apr 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
config.sample.toml
127 lines (112 loc) · 5.09 KB
/
config.sample.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Verbosity of the logging output. The valid log levels, from least verbose to
# most verbose, are:
#
# * error: Fatal errors only
# * warn: Includes ^^ + recoverable errors
# * info: Includes ^^ + fan mode change messages on startup/shutdown
# * debug: Includes ^^ + a status message with the temperature and duty cycle
# during each fan update interval (useful for tuning the fan curve)
# * trace: Includes ^^ + details about parsed values and the raw IPMI commands
#
# (Note: This option is ignored if the RUST_LOG environment variable is set)
#log_level = "info"
# Definition of a logical fan zone.
[[zones]]
# IPMI session. If unspecified, the `default` session is used, which uses the
# local in-band IPMI device (eg. /dev/ipmi0). Sessions are defined below in the
# `sessions` section.
#session = "default"
# List of IPMI zones to be included in this logical zone.
ipmi_zones = [0]
# Number of seconds to wait between fan update interations. If unspecified, the
# default interval is 1 second.
interval = 5
# Number of retries to query temperature source. If temperature readings are
# still not successfully queried after all attempts, then the program will fail
# and exit. The default is 2 retries (3 attempts in total).
#retries = 2
# Number of milliseconds to wait before retrying when querying a temperature
# source fails. This field has no effect if `retries` is set to 0.
#retry_delay_ms = 500
# Temperature sources to use for measurement.
sources = [
# IPMI sensor source. The sensor's units must be `degrees C`.
{ type = "ipmi", sensor = "CPU1 Temp" },
# Local file source. File formatting rules:
#
# * Must be in ASCII encoding
# * Units must be milli-degrees Celsius (1/1000 °C)
# * No characters other than numbers and whitespace are permitted
#
# The thermal_zone sysfs paths on Linux satisfy these conditions.
{ type = "file", path = "/sys/class/thermal/thermal_zone1/temp" },
# HDD S.M.A.R.T. source. Disks that are spun down may not report a
# temperature reading, leading to an error. This internally runs:
#
# smartctl -j -A -n standby <block_dev>
#
# and requires smartmontools >= 7.0 to be installed.
{ type = "smart", block_dev = "/dev/disk/by-id/..." },
# "hdparm -H" source. This is specific to some Hitachi/HGST/WD drives and
# allows the HDD temperature to be queried even when the drive is spun down.
# This requires hdparm to be installed.
{ type = "hdparm", block_dev = "/dev/disk/by-id/..." },
]
# Method of aggregating the temperatures from all of the sources. By default,
# the maximum temperature is used. It is also possible to use the average
# temperature. In case there are lower-bound outliers in the temperature
# readings, the `top` parameter can be set to only consider the `n` highest
# temperatures.
#aggregation = { type = "maximum" }
#aggregation = { type = "average" }
#aggregation = { type = "average", top = 3 }
# List of steps for mapping temperatures to duty cycles. The temperatures are
# in degrees Celsius and the PWM duty cycles are fan speed percentages. At 0%
# duty cycle, the fans are completely turned off and at 100% duty cycle, the
# fans are at the maximum speed. Be careful using low percentages as the fans
# may stall.
#
# The algorithm follows the rules below:
#
# * If the current temperature is lower than the first step's `temp`, then the
# first step's `dcycle` is used.
# * If the current temperature is higher than the last step's `temp`, then the
# last step's `dcycle` is used.
# * If there are no steps, then the duty cycle is set to 100%.
# * Otherwise, the duty cycle is linearly scaled between the step below the
# current temperature and the step above the current temperature.
#
# Note that these rules mean that having a single step will result in a fixed
# fan speed. Also, the list must be sorted, `temp` must be strictly increasing,
# and `dcycle` must be increasing.
steps = [
{ temp = 30, dcycle = 30 },
{ temp = 70, dcycle = 70 },
]
# More fan zones can be added
#[[zones]]
#ipmi_zones = [1]
#interval = 5
#sources = [
# { type = "smart", block_dev = "/dev/disk/by-id/..." },
# { type = "smart", block_dev = "/dev/disk/by-id/..." },
#]
#aggregation = { type = "average" }
#steps = [
# { temp = 30, dcycle = 30 },
# { temp = 70, dcycle = 70 },
#]
# Optional section for defining other IPMI sessions. This is not needed when
# connecting to the local machine.
#
# The key is the name of the session, which can be any arbitrary non-empty
# string, and the value is either a local or remote session configuration.
[sessions]
# Implicit default session for connecting to local IPMI. If this is changed, it
# will take effect in any zone that doesn't explicitly specify another session.
#"default" = { type = "local" }
# Example of a remote session.
#"remote" = { type = "remote", hostname = "<host>", username = "<username>", password = "<password>" }
# Example of a remote session using ipmitool arguments. This configuration
# format is deprecated and only exists for backwards compatibility.
#"remote_compat" = ["-I", "lanplus", "-H", "<host>", "-U", "<username>", "-P", "<password>"]