RH134学习进程——五.调优系统性能

五.调优系统性能

1.设置tuned配置文件

1.1系统调优

系统调优的本质是管理员根据不同工作负载的特征(如业务是数据库服务、Web 服务还是高性能计算),调整系统的各类配置(如内核参数、资源分配策略等),从而让系统在特定工作场景下达到最优性能。

简单来说,不同业务对系统的 CPU、内存、I/O、网络等资源的需求差异很大,调优就是 "按需定制" 系统的运行规则。

1.2tuned 守护进程:系统调优的 "执行者"

tuned 是 Linux 系统中专门用于性能调优的守护进程,它的核心能力是通过 "调优配置文件" 来适配不同工作负载。

每个配置文件都预先定义了一套针对特定工作负载的调优规则(比如 "数据库服务" 需要高 I/O 吞吐量,"实时计算服务" 需要低延迟)。tuned通过静态调优和动态调优两种方式,将这些规则落地到系统中。

默认情况下,RHEL9的最小安装包中包含并启用了tuned软件包;

若要手动安装并启用该软件包:

dnf install tuned

1.2.1 静态调优:"一次性配置,持久生效"

触发时机:

当tuned服务启动时,或管理员手动选择了新的调优配置文件时,静态调优的设置会被应用。

适用场景:

主要用于设置内核参数(如内存分配策略、CPU 调度算法的基础参数等)。这些参数一旦设置,在系统运行过程中不会 "自动变化",除非再次触发配置更新。

若选择 "latency-performance(低延迟性能)" 配置文件,tuned 会在启动时将内核中与 "降低 CPU 调度延迟" 相关的参数一次性设置到位,让系统更适合对延迟敏感的业务(如实时交易)。

1.2.2 动态调优:"实时监控,自适应调整"

工作机制:

tuned会持续监视系统的运行时活动(如 CPU 利用率、内存占用率、I/O 负载等),并根据这些 "实时行为变化" 自动调整系统设置。

适用场景:

用于应对运行过程中动态变化的负载。比如系统 I/O 负载突然升高时,tuned 会动态调整 I/O 调度器的参数,优先保证 I/O 吞吐量;当 CPU 空闲时,又会调整 CPU 频率策略以节省能耗。

作用

让系统在 "变化的工作负载" 中持续保持最优性能,无需人工频繁干预。

1.3 选择调优配置文件

tuned 的调优配置集存储在两个目录:

(1)/usr/lib/tuned:

默认系统配置目录,包含官方预置的所有调优配置集。(禁止直接修改)

如:

(2)/etc/tuned:

自定义/当前有效配置目录,用于存放用户自定义配置集或当前生效的配置集。(在此更改调优规则)

如:

1.4常见各类调优配置文件:

|-------------------------|------------------------------------------------------------------------|
| 调优配置文件 | 用途说明 |
| balanced | 在节能和性能之间做平衡,适合对能耗和性能无极致偏向的通用场景。 |
| powersave | 以 "最大程度节能" 为目标调优,适合低负载、优先降低能耗的场景(如 idle 服务器)。 |
| throughput-performance | 追求最大吞吐量,适合数据密集型、高并发处理的业务(如大数据分析、批量计算)。 |
| accelerator-performance | 调优逻辑与 throughput-performance 一致,且将延迟缩短到 100 微秒以下,实现 "高吞吐量 + 低延迟" 双重优化。 |
| latency-performance | 牺牲部分能耗换取极低延迟,适合实时交易、高频通信等对响应时间极度敏感的场景。 |
| network-latency | 由 latency-performance 衍生,额外启用网络调优参数,专注降低网络延迟(如金融交易网络)。 |
| network-throughput | 由 throughput-performance 衍生,应用额外网络调优参数,追求最大网络吞吐量(如大文件传输、流媒体)。 |
| desktop | 由 balanced 衍生,加快交互式应用响应速度,适合 Linux 桌面办公环境。 |
| hpc-compute | 由 latency-performance 衍生,适合 ** 高性能计算(HPC)** 场景(如科学模拟、复杂数值计算)。 |
| virtual-guest | 系统作为虚拟机客户机运行时,调优以获得最高性能。 |
| virtual-host | 系统作为 ** 虚拟机主机(宿主机)** 运行时,调优以获得最高性能。 |
| intel-sst | 优化采用 Intel Speed Select Technology 的系统,可作为其他配置集的 "覆盖层"(叠加补充优化)。 |
| optimize-serial-console | 提高串行控制台响应能力,可作为其他配置集的覆盖层(如嵌入式设备、老旧硬件管理场景)。 |

