Tuned: Linux 动态系统调优

发布时间: 更新时间: 总字数:1324 阅读时间:3m 作者: IP上海 分享 网址

Tuned 是 Linux 系统(特别是 RHEL、CentOS、Fedora 等红帽系发行版,但也支持 Debian/Ubuntu)中的一个动态自适应系统调优守护进程

介绍

Tuned 的核心作用是:通过应用预定义的配置文件(Profiles),自动调整大量的内核参数、电源管理设置和 CPU 调频策略,以适应不同的工作负载场景(如高吞吐量、低延迟、虚拟机宿主等)。

使用 Tuned 可以避免管理员手动去修改 /proc/syssysctl.conf 中的数百个参数。

在计算机和机械领域,“Tune” 通常指 “Performance Tuning”(性能调优)

核心概念

  • 守护进程 (tuned): 监控系统状态并在需要时应用调优设置。
  • 管理工具 (tuned-adm): 命令行工具,用于用户与守护进程交互(切换配置、查询状态)。
  • 配置文件 (Profiles): 预设的调优策略集合。Tuned 自带了很多针对不同场景的通用配置。

安装与启动

大多数 RHEL/CentOS 7/8/9 系统默认已安装。如果没有:

CentOS/RHEL/Fedora:

yum install tuned
systemctl enable --now tuned

Ubuntu/Debian:

apt install tuned
systemctl enable --now tuned

常用配置文件 (Profiles) 介绍

Tuned 自带了很多配置,不同的配置会影响 CPU 调频、磁盘 I/O 调度算法、网络缓冲区等。常见的有:

配置文件名 适用场景 特点
balanced 通用桌面/服务器 默认配置。在性能和省电之间折衷。
throughput-performance 服务器 此时性能优先。禁用省电模式,将 CPU 设置为 performance 模式,优化磁盘吞吐量。
latency-performance 数据库/实时应用 牺牲部分吞吐量以换取极低的延迟。禁用 CPU 深度睡眠,锁定 CPU 频率。
virtual-guest 虚拟机 针对作为虚拟机运行的系统进行优化(减少虚拟时钟开销等)。
virtual-host 宿主机 (KVM) 针对运行虚拟机的物理机进行优化。
powersave 笔记本/闲置设备 极度省电,性能较低。
network-latency 网络应用 专注于降低网络延迟。

tuned-adm 常用命令示例

示例 1: 查看当前激活的配置

tuned-adm active

输出示例: Current active profile: virtual-guest

示例 2: 列出所有可用的配置

tuned-adm list

此命令会列出系统自带的和用户自定义的所有配置。

示例 3: 接受系统推荐

Tuned 可以检测你的环境(是物理机还是虚拟机),并推荐一个配置。

tuned-adm recommend

输出示例: virtual-guest (如果你是在虚拟机里运行)

示例 4: 切换/应用新的配置

如果你正在运行一个高负载的数据库或文件服务器,建议切换到高性能模式:

tuned-adm profile throughput-performance

此操作立即生效,且重启后依然有效。

示例 5: 验证配置完整性

检查当前的系统设置是否与 Tuned 配置文件中的定义一致(查看是否被手动修改过):

tuned-adm verify

示例 6: 关闭 Tuned

如果你想手动完全接管系统参数,可以关闭它:

tuned-adm off

进阶:自定义 Tuned 配置 (实战示例)

有时候默认的配置不能满足需求,你可以基于现有的配置创建一个自定义版本。

场景:你需要一个基于 throughput-performance 的配置,但你需要强制关闭内存大页(Transparent Huge Pages),并修改一个特定的内核参数。

步骤:

  1. 创建配置目录 Tuned 的自定义配置通常放在 /etc/tuned/ 下。

    mkdir /etc/tuned/my-db-profile
    
  2. 创建配置文件 tuned.conf 使用你喜欢的编辑器(如 vim)创建文件:

    vim /etc/tuned/my-db-profile/tuned.conf
    
  3. 编写配置内容 Tuned 配置文件采用 INI 格式。

    [main]
    summary=My custom database profile based on throughput-performance
    # 继承 throughput-performance 的所有设置
    include=throughput-performance
    
    [vm]
    # 禁用透明大页 (针对某些数据库如 Redis/Oracle 往往需要禁用)
    transparent_hugepages=never
    
    [sysctl]
    # 自定义内核参数,例如调整 swappiness
    vm.swappiness=10
    # 调整最大打开文件句柄数 (fs.file-max)
    fs.file-max=65535
    
  4. 激活自定义配置

    # 先让 tuned 重新加载配置列表
    tuned-adm list
    
    # 激活你的新配置
    tuned-adm profile my-db-profile
    
  5. 验证 你可以检查参数是否生效:

    cat /sys/kernel/mm/transparent_hugepage/enabled
    # 输出应该包含 [never]
    
    sysctl vm.swappiness
    # 输出应该是 10
    

总结

  • 简单场景:使用 tuned-adm recommend 或直接设置为 throughput-performance 即可满足绝大多数服务器需求。
  • 复杂场景:通过 /etc/tuned/ 创建继承式配置,可以在享受官方优化基础的同时,实现特定参数的微调。
  • 优势:相比把 sysctl 命令写在 rc.local 里,使用 Tuned 管理更加规范、统一且易于回滚。
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics