'\" t .TH "IOCOST\&.CONF" "5" "" "systemd 256~rc2" "iocost.conf" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" iocost.conf \- Configuration files for the iocost solution manager .SH "SYNOPSIS" .PP /etc/systemd/iocost\&.conf /etc/systemd/iocost\&.conf\&.d/*\&.conf .SH "DESCRIPTION" .PP This file configures the behavior of "iocost", a tool mostly used by \fBsystemd-udevd\fR(8) rules to automatically apply I/O cost solutions to /sys/fs/cgroup/io\&.cost\&.*\&. .PP The qos and model values are calculated based on benchmarks collected on the \m[blue]\fBiocost\-benchmark\fR\m[]\&\s-2\u[1]\d\s+2 project and turned into a set of solutions that go from most to least isolated\&. Isolation allows the system to remain responsive in face of high I/O load\&. Which solutions are available for a device can be queried from the udev metadata attached to it\&. By default the naive solution is used, which provides the most bandwidth\&. .SH "CONFIGURATION DIRECTORIES AND PRECEDENCE" .PP The default configuration is set during compilation, so configuration is only needed when it is necessary to deviate from those defaults\&. The main configuration file is loaded from one of the listed directories in order of priority, only the first file found is used: /etc/systemd/, /run/systemd/, /usr/local/lib/systemd/, /usr/lib/systemd/\&. The vendor version of the file contains commented out entries showing the defaults as a guide to the administrator\&. Local overrides can also be created by creating drop\-ins, as described below\&. The main configuration file can also be edited for this purpose (or a copy in /etc/ if it\*(Aqs shipped under /usr/), however using drop\-ins for local configuration is recommended over modifications to the main configuration file\&. .PP In addition to the main configuration file, drop\-in configuration snippets are read from /usr/lib/systemd/*\&.conf\&.d/, /usr/local/lib/systemd/*\&.conf\&.d/, and /etc/systemd/*\&.conf\&.d/\&. Those drop\-ins have higher precedence and override the main configuration file\&. Files in the *\&.conf\&.d/ configuration subdirectories are sorted by their filename in lexicographic order, regardless of in which of the subdirectories they reside\&. When multiple files specify the same option, for options which accept just a single value, the entry in the file sorted last takes precedence, and for options which accept a list of values, entries are collected as they occur in the sorted files\&. .PP When packages need to customize the configuration, they can install drop\-ins under /usr/\&. Files in /etc/ are reserved for the local administrator, who may use this logic to override the configuration files installed by vendor packages\&. Drop\-ins have to be used to override package drop\-ins, since the main configuration file has lower precedence\&. It is recommended to prefix all filenames in those subdirectories with a two\-digit number and a dash, to simplify the ordering of the files\&. This also defines a concept of drop\-in priorities to allow OS vendors to ship drop\-ins within a specific range lower than the range used by users\&. This should lower the risk of package drop\-ins overriding accidentally drop\-ins defined by users\&. It is recommended to use the range 10\-40 for drop\-ins in /usr/ and the range 60\-90 for drop\-ins in /etc/ and /run/, to make sure that local and transient drop\-ins take priority over drop\-ins shipped by the OS vendor\&. .PP To disable a configuration file supplied by the vendor, the recommended way is to place a symlink to /dev/null in the configuration directory in /etc/, with the same filename as the vendor configuration file\&. .SH "OPTIONS" .PP All options are configured in the [IOCost] section: .PP \fITargetSolution=\fR .RS 4 Chooses which I/O cost solution (identified by named string) should be used for the devices in this system\&. The known solutions can be queried from the udev metadata attached to the devices\&. If a device does not have the specified solution, the first one listed in \fIIOCOST_SOLUTIONS\fR is used instead\&. .sp E\&.g\&. "TargetSolution=isolated\-bandwidth"\&. .sp Added in version 254\&. .RE .SH "SEE ALSO" .PP \fBudevadm\fR(8), \m[blue]\fBThe iocost\-benchmarks github project\fR\m[]\&\s-2\u[1]\d\s+2, \m[blue]\fBThe resctl\-bench documentation details how the values are obtained\fR\m[]\&\s-2\u[2]\d\s+2 .SH "NOTES" .IP " 1." 4 iocost-benchmark .RS 4 \%https://github.com/iocost-benchmark/iocost-benchmarks .RE .IP " 2." 4 The resctl-bench documentation details how the values are obtained .RS 4 \%https://github.com/facebookexperimental/resctl-demo/tree/main/resctl-bench/doc .RE