1.5从命令行管理配置文件

tuned-adm命令更改tuned守护进程的设置:

1.5.1列出所有可用的配置文件:

tuned-adm list

列出系统中所有可选用的调优配置文件,并附带每个配置的用途说明;

1.5.2查看当前激活的配置文件

tuned-adm active

显示当前系统正在使用的调优配置文件;

如:

输出Current active profile: virtual-guest:

说明当前系统正在使用 virtual-guest 调优配置文件,该配置专为 "虚拟机客户机" 场景设计,用于优化虚拟机内部的系统性能。

1.5.3切换配置文件

tuned-amd profile 配置文件名字;

切换系统的调优配置文件,使新配置立即生效;

tuned-amd profile_info 配置文件名字;

查看配置集的详细信息(调优逻辑等)

如:

配置由: virtual-guest 变为 throughput-performance

执行后,系统会应用 throughput-performance 的调优策略,适合大数据处理、批量计算等高吞吐量业务。

1.5.4关闭tuned

tuned-adm off

禁用所有 tuned 优化,恢复到系统默认状态;

直接使用tuned-adm off即可;

2.影响进程调度

2.1 Linux进程调度

背景:

现代计算机系统中,需要运行的进程 / 线程数量通常远超 CPU 核心数。例如,一台 4 核 CPU 的设备,可能同时有几十个进程(如浏览器、办公软件、后台服务等)等待执行,这种 "进程数量> CPU 核心数" 的场景,是进程调度技术的触发前提。

核心技术:

(1) 时间分片(Time-Slicing):

操作系统将 CPU 的运行时间切割成极短的 "时间片"(通常为毫秒级),每个进程轮流占用一个时间片执行。

(2) 多任务(Multitasking)

通过时间分片技术,Linux 等操作系统具备了 "同时管理多个进程执行" 的能力,从而突破 "CPU 核心数" 的限制,运行远超处理单元数量的进程。

简单来说,Linux 是通过 "把 CPU 时间'切碎'后轮流分配给不同进程" 的方式,实现了在 CPU 资源不足时仍能运行大量进程的效果。

2.2进程优先级

2.2.1调度策略:

(1)操作系统可针对不同进程设置差异化调度策略,以适配业务对 CPU 资源的不同需求。

(2)系统中绝大多数进程采用 SCHED_OTHER(又称SCHED_NORMAL) 调度策略,这是 Linux 的默认通用调度策略。

2.2.2 nice 值

nice值是SCHED_NORMAL策略下相对优先级的具体表现,核心规则如下:

(1)级别数量:共有 40 种不同级别的nice值可设置。

(2)范围与优先级逻辑:nice值范围为 -20(最高优先级)~ 19(最低优先级)。

nice值越高(如 19),进程优先级越低,越 "愿意" 将 CPU 使用权让给其他进程;

nice值越低(如 - 20),进程优先级越高,越 "倾向于" 占用 CPU 资源。

(3)默认继承:进程默认继承其父进程的nice值,通常为0(中性优先级)。

2.2.3资源争用的特殊表现

若系统中活动进程数少于可用 CPU 核心数(无资源竞争),即使nice值高的进程,也会尽可能多地使用 CPU 资源 ------ 因为此时无需通过 "让 CPU" 来保障其他进程运行。

2.2.4进程优先级体系结构:

SCHED_NORMAL(SCHED_NORMAL)

适用对象:大多数普通用户进程

特点:使用完全公平调度器(CFS)

优先级控制:通过 nice 值调整

其他实时调度策略

SCHED_FIFO:先进先出实时调度

SCHED_RR:轮转实时调度

SCHED_BATCH:批处理任务

SCHED_IDLE:极低优先级任务

2.3查看nice值

2.3.1top命令查看nice

使用top命令查看nice值(NI)和priority值(PR);

priority 值(PR)的定义与映射关系;

PR 列表示进程的调度优先级,其数值与 nice 值存在映射关系

(1)当 nice 值为 -20 时,映射到 PR 值 0(此时进程优先级最高);

(2)随着 nice 值增大 (向 19 靠近),PR 值也会相应升高(优先级降低)。

具体查看nice步骤:

(1)运行top命令

运行top命令进入实时监控界面

(2)进入"字段选择"模式

通过"f"键,进入"字段选择"模式:

