第 3 章 tuned
3.1. tuned 概述
TuneD 是一个使用
udev
监控连接的设备和静态调整系统设置的守护进程,并根据所选的配置集动态调整系统设置。TuneD 由很多预定义的配置集分发,用于常见用例,如高吞吐量、低延迟或节能。可以修改为每个配置集定义的规则,并自定义如何调优特定的设备。要恢复特定配置集对系统设置进行的所有更改,您可以切换到另一个配置集或取消激活 tuned 服务。
注意
从 Red Hat Enterprise Linux 7.2 开始,您可以在
no-daemon 模式下运行
Tuned,这不需要任何常量内存。在这个模式中,tuned 应用设置并退出。在默认情况下,no-daemon 模式
被禁用,因为在这个模式中缺少很多 tuned 功能,包括 D-Bus 支持、热插支持或对设置进行回滚支持。要启用 no-daemon 模式
,请在 /etc/tuned/tuned-main.conf
文件中设置以下内容: daemon = 0
。
静态 调优主要由预定义的
sysctl
和 sysfs
设置的应用程序组成,以及多个配置工具(如 ethtool )的一次性激活。TuneD 还监控系统组件的使用,并根据监控信息动态调整系统设置。
动态调优考虑了在任何给定系统的正常运行时间内使用不同系统组件的方式。例如,硬盘驱动器在启动和登录期间大量使用,但在用户可能主要使用 Web 浏览器或电子邮件客户端等应用时很少使用。同样,CPU 和网络设备在不同的时间使用不同。TuneD 监控这些组件的活动,并对使用中的更改做出反应。
作为实际示例,请考虑典型的办公室工作站。大多数时候,以太网网络接口非常不活跃。只需几封电子邮件会随时进入和传出一次,或者可能会加载一些网页。对于这些类型的负载,网络接口不必像默认那样全速运行。TuneD 为网络设备有一个监控和调优插件,可检测此低活动,然后自动降低该接口的速度,通常是降低功耗。如果接口的活动在较长时间内增加,例如,因为下载了 DVD 镜像或打开了带有大附件的电子邮件,tuned 会检测到这个信息,并设置接口速度的最大速度,以便在活动级别高时提供最佳性能。此原则也用于 CPU 和硬盘的其他插件。
在 Red Hat Enterprise Linux 中全局禁用动态性能优化,可以通过编辑
/etc/tuned/tuned-main.conf
文件并将 dynamic_tuning
标志改为 1
来启用。
3.1.1. 插件
TuneD 使用两种类型的插件: 监控插件和 调优插件。监控插件用于从正在运行的系统获取信息。目前,以下监控插件已被实现:
disk
- 获取每个设备的磁盘负载(IO 操作数)和测量间隔。
net
- 获取每个网卡的网络负载(传输数据包数)和测量间隔。
load
- 获得每个 CPU 的 CPU 负载和测量间隔。
监控插件的输出可通过调优插件以进行动态调优。目前实施了动态调优算法,尝试平衡性能和节能,因此在性能配置集中禁用(单个插件的动态性能优化可以在 tuned 配置集中启用或禁用)。每当启用的调优插件需要其指标时,监控插件会自动实例化。如果两个调优插件需要相同的数据,则仅创建一个监控插件实例并共享数据。
每个调优插件对单个子系统进行调优,并获取从 调优配置集 填充的多个参数。每个子系统可以有多个设备(如多个 CPU 或网卡),它们由调优插件的各个实例处理。也支持单个设备的特定设置。提供的配置集使用通配符来匹配单个子系统的所有设备(有关如何更改此子系统的详情,请参阅 第 3.1.3 节 “自定义配置集”),它允许插件根据所需的目标(选择配置文件)以及用户需要做的唯一任务来调优这些子系统。
目前,以下调优插件已被实施(仅其中一部分实现动态调优,插件支持的参数也会列出):
cpu
- 将 CPU 调控器设置为
governor
参数指定的值,并根据 CPU 负载动态更改 PM QoS CPU DMA 延迟。如果 CPU 负载小于load_threshold
参数指定的值,则延迟被设置为latency_high
参数指定的值,否则它会被设置为latency_low
指定的值。此外,延迟也可以强制使用特定值而无需进一步动态更改。这可以通过将force_latency
参数设置为所需的延迟值来实现。 eeepc_she
- 根据 CPU 负载动态设置 FSB 速度;此功能可在一些笔记本中找到,也称为 Asus Super 混合引擎。如果 CPU 负载较低或等于
load_threshold_powersave
参数指定的值,插件会将 FSB 速度设置为she_powersave
参数指定的值(有关 FSB frequencies 和对应值的详情,请参阅内核文档,提供的默认值应该适用于大多数用户)。如果 CPU 负载较高或等于load_threshold_normal
参数指定的值,它会将 FSB 速度设置为she_normal
参数指定的值。不支持静态调优,如果未检测到对此功能的硬件支持,则插件将被透明地禁用。 net
- 将 wake-on-lan 配置为
wake_on_lan
参数指定的值(使用与 ethtool 工具相同的语法)。它还会根据接口使用率动态更改接口速度。 sysctl
- 设置由插件参数指定的各种
sysctl
设置。语法是name
=value
,其中name
与 sysctl 工具提供的名称相同。如果您需要更改其他插件未涵盖的设置(但在设置涵盖时首选特定插件),请使用此插件。 usb
- 将 USB 设备的自动暂停超时设置为
autosuspend
参数指定的值。值 0 表示 autosuspend 被禁用。 vm
- 根据
transparent_hugepages
参数的布尔值,启用或禁用透明大内存页。 audio
- 将音频解码器的 autosuspend timeout 设置为
timeout
参数指定的值。目前支持snd_hda_intel
和snd_ac97_codec
。值0
表示自动暂停已被禁用。您还可以通过将布尔值参数reset_controller
设置为true
来强制实施控制器重置。 disk
- 将 elevator 设置为
elevator
参数指定的值。它还将 ALPM 设置为alpm
参数 指定的值,将 ASPM 设置为aspm
参数指定的值, 调度程序 quantum 到scheduler_quantum
参数指定的值,磁盘 spindown 超时为spindown
参数指定的值,磁盘 readahead 设置为readahead
参数指定的值,并可以乘以readahead_multiply
参数指定的当前磁盘 readahead 值。此外,这个插件会根据当前的驱动器使用率动态更改驱动器的高级电源管理和递减超时设置。动态调优可由布尔值参数dynamic
控制,并默认启用。注意如果应用一个使用udev
规则进行了配置的,则应用不同磁盘 readahead 值的 tuned 配置集会覆盖磁盘 readahead 值设置。红帽建议使用 tuned 工具来调整磁盘 readahead 值。 mounts
- 根据
disable_barriers
参数的布尔值启用或禁用挂载障碍。 script
- 此插件可用于执行在加载或卸载配置集时所运行的外部脚本。脚本由一个参数调用,该参数可以是
start
或stop
(它取决于在配置集加载或卸载过程中调用该脚本)。脚本文件名可以通过script
参数指定。请注意,您需要在脚本中正确实施 stop 操作,并恢复您在启动操作过程中更改的所有设置,否则回滚将无法正常工作。为方便起见,默认安装功能
Bash 帮助程序脚本,并允许您导入和使用它中定义的各种功能。请注意,这个功能主要用于向后兼容,建议您将它用作最后的手段,如果它们涵盖所需的设置,首选使用其他插件。 sysfs
- 设置由插件参数指定的各种
sysfs
设置。语法是name
=value
,其中name
是要使用的sysfs
路径。如果需要更改未被其他插件覆盖的一些设置,请使用此插件(如果它们涵盖所需的设置,则首选使用特定的插件)。 video
- 在显卡上设置不同的节能级别(目前只支持 Radeon 卡)。可以使用
radeon_powersave
参数指定节能级别。支持的值有:default
,auto
,low
,mid
,high
, 和dynpm
。有关详细信息,请参阅:请注意,此插件是实验性的,将来的版本中可能会更改 参数。 bootloader
- 在内核引导命令行中添加参数。此插件支持传统的 GRUB 1、GRUB 2 以及具有可扩展固件接口(EFI)的 GRUB。grub2 配置文件的自定义非标准位置可以通过
grub2_cfg_file
选项指定。这些参数添加到当前的 grub 配置及其模板中。需要重新引导计算机才能使内核参数生效。这些参数可使用以下语法指定:cmdline
=arg1 arg2 ... argn.
3.1.2. 安装和使用
要安装 tuned 软件包,以 root 用户身份运行以下命令:
yum install tuned
安装 tuned 软件包时,还会预设最适合您的系统的配置集。目前,默认配置集会根据以下可自定义规则选择:
throughput-performance
- 这在充当计算节点的红帽企业 Linux 7 操作系统上预先选中。此类系统上的目标就是最佳吞吐量性能。
virtual-guest
- 这在虚拟机上预先选择。目标是获得最佳的性能。如果您对最佳性能不感兴趣,您可能想将其更改为
balanced
或powersave
配置集(请参阅 bellow)。 balanced
- 所有其他情况下均预先选择此项。目标是平衡性能和能耗。
要启动 tuned,请以 root 身份运行,使用以下命令:
systemctl start tuned
要使 tuned 在每次机器启动时都启动,请输入以下命令:
systemctl enable tuned
对于其他 tuned 控制,如选择配置集和其他,请使用:
tuned-adm
此命令需要运行 tuned 服务。
要查看可用的安装配置集,请运行:
tuned-adm list
要查看当前激活的配置集,请运行:
tuned-adm active
要选择或激活配置集,请运行:
tuned-adm profile profile
例如:
tuned-adm profile powersave
作为实验性功能,可以同时选择更多配置集。tuned 应用程序将尝试在负载期间合并它们。如果存在冲突,则来自最后一个指定的配置集的设置将优先。这会自动完成,且不会检查生成的参数组合是否有用。如果使用时不考虑,则该功能可能会以相反的方式调整某些参数,这可能会是反击的方法。例如,通过使用
throughput-performance
配置集为 高吞吐量
设置磁盘,并通过 spindown-disk
配置集 同时将
磁盘 spindown 设置为低值。以下示例优化了系统,使其在虚拟机中运行以获得最佳性能,并同时针对低功耗进行调整,而低功耗是优先级:
tuned-adm profile virtual-guest powersave
要让 tuned 为您系统的最佳配置集,而不更改任何现有配置集并使用在安装过程中使用的逻辑,请运行以下命令:
tuned-adm recommend
TuneD 本身具有额外的选项,您可以在手动运行时使用。不过,我们不建议这样做,主要用于调试目的。使用以下命令可以查看可用选项:
tuned --help
3.1.3. 自定义配置集
特定于分发的配置文件存储在
/usr/lib/tuned/
目录中。每个配置集都有自己的目录。该配置集由名为 tuned.conf
的主配置文件以及其他文件(如帮助程序脚本)组成。
如果您需要自定义配置集,请将配置集目录复制到用于自定义配置集的
/etc/tuned/
目录中。如果同一名称有两个配置集,则会使用 /etc/tuned/
中包含的配置集。
已被取消处理,您也可以在
/etc/tuned/
目录中创建自己的配置集,以使用 /usr/lib/tuned/
中包含的配置集,并只调整或覆盖某些参数。
tuned.conf
文件包含多个部分。有一个 [main]
部分。其他部分是插件实例的配置。所有部分都是可选的,包括 [main]
部分。以 hash 符号(#)开头的行是注释。
[main]
部分有以下选项:
include=profile
- 将包含指定的配置集,例如
include=powersave
将包含powersave
配置集。
描述插件实例的部分以以下方式格式化:
[NAME] type=TYPE devices=DEVICES
NAME 是插件实例的名称,因为它在日志中使用。它可以是任意字符串。TYPE 是调优插件的类型。有关调优插件的列表和描述,请参阅 第 3.1.1 节 “插件”。DEVICES 是此插件实例将处理的设备的列表。
devices
行可以包含列表、通配符 driver 和负效果(!)。您还可以组合规则。如果没有 devices
行,则插件实例将处理所有在 TYPE
系统中附加的所有设备。这与使用 devices to
.如果没有指定插件的实例,则不会启用插件。如果插件支持更多选项,也可以在 plugin 部分中指定它们。如果未指定 选项,则将使用默认值(如果之前未在包含的插件中指定)。有关插件选项列表,请参考 第 3.1.1 节 “插件”。
例 3.1. 描述插件实例
以下示例将与从
sd
开始的所有内容(如 sda
或 sdb
)匹配,且不会禁用它们中的障碍:
[data_disk] type=disk devices=sd* disable_barriers=false
以下示例将匹配除
sda1
和 sda2
以外的一切:
[data_disk] type=disk devices=!sda1, !sda2 disable_barriers=false
如果您不需要插件实例的自定义名称,并且配置文件中只有一个实例定义,Tuned 支持以下简短语法:
[TYPE] devices=DEVICES
在这种情况下,可以省略
type
行。然后,实例将通过名称来引用,与类型相同。以上示例可改写为:
[disk] devices=sdb* disable_barriers=false
,如果使用相同的部分被指定多次,则设置将被合并。
如果由于冲突而无法合并,最后一个冲突的定义会覆盖之前在冲突中的设置。有时,您不知道之前定义的内容。在这种情况下,您可以使用 replace
布尔值选项并将其设置为 true
。这将导致之前所有具有相同名称的定义被覆盖,合并也不会发生。
您还可以通过指定
enabled=false
选项来禁用插件。这具有与从未定义实例相同的效果。如果您从 include
选项重新定义之前定义,且不想在自定义配置集中激活插件,则禁用插件会很有用。
以下是基于
balanced
配置集的自定义配置集,并将其扩展为 ALPM 的所有设备的 ALPM 设置为 maximal powersaving。
[main] include=balanced [disk] alpm=min_power
以下是在内核引导命令行中添加
isolcpus=2
的自定义配置集示例:
[bootloader] cmdline=isolcpus=2
应用配置集后,需要重新启动计算机才能使更改生效。
3.1.4. tuned-adm
对系统的详细分析可能非常耗时。Red Hat Enterprise Linux 7 包括了很多预定义配置集,用于典型的用例,您可以使用 tuned-adm 工具轻松激活。您还可以创建、修改和删除配置文件。
要列出所有可用的配置集并识别当前活跃的配置集,请运行:
tuned-adm list
要只显示当前活跃的配置集,请运行:
tuned-adm active
要切换到其中一个可用的配置集,请运行:
tuned-adm profile profile_name
例如:
tuned-adm profile latency-performance
禁用所有调整:
tuned-adm off
以下是典型用例的预定义配置集列表:
备注
下列配置文件可以通过基础软件包安装,也可能不会安装,具体取决于所使用的存储库文件:要查看系统上安装的 tuned 配置集,请以 root 用户身份运行以下命令:
tuned-adm list
要查看要安装的可用 调优配置集 列表,请以 root 用户身份运行以下命令:
yum search tuned-profiles
要在您的系统中安装 tuned 配置集,以 root 用户身份运行以下命令:
yum install tuned-profiles-profile-name
使用您要安装的配置集替换 profile-name。
balanced
- 默认节能配置文件.它旨在成为性能和能耗之间的妥协。它尝试尽可能使用自动扩展和自动调整。大部分负载都有很好的结果。唯一缺点是增加了延迟。在当前的 tuned 发行版本中,它启用了 CPU、磁盘、音频和视频插件,并激活了 conservative 调控器。
radeon_powersave
设置为auto
。 powersave
- 用于最大节能性能的配置文件。它可以限制性能,从而最大程度减少实际的功耗。在当前的 tuned 发行版本中,它为 SATA 主机适配器启用 USB 自动挂起、WiFi 节能和 ALPM 节能。它还为使用低折率的系统调度多核功耗,并激活 ondemand 监管器。它可节省 AC97 音频功率,或者根据您的系统节省 HDA-Intel 功耗,而超时为 10 秒。如果您的系统包含支持 Radeon 图形卡,并启用了 KMS,它会将其配置为自动省电。在 Asus Eee PC 上启用了动态 Super 混合引擎。备注
powersave
配置集可能并非始终是最有效的。请考虑需要执行一系列明确的工作,例如需要转码的视频文件。如果转码在全功率上完成,则计算机可以消耗较少的能源,因为任务很快就会完成,计算机会开始闲置,并自动步入到非常高效的节能模式。另一方面,如果您用限流机器对文件进行转换,则计算机在转码期间消耗的功率会更少,但这个过程需要更长的时间,并且消耗的总消耗能源可能会更高。这就是为什么balanced
配置文件通常是一个更好的选择。 throughput-performance
- 针对高吞吐量优化的服务器配置文件。它禁用节能机制并启用 sysctl 设置,以提高磁盘吞吐量性能、网络 IO 并切换到
截止时间调度程序
。CPU 调控器设置为performance
。 latency-performance
- 针对低延迟而优化的服务器配置文件。它禁用节能机制,并启用可改善延迟的 sysctl 设置。CPU 调控器被设置为
performance
,CPU 被锁定到低 C 状态(按 PM QoS)。 network-latency
- 低延迟网络调优配置文件。它基于
latency-performance
配置集。它还禁用透明大页、NUMA 平衡和调优其他几个网络相关的 sysctl 参数。 network-throughput
- 用于吞吐量网络调优的配置文件.它基于
throughput-performance
配置集。它还会增加内核网络缓冲区。 virtual-guest
- 专为红帽企业 Linux 7 虚拟机和 VMware 客户机设计的配置集,它基于企业存储配置文件,除了其他任务外,可减少虚拟内存交换性并增加磁盘预读值。它不禁用磁盘障碍。
virtual-host
- 基于
enterprise-storage
配置集(除其他任务)为虚拟主机设计的配置集降低了虚拟内存交换,增加磁盘预读值,并启用更积极的脏页面值。 oracle
- 根据
throughput-performance
配置集,为 Oracle 数据库负载进行了优化。它还禁用透明大内存页并修改其他一些性能相关的内核参数。这个配置集由 tuned-profiles-oracle 软件包提供。它可用于红帽企业 Linux 6.8 及更高版本。 desktop
- 根据
balanced
配置文件,为桌面进行了优化的配置集。它还支持调度程序自动组,以更好地响应交互式应用程序。 cpu-partitioning
cpu-partitioning
配置集将系统 CPU 划分为隔离和内务 CPU。为减少隔离 CPU 上的 jitter 和中断,配置集清除了与用户空间进程、可移动内核线程、中断处理程序和内核计时器隔离的 CPU。内务 CPU 可以运行所有服务、shell 进程和内核线程。您可以在/etc/tuned/
文件中配置 cpu-partitioning 配置集。配置选项为:cpu-partitioning
-variables.confisolated_cores=cpu-list
- 列出要隔离的 CPU。隔离 CPU 的列表用逗号分开,用户可以指定范围。您可以使用短划线(如
3-5
)指定范围。此选项是必需的。此列表中缺少的任何 CPU 都会自动被视为内务 CPU。 no_balance_cores=cpu-list
- 列出内核在系统范围范围的进程负载均衡期间没有考虑的 CPU。此选项是可选的。这通常与
isolated_cores
相同。
有关cpu-partitioning
的详情,请查看 tuned-profiles-cpu-partitioning(7) man page。
注意
可能提供更多特定于产品或第三方调优配置集。此类配置文件通常由单独的 RPM 软件包提供。
可以使用
Optional
频道中提供的 tuned-profiles-compat 软件包安装其他预定义的配置集。这些配置集旨在向后兼容,不再开发。基本包中的常规配置文件大部分性能相同或更好。如果您没有使用它们的具体原因,请参阅基础包中上述配置文件。compat 配置集如下:
default
- 这对可用配置集的节能具有最低影响,仅启用 tuned 的 CPU 和磁盘插件。
desktop-powersave
- 面向桌面系统的省电配置文件.为 SATA 主机适配器 以及 tuned 的 CPU、以太网和磁盘插件启用 ALPM 节能。
laptop-ac-powersave
- 面向在 AC 上运行的笔记本电脑使用的中型节能配置文件.为 SATA 主机适配器、Wi-Fi 节能以及 tuned 的 CPU、以太网和磁盘插件启用 ALPM 节能。
laptop-battery-powersave
- 面向运行在电池上的笔记本电脑的高影响力节能配置文件.在当前的 tuned 实现中,它是
powersave
配置集的别名。 spindown-disk
- 适用于带有经典 HDD 的机器的节能配置文件,以最大化递减时间。它禁用 tuned 节能机制、禁用 USB 自动暂停、禁用蓝牙、启用 Wi-Fi 节能、禁用日志同步、增加磁盘回写时间并降低磁盘交换。使用
noatime
选项重新挂载所有分区。 enterprise-storage
- 面向企业级存储的服务器配置文件,最大化 I/O 吞吐量。它激活与
throughput-performance
配置集相同的设置,乘以 readahead 设置,并禁用非 root 和非引导分区的障碍。
备注
在物理机上使用
atomic-host
配置文件,以及虚拟机上的 atomic-guest
配置文件。
要为 Red Hat Enterprise Linux Atomic Host 启用 tuned 配置集,请安装 tuned-profiles-atomic 软件包。以 root 用户身份运行以下命令:
yum install tuned-profiles-atomic
Red Hat Enterprise Linux Atomic Host 的两个 tuned 配置文件是:
atomic-host
- 在用作裸机服务器上的主机系统时使用 throughput-performance 配置集时,针对红帽企业 Linux Atomic 主机进行优化的配置集。它还会增加 SELinux AVC 缓存、PID 限制和 netfilter 连接跟踪。
atomic-guest
- 在用作基于虚拟机配置文件的虚拟客户机系统时,针对红帽企业 Linux Atomic 主机优化的配置集。它还会增加 SELinux AVC 缓存、PID 限制和 netfilter 连接跟踪。
备注
可能还会有更多特定于产品的或第三方 调优配置集。这些配置文件通常由单独的 RPM 软件包提供。有三个 tuned 配置集可用于编辑内核命令行:
realtime
、realtime-virtual-host
和 realtime-virtual-guest
。
要启用
realtime
配置集,请安装 tuned-profiles-realtime 软件包。以 root 用户身份运行以下命令:
yum install tuned-profiles-realtime
要启用
realtime-virtual-host
和 realtime-virtual-guest
配置集,请安装 tuned-profiles-nfv 软件包。以 root 用户身份运行以下命令:
yum install tuned-profiles-nfv
3.1.5. powertop2tuned
powertop2 tuned 工具是一个工具,可让您从 PowerTOP 建议创建自定义调优配置集。
要安装 powertop2tuned 应用程序,请以 root 用户身份运行以下命令:
yum install tuned-utils
要创建自定义配置集,以 root 用户身份运行以下命令:
powertop2tuned new_profile_name
默认情况下,它会在
/etc/tuned
目录中创建配置集,它基于当前选择的 tuned 配置集。为安全起见,所有 PowerTOP 调优最初在新配置集中禁用。使其取消注释 / etc/tuned/配置集/tuned.conf
中感兴趣的调整。您可以使用 --enable
或 -e
选项来生成新配置集,并启用了 PowerTOP 建议的大部分调整。USB 自动暂停等一些危险调优仍将被禁用。如果您真的需要它们,您必须手动取消注释。默认情况下,新配置集不会被激活。要激活它,请运行以下命令:
tuned-adm profile new_profile_name
如需选项 powertop2tuned 支持的完整列表,请输入以下命令:
powertop2tuned --help