本章目标:
- 通过选择tuned守护进程管理的调优配置文件来优化系统性能
- 通过nice和renice命令,对特定进程进行优先排序或取消其优先排序
文章目录
一、调整调优配置文件
1. 调优系统
系统管理员可以基于多种用例工作负载来调整各种设备设置,以此优化系统性能。 tuned守护进程会利用反映特定工作负载要求的调优配置文件,以静态和动态两种方式应用调优调整。
1.1. 配置静态调优
tuned守护进程会在服务启动时或选择新的调优配置文件时应用系统配置。静态调优会对配置文件中由tuned在运行时应用的预定义kernel参数进行配置。对于静态调优而言,内核参数是针对整体性能预期而设置的,不会随着活跃度的变化而进行调整。
1.2. 配置动态调优
对于动态调优而言,tuned守护进程会监视系统活动,并根据运行时行为的变化来调整设置。从而选调优配置文件中声明的初始设置开始,动态调优会不断进行调优调整以适应当前工作负载。
例如,存储设备在启动和一贫如登录期间的使用率会比较高,但如果用户工作负载的内容是使用Web浏览器和电子邮件客户商,则活动量会很少。同样,CPU和网络设备在整个工作日的高峰使用期间会出现活动增加的情况。tuned守护进程会监视这些组件的活动并调整参数设置,以最大限度提升高活动量期间的性能,并在低活动量期间降低设置值。tuned守护进程将使用预定义调优配置文件中提供的性能参数。
2. 安装并启用TUNED
默认情况下,RHEL 8的最小安装中包含并启用了tuned软件包。要手动安装并启用该软件包:
[root@host ~]$ yum install tuned
[root@host ~]$ systemctl enable --now tuned
Created symlink /etc/systemd/system/multi-user.target.wants/tuned.service → /usr/lib/systemd/system/tuned.service.
3. 选择调优配置文件
tuned应用提供的配置文件分为以下见个类别:
- 节能型配置文件
- 性能提升型配置文件
性能提升型配置文件中包括侧重于以下方面的配置文件:
- 存储和网络的低延迟
- 存储和网络的高吞吐量
- 虚拟机性能
- 虚拟化主机性能
随RHEL 8分发的调优配置文件
调优配置文件 | 用途 |
---|---|
balanced(均衡) | 非常适合需要在节能和性能之间进行折衷的系统 |
desktop | 从balanced配置文件衍生而来。加快交互式应用响应速度 |
throughput-performance | 调优系统,以获得最大吞吐量 |
latency-performance | 非常适合需要牺牲能耗来获取低延迟和服务器系统 |
network-latency(网络延迟) | 从latency-performance配置文件衍生而来。它可以启用额外的网络调优参数,以提供低网络延迟 |
network-throughput(网络吞吐量) | 从throughput-performance配置文件衍生而来。应用其他网络调优参数,以获得最大网络吞吐量 |
powersave(节能) | 调优系统,以最大程度实现节能 |
oracle | 基于throughput-performance配置文件,针对Oracle数据库负载进行优化 |
virtual-guest | 当系统在虚拟机上运行时,调优系统以获得最高性能 |
virtual-host | 当系统充当虚拟机的主机时,调优系统以获得最高性能 |
4. 从命令行管理配置文件
tuned-adm命令可用于更改tuned守护进程的设置。tuned-adm命令可以查询当前设置、列出可用的配置文件、为系统推荐调优配置文件、直接更改配置文件或关闭调优。
系统管理员使用tuned-adm active来确定当前活动的调优配置文件:
[root@host ~]$ tuned-adm active
Current active profile: virtual-guest
tuned-adm list命令列出所有可用的调优配置文件,包括内置的配置文件和系统管理员创建的自定义调优配置文件:
[root@host ~]$ tuned-adm list
Available profiles:
- balanced
- desktop
- latency-performance
- network-latency
- network-throughput
- powersave
- sap
- throughput-performance
- virtual-guest
- virtual-host
Current active profile: virtual-guest
使用tuned-adm profile profilename可以将活动的配置文件切换为更符合系统当前调优要求的其他配置文件:
[root@host ~]$ tuned-adm profile throughput-performance
[root@host ~]$ tuned-adm active
Current active profile: throughput-performance
tuned-adm命令可以为系统推荐调优配置文件。该机制用于在安装后确定系统的默认配置文件:
[root@host ~]$ tuned-adm recommend
virtual-guest
要恢复当前配置文件所做的设置更改,可切换到另一个配置文件或停用tuned守护进程。利用tuned-adm off关闭tuned调优活动:
[root@host ~]$ tuned-adm off
[root@host ~]$ tuned-adm active
No current active profile.
5. 通过WEB控制台管理配置文件
要通过Web控制台管理系统性能配置文件,需要以具有特权的访问权限登录。单击 Reuse my password for privileged tasks 选项。这将允许用户以sudo权限执行修改系统性能配置文件的命令
以特权用户的身份单击左侧导航栏中的Systems菜单选项。当前活动的配置文件将显示在Performance Profile字段中。要选择其他配置文件,单击活动配置文件链接。
在Change Performance Profile界面中,滚动配置文件列表以选择最适合系统用途的配置文件。
要验证更改,返回主System页面并确认Performance Profile字段中是否显示活动的配置文件。
二、影响进程调度
1. LINUX进程调度和多任务
现代计算机系统中既包含只有单个CPU且任何时候都只能执行单个指令的低端系统,也包含高性能超级计算机,这些超级计算机每台配备数百个CPU,且每个CPU上有数十甚至数百个处理核心,可并行执行大量指令。所有这些系统还有一个共同点:它们需要运行的进程线程数量超出了其CPU数量。
通过使用称为时间片或多任务的技术,Linux和其他操作系统可运行超出其处理单元数的进程。操作系统进程调度程序在单个核心上的进程之间快速切换,从而给人一种有多个进程在同时运行的印象。
2. 相对优先级
不同进程的重要性水平各不相同。进程调度程序可以配置为针对不同的进程采用不同的调度策略常规系统上运行的大多数进程所使用的调度策略称为SCHED_OTHER(也称为SCHED_NORMAL),但还有一些其他策略可满足各种各样的工作负载需求。
由于工非所有进程都同等重要,因此可为采用SCHED_NORMAL策略运行的进程指定相对优先级。此优先级称为进程的nice值,对于任何进程,都可以组织成40种不同级别的nice值。
nice级别的范围介于-20(最高优先级)到19(最低优先级)之间。默认情况下,进程将继承其父进程的nice级别通常为0。nice级别越高,表示优先级越低(该进程容易将其CPU使用量让给其他进程);nice级别越低,表示优先级越高(该进程更加不倾向于让出CPU)。如果不存在资源争用(例如,当活动进程数少于可用CPU核心数时),即使nice级别高的进程也将仍使用它们可使用的所有可用CPU资源。但当请求CPU时间的进程数超过可用核心数时,nice级别较高的进程将比nice级别较低的进程收到更少的CPU时间。
3. 设置NICE级别和权限
为很占CPU资源的进程设置较低的nice级别可能对会同一系统上运行的其他进程的性能造成负面影响,所以只有root用户可以降低进程的nice级别。
非特权用户的权限于提高自己进程的nice级别。他们不能降低自己进程的nice级别,也不能修改其他用户进程的nice级别。
4. 报告NICE级别
有几个工具可以显示正在运行的进程的nice级别。进程管理工具(如top)默认显示nice级别。其他工具(如ps命令)可在使用适当选项的情况下显示nice级别。
4.1. 使用top显示nice级别
使用top命令可通过交互方式查看和管理进程。默认配置显示的是关于nice级别与优先级的两列。NI列显示进程的nice值,而PR列则显示其调度的优先级。在top界面中,nice级别映射至内部系统优先级队列,如下图所示。例如,nice级别-20映射到PR列中的0。nice级别19映射至PR列中的优先级39。
4.2. 通过命令行显示nice级别
ps命令可显示进程的nice级别,但权限在包含正确格式化选项的情况下。
以下ps命令列出所有进程,包括其PID、进程名称、nice级别和调度类,按nice级别降序排列。在CLS调度类这一列中显示TS的进程将依照SCHED_NORMAL调度策略运行。nice级别显示为短划线(-)的进程将依照其他调度策略运行,并被调度程序解读为具有较高的优先级。其他调度策略的详细信息已超出了本课程的范畴。
[user@host ~]$ ps axo pid,comm,nice,cls --sort=-nice
PID COMMAND NI CLS
30 khugepaged 19 TS
29 ksmd 5 TS
1 systemd 0 TS
2 kthreadd 0 TS
9 ksoftirqd/0 0 TS
10 rcu_sched 0 TS
11 migration/0 - FF
12 watchdog/0 - FF
...output omitted...
5. 启动具有不同NICE级别的进程
在进程创建过程中,进程会继承其父级的nice级别。从命令行启动某个进程时,该进程将从启动它的shell进程那里继承nice级别。通常,这将导致新进程以nice级别运行。
以下示例将从shell启动进程并显示该进程的nice值注意在ps中使用PID选项以指定所请求的输出:
[user@host ~]$ sha1sum /dev/zero &
[1] 3480
[user@host ~]$ ps -o pid,comm,nice 3480
PID COMMAND NI
3480 sha1sum 0
所有用户都可以使用nice命令来启动具有默认或更高的nice级别的命令。在不带选项的情况下,nice命令将启动一个默认nice值为10的进程。
以下示例将启动sha1sum命令作为具有默认nice级别的后台作业,并显示该进程的nice级别:
[user@host ~]$ nice sha1sum /dev/zero &
[1] 3517
[user@host ~]$ ps -o pid,comm,nice 3517
PID COMMAND NI
3517 sha1sum 10
利用**-n**选项可以将用户定义的nice级别应用于启动的进程。默认设置是将10添加到进程的当前nice级别中。以下示例将启动某个命令作为具有用户定义的nice值的后台作业,并显示该进程的nice级别:
[user@host ~]$ nice -n 15 sha1sum &
[1] 3521
[user@host ~]$ ps -o pid,comm,nice 3521
PID COMMAND NI
3521 sha1sum 15
6. 更改现有进程的NICE级别
可以使用renice命令来更改进程的nice级别。以下示例将使用上一示例中的PID标识符针当前的nice级别从15更改为所需的nice级别19:
[user@host ~]$ renice -n 19 3521
3521 (process ID) old priority 15, new priority 19
也可以使用top命令更改进程的nice级别。在top交互式界面中,按下r选项以访问renice命令,后跟要更改的PID和新的nice级别。