界面会列出所有可显示的进程字段,每个字段前有一个 "*" 表示当前已启用。

(3)启用"NI(Nice 值)"字段

在字段列表中找到 NI - Nice value 这一项,按下 空格键 为其添加 "*"(表示启用该字段),然后按下 回车键 返回top主界面。

(4)查看nice值

2.3.2ps命令查看nice值
2.3.2.1查看所有进程的nice值并排序

ps axo pid,comm,nice,cls --sort=-nice

解释:

****a:****显示所有用户的进程;

****x:****显示不关联终端的进程(如后台服务);

****o pid,comm,nice,cls:****自定义输出字段,分别为进程 ID(pid)、命令名称(comm)、nice 值(nice)、调度类型(cls);

****--sort=-nice:****按 nice 值降序排列(- 表示降序,省略则为升序)(可选)

如:

2.3.2.2查看特定进程的nice值

(1)通过进程名字(-C)筛选;

如:

ps -o pid,comm,nice -C nginx

查看mld进程的nice值

(2)通过PID(-p)筛选:

如:

ps -o pid,comm,nice -p 63

查看PID为1234的进程的nice值

2.4从命令行设置nice值和权限

2.4.1权限规则

普通用户:仅能提高 自己进程的 nice 值(即降低进程优先级 ),无法降低自己进程的 nice 值。

root 用户:才可以 降低 进程的 nice 值(即提高进程优先级,因为nice值越低,优先级越高)。

2.4.2nice的继承规则

进程在创建过程中会继承父级进程的 nice 值;

从命令行启动进程时,进程会继承 启动 它的 shell 进程 的nice 值,而 shell 进程的 nice 值通常为 0

2.4.3方法
2.4.3.1启动进程时设置

shell 进程的 nice 值通常为 0

格式

nice -n nice的值 命令

如:

nice -n 15 进程

(1)启动一个nice为15的sleep进程

(2)查看这个进程的nice值

该sleep进程的nice值为15(设置成功)

2.4.3.2修改运行中的进程

使用renice命令更改现有进程的nice级别;

格式:

renice nice的值 -p PID

renice -n nice的值 PID

如:

renice 6 -p 32

将PID为32的进程的nice值由5变为6(降低优先级);

2.5使用top命令更改nice级别

步骤:

(1)启用top命令

进入实时监控界面;

(2)定位目标进程

记录目标进程的PID;

如:PID为15的进程

(3)进入renice模式

在交互界面通过"r"键,进入进程优先级调整模式;

界面提示PID to recice:

(4)输入目标PID

输入后回车,进行修改nice步骤

(5)修改nice

输入新的nice值,回车确定

如:nice为1

修改完成

注:

以下几类进程通常不允许修改优先级

|--------------|---------------------------------|------------------------------------------------------|
| 进程类型 | 示例进程 | 原因说明 |
| 内核线程进程 | kthreadd、migration/0、watchdog/0 | 属于内核核心组件,负责 CPU 调度、系统监控等关键功能,修改优先级会破坏系统稳定性。 |
| 实时调度策略进程 | 部分工业控制、嵌入式系统的实时任务 | 采用SCHED_FIFO/SCHED_RR调度策略,优先级由实时规则管理,nice值无意义且不允许修改。 |
| 系统关键服务的核心进程 | systemd(部分关键子进程)、init | 是系统初始化、服务管理的核心,修改其优先级可能导致服务异常、系统启动失败。 |

相关推荐
小李广1 小时前
修改MS源码—开发新接口:查询所有项目下面的模块
java·linux·服务器
shhpeng1 小时前
Debian packages 的签名与验证
运维·debian
猫猫的小茶馆2 小时前
【Linux 驱动开发】嵌入式 Linux 开发概念
linux·服务器·arm开发·stm32·单片机·嵌入式硬件·mcu
还不秃顶的计科生2 小时前
查看linux服务器中某文件夹占用空间大小
服务器·python
旺仔Sec2 小时前
2026年湖北省职业院校技能大赛5G组网与运维(高职学生组)任务书
运维·5g
小五传输2 小时前
探秘主流的内外网文件传输方式,解锁高效安全共享新途径
大数据·运维·安全
“αβ”2 小时前
UDP与TCP的区别
linux·运维·服务器·网络·网络协议·tcp/ip·udp
天上飞的粉红小猪2 小时前
应用层自定义协议与序列化
运维·服务器·网络
遇见火星2 小时前
CI/CD实战:从手动部署到自动化流水线
运维·ci/cd·自动化