调整调优配置文件
- 配置静态调优
tuned守护进程会在服务启动时或选择新的调优配置文件时应用系统设置。静态调优会对配置文件中由tuned在运行是应用的预定义kernel参数进行配置。对于静态调优而言,内核参数是针对整体性能预期而设置的,不会随着活跃度的变化而进行调整。 - 配置动态调优
对于动态调优而言,tuned守护进程会监视系统活动,并根据运行时行为的变化来调整设置。从所选调优配置文件中声明初始化设置开始,动态调优会不断进行调优调整以适应当前工作负载。 - 安装并启用tuned
dnf install -y tuned
systemctl enable --now tuned
- tuned选择调优配置文件
tuned应用提供的配置文件分为一下几个类别:
-- 节能型配置文件
-- 性能提升型配置文件
-- 性能提升型配置文件中包括侧重于一下方面的配置文件:
存储和网络的低延迟
存储和网络的高吞吐量
虚拟机性能
虚拟化主机性能
- RHEL中分发的调优配置文件
-- 均衡:非常适合需要在节能和性能之间进行折中的系统
-- desktop:从balanced配置文件衍生而来,加快交互式应用响应速度
-- throughput-performance:调优系统,以获得最大吞吐量
-- latency-performance:非常适合需要牺牲能耗来获取低延迟的服务器系统
-- 网络延迟:从latency-performance配置文件衍生而来。它可以启用额外的网络调优参数,以提供低网络延迟。
-- 网络吞吐量:从throughput-performance配置文件衍生而来,应用其它网络调优参数,以获得最大网络吞吐量。
-- 节能:调优系统,以最大程度实现节能
-- oracle:基于throught-performance配置文件,针对oracle数据库负载进行优化
-- virtual-guest:当系统在虚拟机上运行时,调优系统以获得最高性能
-- virtual-host:当系统充当虚拟机的主机时,调优系统以获得最高性能 - 从命令行管理配置文件
tuned-adm命令可用于更改tuned守护进程的设置。tuned-adm命令可以查询当前设置、列出可用的配置文件、为系统推荐调优配置文件、直接更改配置文件或关闭调优。
#查看当前活动的调优配置文件
[root@myhost ~]# tuned-adm active
Current active profile: balanced
#列出所有可用的调优配置文件
[root@myhost ~]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- hpc-compute - Optimize for HPC compute workloads
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
#调整将当前活动的配置文件切换成更符合系统的当前调优要求的其它配置文件
[root@myhost ~]# tuned-adm profile throughput-performance
[root@myhost ~]# tuned-adm active
Current active profile: throughput-performance
#查看系统推荐的调优配置文件
[root@myhost ~]# tuned-adm recommend
balanced
#要恢复当前配置文件所作的设置更改,可切换到另一个配置文件或停用tuned守护进程
[root@myhost ~]# tuned-adm off #关闭调整活动
[root@myhost ~]# tuned-adm active
No current active profile..
[root@myhost ~]# tuned-adm profile balanced
[root@myhost ~]# tuned-adm active
Current active profile: balanced
影响进程调度
现代计算机系统中包括单个CPU且执行单个指令的低端系统,也包括高性能超级计算机;但是会面临一个问题:运行的进程数超出了其CPU的数量;通过使用时间片或多任务技术,操作系统可以处理超出CPU单元数的进程,调度器在单个核心上的进程之间切换,给人一种多个进程在同时运行的印象。
- 相对优先级
-- 不同进程的重要水平各不相同
-- 进程调度程序可以配置为针对不同的进程采用不同的调度策略,默认的调度策略为SCHED_OTHER(SCHED_NORMAL)
-- 使用SCHED_NORMAL策略运行的进程指定相对优先级,称为nice值
-- nice的优先级值-20(最高优先级)到19(最低优先级) - 设置nice的级别和权限
-- 为很占CPU资源分配较低的优先级,可防止对其它进程产生负面影响,降低优先级,需要root权限;
-- 非特权用户可以提高自己的nice优先级,但不能降低,也不可以修改,其它用户的nice优先级 - 使用top可以查看nice优先级(NI列为nice优先级)
[root@myhost ~]# top
top - 11:02:16 up 12 days, 16:11, 1 user, load average: 0.06, 0.05, 0.05
Tasks: 233 total, 1 running, 232 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.9 us, 2.1 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7972392 total, 1825272 free, 2889596 used, 3257524 buff/cache
KiB Swap: 16777212 total, 16777212 free, 0 used. 4777096 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
851 root 20 0 396668 4248 3388 S 14.3 0.1 2899:41 accounts-daemon
2068 gdm 20 0 3672668 123608 56112 S 0.7 1.6 32:57.06 gnome-shell
9917 root 20 0 162232 2420 1596 R 0.7 0.0 0:00.05 top
1289 root 20 0 454716 28764 27108 S 0.3 0.4 2:11.27 rsyslogd
2041 root 20 0 168236 6940 5300 S 0.3 0.1 0:05.31 sshd
4579 qemu 20 0 2907480 2.0g 11224 S 0.3 25.9 130:11.23 qemu-kvm
1 root 20 0 191520 4560 2672 S 0.0 0.1 8:14.73 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.40 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:05.45 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.87 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 2:05.40 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
- 启动不同nice级别的进程
[root@serverb cron.hourly]# sleep 600 &
[1] 20741
[root@serverb cron.hourly]# ps -o pid,comm,nice 20741
PID COMMAND NI
20741 sleep 0
[root@serverb cron.hourly]# nice sleep 600 &
[2] 20780
[root@serverb cron.hourly]# ps -o pid,comm,nice 20780
PID COMMAND NI
20780 sleep 10
[root@serverb cron.hourly]# nice -n 15 sleep 600 &
[3] 20810
[root@serverb cron.hourly]# ps -o pid,comm,nice 20810
PID COMMAND NI
20810 sleep 15
[root@serverb cron.hourly]# ps -o pid,comm,nice | grep sleep
20741 sleep 0
20780 sleep 10
20810 sleep 15
#更改现有进程的优先级
[root@serverb cron.hourly]# renice -n 19 20780
20780 (process ID) old priority 10, new priority 19
[root@serverb cron.hourly]# ps -o pid,comm,nice | grep sleep
20741 sleep 0
20780 sleep 19