#server-performance

针对 Linux 服务器工作负载优化的调优配置文件

16 分钟阅读 - 2026年6月9日

hero section cover

如何为 GPU、数据库和宽带 Linux 服务器选择、应用和自定义优化配置文件,并附有示例和 Ansible 部署技巧。

用于服务器工作负载优化的预设配置文件

Linux 的默认设置侧重于兼容性,而非性能。tuned 守护进程提供了预定义的配置文件,可调整 CPU 调度器、I/O 调度器、内核参数和网络缓冲区,以适应特定的工作负载。本文介绍了这些配置文件的工作原理、常见服务器角色应选择哪种配置文件,以及如何构建和在整个服务器集群中部署自定义配置文件。


 

“优化配置文件”的工作原理

配置文件是位于 /usr/lib/tuned/profiles/ (系统)或 /etc/tuned/profiles/ (custom)下的目录,其中包含一个 tuned.conf 文件。该配置文件按插件对参数进行分组: [cpu], [disk], [sysctl], [vm], [bootloader]等。激活配置文件后,tuned 守护进程会一次性应用所有参数,而非分别运行数十个 sysctlsysfs 命令。

配置文件可以通过 include 指令实现相互继承。例如, throughput-performance 配置文件,例如,可作为自定义数据库配置文件的基础,该自定义配置文件仅覆盖 vm.swappiness “透明巨页”设置的自定义数据库配置文件的基础。

tuned 支持两种运行模式。静态调优在激活时一次性应用配置文件,之后不再干预系统,这适用于生产服务器——在这些服务器上,一致性比节能更为重要。动态调优则实时监控磁盘、网络和负载使用情况,并即时调整设置。性能配置文件默认禁用动态调优,以避免监控带来的开销。

为您的工作负载选择合适的配置文件

tuned 提供了十余种配置文件,涵盖了最常见的工作负载。请选择与服务器实际功能相匹配的配置文件,而非保留默认 balanced 配置文件。

工作负载配置文件功能说明
GPU 训练和推理accelerator-performance将 CPU 锁定在低 C 状态,将 CPU 到 GPU 的延迟控制在 100µs 以内
数据库(Postgres、MySQL、Redis)throughput-performance禁用节能模式,优化磁盘和网络I/O,禁用透明巨页
高带宽网络(CDN、复制、数据管道)network-throughput扩大内核网络缓冲区,以实现持续的高带宽传输
对延迟敏感的服务network-latencylatency-performance将 CPU 调速器锁定为 performance,禁用深度C状态
HPC 和计算集群hpc-compute通过 NUMA 和内存调优提升延迟性能
VPS 实例(客户机操作系统)virtual-guest降低交换倾向,提高半虚拟化 I/O 的磁盘预读量
KVM 虚拟机管理程序主机virtual-host针对虚拟机工作负载调整脏页写回
混合或未知balanced默认设置。以性能为代价换取能效

针对特定的数据库引擎,tuned 还提供了 postgresql, mssql,并 oracle 配置文件,其优化范围比 throughput-performance 通过调整这些引擎的共享内存和内核调度器参数,实现更深入的优化。

在多插槽服务器上,NUMA拓扑至关重要。远程节点的内存访问速度可能比本地访问慢两到三倍。对于双插槽服务器上对延迟要求极高的工作负载,请在配置文件中禁用自动NUMA平衡,并手动将进程固定到特定节点。

安装和应用配置文件

在 RHEL、Rocky、AlmaLinux 或 Fedora 上安装并应用 tuned:

dnf install tuned
systemctl enable --now tuned

在 Debian 和 Ubuntu 上,该软件包也称为 tuned ,并通过 apt。如果 power-profiles-daemon 已运行,请将其屏蔽以避免冲突:

systemctl mask --now power-profiles-daemon

列出可用配置文件,询问 tuned 针对当前硬件的推荐方案,应用配置文件并进行验证:

tuned-adm list
tuned-adm recommend
tuned-adm profile throughput-performance
tuned-adm verify

当前活动的配置文件存储在 /etc/tuned/active_profile 中,并在重启后保持有效。若要完全移除调优并测量基线,请运行 tuned-adm off.

为 AI、ML 和高带宽工作负载构建自定义配置文件

当现成的配置文件已满足 90% 的需求时,请创建一个自定义配置文件,该文件应继承最接近的配置文件,并覆盖剩余的参数。首先创建一个目录和一个配置文件:

mkdir -p /etc/tuned/ai-gpu
cat > /etc/tuned/ai-gpu/tuned.conf <<'EOF'
[main]
summary=Custom profile for GPU training with high-bandwidth networking
include=accelerator-performance
 
