当前位置: 首页 > ops >正文

红帽企业 Linux 系统性能调优指南

系统性能调优旨在帮助管理员通过合理配置参数与调整进程优先级,提升系统运行效率。本章核心围绕tuned 调优配置文件设置进程调度优化两大方向展开,为不同场景下的系统性能优化提供了可落地的解决方案。

一、tuned 调优:基于配置文件的系统优化

tuned 是 RHEL 9.0 中用于系统性能调优的核心工具,通过预定义的调优配置文件,以静态动态两种方式适配不同工作负载。静态调优在服务启动或切换配置文件时生效,主要用于设置内核参数;动态调优则实时监控系统活动,根据运行行为调整设置,确保资源分配始终匹配需求。

1. tuned 的安装与启用

默认情况下,RHEL 9.0 的最小安装已包含并启用 tuned 软件包。若需手动操作,可通过以下命令完成安装与启用,确保服务开机自启并立即运行:

[root@host ~]# dnf install tuned
[root@host ~]# systemctl enable --now tuned

执行后会创建服务软链接,确认 tuned 服务纳入多用户目标的启动依赖中。

2. 调优配置文件:适配不同场景需求

tuned 的配置文件存储于两个目录,/usr/lib/tuned(默认系统配置,禁止直接修改)和 /etc/tuned(自定义或当前生效配置),每个配置文件对应独立目录,包含tuned.conf及可选辅助文件。不同配置文件针对特定场景优化,核心用途如下表所示:

调优配置文件核心用途
balanced平衡节能与性能,适用于大多数通用场景
powersave最大化节能,适合笔记本等移动设备或低负载待机系统
throughput-performance追求最大系统吞吐量,优先保障数据处理效率
accelerator-performance基于 throughput-performance,额外将延迟缩短至 100 微秒以下
latency-performance牺牲能耗换取低延迟,适用于对响应速度敏感的服务器(如数据库)
network-latency衍生自 latency-performance,增加网络调优参数,降低网络延迟
network-throughput衍生自 throughput-performance,强化网络参数,提升网络吞吐量
desktop基于 balanced,加快交互式应用(如办公软件)的响应速度
hpc-compute衍生自 latency-performance,适配高性能计算(HPC)场景
virtual-guest针对虚拟机内运行的系统,优化虚拟机性能
virtual-host针对作为虚拟机主机的系统,提升多虚拟机并发运行效率
intel-sst适配 Intel Speed Select Technology,作为其他配置的覆盖层
optimize-serial-console提高串行控制台响应能力,作为其他配置的覆盖层

virtual-guest配置为例,其tuned.conf包含对内存与交换分区的优化,如将vm.dirty_ratio设为 30%(触发写回的脏数据比例)、vm.swappiness设为 36(降低交换分区使用频率,优先使用文件系统 I/O),确保虚拟机内系统资源利用更高效。

3. 配置文件的管理方式

(1)命令行管理:灵活切换与查看

通过tuned-adm命令可完成配置文件的查看、切换、推荐及停用,核心操作如下:

  • 查看当前活跃配置:[root@host ~]# tuned-adm active

  • 列出所有可用配置:[root@host ~]# tuned-adm list

  • 切换配置文件(如切换至 throughput-performance):[root@host ~]# tuned-adm profile throughput-performance

  • 推荐适配当前系统的配置:[root@host ~]# tuned-adm recommend(如虚拟机系统会推荐 virtual-guest)

  • 停用 tuned 调优:[root@host ~]# tuned-adm off(停用后无活跃配置,系统恢复默认设置)

(2)Web Console 管理:可视化操作

通过 Web Console(需管理员权限)可直观管理调优配置。登录后进入 “System information” 或 “Configuration” 模块,在 “Performance profile” 选项中查看当前配置,点击切换即可选择目标配置文件,无需记忆命令,适合图形化操作偏好的管理员。

二、进程调度优化:通过 nice/renice 调整优先级

Linux 采用 “时间分片(time-slicing)” 技术实现多任务,进程调度程序在 CPU 核心间快速切换进程,营造 “并行运行” 的效果。而进程优先级(nice 值)决定了 CPU 资源的分配权重,是优化进程响应速度的关键。

1. 进程优先级的核心规则

Linux 中进程优先级通过nice 值定义,核心特性如下:

  • 取值范围:-20(最高优先级)~19(最低优先级),共 40 个级别;

  • 默认值:进程继承父进程的 nice 值,通常为 0(如 shell 启动的进程默认 nice 值为 0);

  • 优先级逻辑:nice 值越低,进程越 “不倾向于让出 CPU”,优先获得资源;nice 值越高,进程越 “容易让出 CPU”,资源分配优先级低;

  • 资源争用影响:若 CPU 核心数多于活跃进程数(无资源争用),即使高 nice 值进程也会占用全部可用 CPU。

