summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorGiacomo Leidi <therewasa@fishinthecalculator.me>2026-01-04 23:58:56 +0100
committerGiacomo Leidi <therewasa@fishinthecalculator.me>2026-03-07 22:28:01 +0100
commitfd6b17bf20dc0cec2b4edff2928f899ebd2741cc (patch)
treecc0ffd987b0f6e2766567ff0b83d7cc4a11652c9 /doc
parent8ecab809db0584eb27fcde7c66bea5e8beb9fbc3 (diff)
gnu: Add tuned-service-type.
* gnu/services/linux.scm (tuned-configuration,tuned-settings,tuned-ppd-settings): New configuration records. (tuned-file-systems,tuned-activation,tuned-shepherd-services, tuned-kernel-modules): New procedures. (tuned-service-type): New service type. * doc/guix.texi: Add service documentation. Change-Id: I6c8d54c23175c2ea133d99965641c548fb1d6452
Diffstat (limited to 'doc')
-rw-r--r--doc/guix.texi198
1 files changed, 197 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 15ed74ed0c1..d7f4c41d57f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -111,7 +111,7 @@ Copyright @copyright{} 2022 (@*
Copyright @copyright{} 2022 John Kehayias@*
Copyright @copyright{} 2022⁠–⁠2023 Bruno Victal@*
Copyright @copyright{} 2022 Ivan Vilata-i-Balaguer@*
-Copyright @copyright{} 2023-2025 Giacomo Leidi@*
+Copyright @copyright{} 2023-2026 Giacomo Leidi@*
Copyright @copyright{} 2022 Antero Mejr@*
Copyright @copyright{} 2023 Karl Hallsby@*
Copyright @copyright{} 2023 Nathaniel Nicandro@*
@@ -44972,6 +44972,202 @@ The database location is hard-coded to @file{/var/lib/rasdaemon/ras-mc_event.db}
@end table
@end deftp
+@cindex tuned
+@cindex system tuning
+@cindex System tuning service for Linux
+@subsubheading TuneD Service
+
+@url{https://tuned-project.org,TuneD} is a system tuning service for Linux. It
+monitors connected devices using the udev device manager and tunes system
+settings according to a selected profile.
+
+It can be integrated with desktop environments like GNOME and KDE: it replaces
+@code{power-profiles-daemon} by implementing the same D-Bus API that they
+already use.
+
+The following is an example configuration that could be suitable for a laptop:
+
+@lisp
+(service tuned-service-type
+ (tuned-configuration
+ (power-profiles-daemon-support? #t)
+ (ppd-settings
+ (tuned-ppd-settings
+ ;; Customize default profiles to use laptop specific ones.
+ (profiles
+ '(("power-saver" . "laptop-ac-powersave")
+ ("balanced" . "balanced")
+ ("performance" . "throughput-performance")))
+ (battery
+ ;; Customize battery profiles to use laptop specific ones.
+ '(("power-saver" . "laptop-battery-powersave")
+ ("balanced" . "balanced-battery")))))))
+@end lisp
+
+For more information, refer to @code{tuned-main.conf(5)}.
+
+@defvar tuned-service-type
+This service spawns and configure the TuneD daemon. The service's value is a
+@code{tuned-configuration} record.
+
+@c %start of fragment
+
+@deftp {Data Type} tuned-configuration
+Available @code{tuned-configuration} fields are:
+
+@table @asis
+@item @code{tuned} (default: @code{tuned}) (type: package)
+The TuneD package.
+
+@item @code{auto-start?} (default: @code{#t}) (type: boolean)
+Whether this service should be started automatically by the Shepherd. If
+it is @code{#f} the service has to be started manually with
+@command{herd start}.
+
+@item @code{power-profiles-daemon-support?} (default: @code{#f}) (type: boolean)
+Whether the power-profiles-daemon emulation layer should be
+enabled.
+
+@item @code{profiles} (default: @code{'()}) (type: list-of-tuned-plugins)
+User provided profiles for TuneD. Each element of the list is supposed
+to be a list where the first element is the name of the directory where
+plugin files will be placed under @file{/etc/tuned/profiles} and the
+second a file like object containing the plugin files:
+
+@lisp
+(list (list "plugin-name" (plain-file "plugin.conf" "content"))
+ (list "other-plugin"
+ (file-union "plugin-data"
+ (list
+ (list "other-plugin.conf"
+ (plain-file "other-plugin.conf" "content"))
+ (list "other-plugin.scm"
+ (program-file "other-plugin.scm"
+ #~(display "content")))))))
+@end lisp
+
+@item @code{settings} (type: tuned-settings)
+Configuration for TuneD.
+
+@item @code{ppd-settings} (type: tuned-ppd-settings)
+Configuration for the @code{power-profiles-daemon} compatibility layer
+of TuneD.
+
+@item @code{recommend.conf} (type: file-like)
+File like object containing the recommended profile configuration.
+Defaults to @code{%default-tuned-configuration-recommend.conf}.
+
+@end table
+
+@end deftp
+
+
+@c %end of fragment
+
+
+@c %start of fragment
+
+@deftp {Data Type} tuned-settings
+Available @code{tuned-settings} fields are:
+
+@table @asis
+@item @code{daemon?} (default: @code{#t}) (type: boolean)
+Whether to use daemon. Without daemon TuneD just applies tuning.
+
+@item @code{dynamic-tuning?} (default: @code{#f}) (type: boolean)
+Dynamically tune devices, if disabled only static tuning will be used.
+
+@item @code{default-instance-priority} (default: @code{0}) (type: integer)
+Default priority assigned to instances.
+
+@item @code{recommend-command?} (default: @code{#t}) (type: boolean)
+Recommend functionality, if disabled @code{recommend} command will be
+not available in CLI, daemon will not parse @file{recommend.conf} but
+will return one hardcoded profile (by default @code{balanced}).
+
+@item @code{sleep-interval} (default: @code{1}) (type: integer)
+How long to sleep before checking for events (in seconds), higher number
+means lower overhead but longer response time.
+
+@item @code{update-interval} (default: @code{10}) (type: integer)
+Update interval for dynamic tunings (in seconds). It must be a multiple
+of the @code{sleep-interval}.
+
+@item @code{profile-dirs} (type: list-of-profile-dirs)
+List of strings or gexps representing directories to search for
+profiles. In case of collisions in profile names, the latter directory
+takes precedence.
+
+@item @code{extra-content} (type: text-config)
+A list of file-like objects that are appended to the configuration file.
+
+@end table
+
+@end deftp
+
+
+@c %end of fragment
+
+
+@c %start of fragment
+
+@deftp {Data Type} tuned-ppd-settings
+Available @code{tuned-ppd-settings} fields are:
+
+@table @asis
+@item @code{default} (default: @code{"balanced"}) (type: string)
+Default PPD profile.
+
+@item @code{battery-detection?} (default: @code{#t}) (type: boolean)
+Whether to enable battery detection.
+
+@item @code{sysfs-acpi-monitor?} (default: @code{#t}) (type: boolean)
+Whether to react to changes of ACPI platform profile done via function
+keys (e.g., Fn-L). This is marked upstream as an experimental feature.
+
+@item @code{profiles} (type: mixed-list)
+Map of PPD profiles states to TuneD profiles. It's supposed to be a
+list of pairs, pair members are supposed to be string. It defaults to
+@code{%default-tuned-ppd-settings-profiles}:
+
+@lisp
+'(("power-saver" . "powersave")
+ ("balanced" . "balanced")
+ ("performance" . "throughput-performance"))
+@end lisp
+
+Elements can be pairs or strings. Pair members can be either strings, gexps or
+file like objects. Strings are directly passed to the serializer. This can be
+an escape hatch in case the underlying syntax of the output file changes
+slightly and the Scheme API is not adequated in time. This way there is always
+a way to work around Scheme records.
+
+@item @code{battery} (type: mixed-list)
+Map of PPD battery states to TuneD profiles. It's supposed to be a list
+of pairs, pair members are supposed to be string. It defaults to
+@code{%default-tuned-ppd-settings-battery}:
+
+@lisp
+'(("balanced" . "balanced-battery"))
+@end lisp
+
+Elements can be pairs or strings. Pair members can be either strings, gexps or
+file like objects. Strings are directly passed to the serializer. This can be
+an escape hatch in case the underlying syntax of the output file changes
+slightly and the Scheme API is not adequated in time. This way there is always
+a way to work around Scheme records.
+
+@item @code{extra-content} (type: text-config)
+A list of file-like objects that are appended to the configuration file.
+
+@end table
+
+@end deftp
+
+
+@c %end of fragment
+@end defvar
+
@cindex zram
@cindex compressed swap
@cindex Compressed RAM-based block devices