[cpu]
governor=performance
 
[sysctl]
kernel.numa_balancing=0
net.core.rmem_max=268435456
net.core.wmem_max=268435456
net.ipv4.tcp_rmem=4096 87380 268435456
net.ipv4.tcp_wmem=4096 65536 268435456
 
[vm]
transparent_hugepages=never
 
[bootloader]
cmdline=hugepagesz=2M hugepages=16384 <a target="_blank" rel="noopener noreferrer" href="https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit">iommu</a>=pt
EOF
 
tuned-adm profile ai-gpu

此处的关键选项:

  • numa_balancing=0 该选项可阻止内核在训练过程中在插槽之间迁移内存,这是双插槽 GPU 系统中常见的性能停滞原因。
  • rmem_maxtcp_rmem 的值将插槽缓冲区上限提高至256MB。在训练节点间采用25G、40G或100G互连的情况下,默认缓冲区大小会导致吞吐量远低于线速。
  • transparent_hugepages=never 可消除 THP 给 PyTorch 和 TensorFlow 等会分配大型张量的框架带来的延迟抖动。
  • iommu=pt 将 IOMMU 设置为直通模式,这是实现 GPU 和网卡直通所必需的,并可降低裸机 DMA 的开销。

低于 [bootloader] 均需重启。激活配置文件后,请运行 tuned-adm verify 以确认运行时参数已生效,并检查 journalctl -u tuned 是否存在错误。请使用 iostat -xz, numastat以及相关工作负载工具(iperf3, fio或实际训练运行)进行前后基准测试。

有一点权衡值得明确说明:禁用 CPU 安全缓解措施可在 GPU 工作负载上提升约 3-8% 的性能,但在系统调用模式密集的工作负载上会造成 15-30% 的性能损失。请根据该服务器的威胁模型做出决策。在防火墙后方的专用训练集群内,从性能角度考虑通常更倾向于禁用这些措施。 在多租户主机上,请保持这些措施启用。

管理服务器集群中的配置文件

当服务器数量超过寥寥数台时,手动配置 `tuned` 便不再可行。Ansible 能干净利落地处理这一问题。只需一个 Playbook 即可安装 `tuned`,并将自定义配置文件目录放置于 /etc/tuned/template 模块,并将相应的配置文件应用到相应的库存组中。

将配置文件映射到库存中的角色:

  • GPU 和 AI 节点: accelerator-performance,或继承自该配置文件的自定义配置文件
  • 数据库服务器: throughput-performance 或特定引擎的配置文件
  • 传输高带宽流量的 CDN 和边缘节点: network-throughput
  • 位于负载均衡器后方的API和Web服务器: network-latency
  • VPS 和 KVM 虚拟机: virtual-guest
  • 虚拟机管理程序主机: virtual-host

配置漂移才是真正的运维难题。手动 sysctl 更改、带来新默认值的软件包升级,或是其他配置管理工具与 tuned 发生冲突,都会导致设置偏离配置文件中的规定。请安排一个 Ansible 任务来运行 tuned-adm activetuned-adm verify 通过 cron 执行,并在失败时触发警报。留意 /var/log/tuned/tuned.log “验证失败”的日志行。

结论

tuned 消除了内核和 sysctl 调优中大部分的猜测成分。默认设置已足以满足一般用途,而针对特定工作负载的配置文件(如 accelerator-performance, throughput-performance,以及 network-throughput 等针对特定工作负载的配置文件,能让您在无需编写任何配置文件的情况下,基本实现系统优化。

  • 选择最接近的默认配置文件,运行 tuned-adm verify,然后进行基准测试
  • 通过继承默认配置文件并仅覆盖所需项来构建自定义配置文件
  • 在 GPU 和高带宽服务器上,需有针对性地调整 NUMA 平衡、大页面以及网络缓冲区大小
  • 使用 Ansible 进行部署,并按计划进行审计以发现配置漂移

需要具备带宽冗余的裸机算力来实际应用这些设置吗?请联系 FDC,了解专为高吞吐量和 GPU 工作负载打造的专用服务器

博客

本周特色

更多文章
iperf3 教程:在 Linux 和 Windows 上测试网络速度
#bandwidth#server-performance

iperf3 教程:在 Linux 和 Windows 上测试网络速度

在 Linux 和 Windows 系统上安装 iperf3、运行带宽测试并调整 TCP 缓冲区,以获得准确结果。涵盖 UDP、双向及 10GbE+ 测试

10 分钟阅读 - 2026年5月7日

#server-performance

针对 Linux 服务器工作负载优化的调优配置文件

16 分钟阅读 - 2026年6月9日

更多文章