此外,大多数进程采用SCHED_NORMAL(也称SCHED_OTHER)调度策略,nice 值仅对该策略生效;其他调度策略(如实时调度)的进程优先级更高,nice 值显示为 “-”。

2. 权限控制:确保优先级调整安全

  • root 用户:拥有完整权限,可降低或提高任意进程的 nice 值(如将 nice 值从 10 调整为 - 5,或从 0 调整为 15);

  • 普通用户:仅能提高自身进程的 nice 值(如从 0 调整为 10),无法降低优先级,避免普通用户抢占系统核心资源。

3. nice 值的查看与调整

(1)查看 nice 值:多工具支持
  • top 命令:交互式查看进程信息,“NI” 列显示 nice 值,“PR” 列显示映射后的优先级(nice 值 - 20 对应 PR 值 0,nice 值 19 对应 PR 值 39),同时可实时监控 CPU、内存占用;

  • ps 命令:列出进程详情并按 nice 值排序,例如以下命令显示所有进程的 PID、名称、nice 值及调度类型(“CLS” 列中 “TS” 表示SCHED_NORMAL策略):

    [user@host ~]$ ps axo pid,comm,nice,cls --sort=-nice
    
(2)调整 nice 值:启动时与运行中
  • 启动时设置(nice 命令):通过nice命令在进程启动时指定 nice 值,默认增加 10(即 nice 值为 10),-n选项可自定义数值。例如:

    # 默认nice值10启动sleep进程
    [user@host ~]$ nice sleep 60 &
    # 自定义nice值15启动sleep进程
    [user@host ~]$ nice -n 15 sleep 60 &
    
  • 运行中调整(renice 命令 /top 交互):对已启动的进程,可通过renice命令修改 nice 值,或在 top 界面按 “r” 键进入交互模式,输入 PID 和新 nice 值。例如:

    # 将PID为2740的进程nice值从15调整为19
    [user@host ~]$ renice -n 19 2740
    

三、性能调优总结

RHEL 9.0 的系统性能调优围绕 “资源匹配需求” 核心目标,通过 tuned 与进程优先级调整形成互补:

  1. tuned 调优:基于预定义配置文件,实现系统级资源(CPU、内存、网络)的批量优化,适配通用或特定场景(如虚拟机、高性能计算),无需逐一调整参数;

  2. 进程优先级调整:针对单个关键进程(如核心业务程序),通过 nice/renice 精细控制 CPU 资源分配,确保高优先级进程优先获得响应,提升业务体验;

  3. 恢复与切换:若需撤销调优效果,可切换 tuned 配置文件或停用 tuned 服务;进程优先级调整后,仅需重新设置 nice 值即可恢复默认状态。

掌握这两种调优方式,可帮助管理员根据实际业务场景(如通用办公、服务器、虚拟机)灵活配置系统,在性能、节能、延迟等需求间找到最佳平衡,最大化红帽企业 Linux 系统的运行效率。

http://www.xdnf.cn/news/19366.html

相关文章:

  • mapstruct原理以及使用对比
  • nginx-realip问题解决方案
  • 算法面试题(上)
  • 前阿里专家揭秘:你对中国十大GEO专家的认知,99%都是错的
  • 吴恩达机器学习作业十二:协同过滤(电影推荐系统)
  • 使用 BayesFlow 通过神经网络简化贝叶斯推断(一)
  • 中医文化学习软件,传承国粹精华
  • 动态滑动窗口还搞不清?一文搞定动态滑动窗口 | 基础算法
  • Windows系统安装Git详细教程
  • 【Java后端】Spring Boot 全局域名替换
  • TCP实现线程池竞争任务
  • FPGA|Quartus II 中使用TCL文件进行引脚一键分配
  • 深入理解零拷贝:本地IO与网络IO的性能优化利器
  • Docker基本介绍
  • MySQL 慢查询 debug:索引没生效的三重陷阱
  • 深度学习框架与工具使用心得:从入门到实战优化
  • 动作指令活体检测通过动态交互验证真实活人,保障安全
  • 数字后端tap cell:新老工艺tap cell区别
  • 软考中级数据库系统工程师学习专篇(67、数据库恢复)
  • Linux网络socket套接字(中)
  • AI人工智能大模型应用如何落地
  • DriveDreamer-2
  • C++ 模板全览:从“非特化”到“全特化 / 偏特化”的完整原理与区别
  • CUDA与图形API的深度互操作:解锁GPU硬件接口的真正潜力
  • Linux 系统都有哪些
  • Playwright Python 教程:实战篇
  • docker中的命令(四)
  • Coze源码分析-工作空间-项目开发-前端源码
  • 如何重置SVN被保存的用户名和密码
  • 【pve】