暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

系统调优工具tuned的介绍和使用

请叫我水哥 2020-09-03
3361

一、tuned工具的介绍说明

    1.1 监控插件

    1.2 微调插件包括:(常用的举例)

二、安装和使用

三、一些常见的系统自带的优化配置文件详解

四、throughput-performance优化文件说明


今天看朋友们聊天,听他们说起来了这款系统优化工具,可以对CPU的性能模式进行选择(比如CPU的Ondemand和Performance性能模式的选择),可以初始化一些系统内核参数,可以提升系统的吞吐量、节能设置,并对各种场景都提供了默认的配置(目前centOS7自带10种系统优化文件),下面来看看具体设置介绍,下文的内容都来自redhat官方文档:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/power_management_guide/tuned


一、tuned工具的介绍说明


tuned 是一项守护程序,它会使用 udev 来监控联网装置,并且根据选择的配置文件对系统设置进行静态和动态的微调。它有许多为常见使用案例(例如高吞吐量、低延迟或者节电)的预定义配置文件,并且允许用户更改为每个配置文件定义的规则,还可以自定义如何对一个特定的设备进行微调。

tuned 通常使用两种插件:“监控插件”和“微调插件”。监控插件是用来获取运行中的系统的信息

1.1 监控插件

disk

获取每个设备在每个测量间隔的磁盘负载( IO 操作的数量)。

net

获取每个网卡在每个测量间隔的网络负载(已传输数据包的数量)。

load

获取每个 CPU 在每个测量间隔的 CPU 负载。

1.2 微调插件包括:(常用的举例)

cpu

通过 governor 参数将 CPU 调控器设置为指定值,并且根据 CPU 负载动态地改变 PM QoS CPU DMA 延迟。如果 CPU 负载低于 load_threshold 参数设定的指定值,延迟便会根据 latency_high 参数设定的指定值被设置,不然它就会由 latency_low 参数设定的指定值设置。延迟同样可以被设为一个固定的值,而不被动态更改。这可以通过将 force_latency 参数设置为需要的延迟值办到。

net

根据 wake_on_lan 参数设定的指定值对 LAN 唤醒进行配置(它使用的是和 ethtool 实用工具相同的语法)。它也会根据接口使用情况动态地更改接口速度。

sysctl

使用插件参数设置不同的 sysctl 设置。该语法是 name=value,其中 name 和 sysctl 工具提供的名称相同。如果需要改变其它插件无法更改的设置,请使用本插件(如果其它插件可以更改该设置,最好使用其它特定插件)。

vm

启用或禁用透明 Huge Page 取决于 transparent_hugepages 参数的布尔值

disk

根据 elevator 参数设定的指定值设置 elevator。它同样会根据 alpm 参数设置 ALPM ,根据 aspm 参数设置 ASPM,根据 scheduler_quantum 参数设置计划程序量程,根据 spindown 参数设置磁盘旋转降速,根据 readahead 参数设置磁盘 readahead ,根据 readahead_multiply 参数指定的常量乘以当前的 readahead 值。除此之外,这一插件会动态地更改高级电源管理和磁盘旋转降速超时,根据当前的驱动器使用情况对驱动器进行设置。默认情况下动态微调将被启用,并可以通过 dynamic 的布尔参数进行控制。

mounts

根据 disable_barriers 参数的布尔值启用或禁用挂载障碍。

二、安装和使用

//安装tuned
yum install tuned
//启动tuned
systemctl start tuned
systemctl enable tuned
//查看可用的配置文件
[root@slave2 ~]# 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
Current active profile: throughput-performance
//查看目前已经激活的配置文件
[root@slave2 ~]# tuned-adm active
Current active profile: throughput-performance
//激活某一个配置文件,例如virtual-guest
[root@slave2 ~]# tuned-adm profile virtual-guest
[root@slave2 ~]# tuned-adm active
Current active profile: virtual-guest


//查看下其中的配置文件
[root@slave2 virtual-guest]# cat tuned.conf
#
# tuned configuration
#
[main]
summary=Optimize for running inside a virtual guest
include=throughput-performance //包含了高性能模式的配置文件
[sysctl]
# If a workload mostly uses anonymous memory and it hits this limit, the entire
# working set is buffered for I/O, and any more write buffering would require
# swapping, so it's time to throttle writes until I/O can catch up. Workloads
# that mostly use file mappings may be able to use even higher values.
#
# The generator of dirty data starts writeback at this percentage (system default
# is 20%)脏数据生成器当达到一个百分比开始回写到磁盘(默认值20%)
当系统到达30%时,必须将所有脏数据提交到磁盘,同时所有新的I/O块都会被阻塞,直到脏数据被写入磁盘,这通常是长I/O卡顿的原因,但也是保证内存中不会存在过量脏数据的保护机制。
vm.dirty_ratio = 30
# Filesystem I/O is usually much more efficient than swapping, so try to keep
# swapping low. It's usually safe to go even lower than this on systems with
# server-grade storage.文件系统I/O通常比交换效率高得多,因此尽量保持低交换率。在具有服务器级存储的系统上,甚至低于这个值通常是安全的。
vm.swappiness = 30

也可以自定义配置文件

特定分配的配置文件被储存在 /usr/lib/tuned 目录。每个配置文件都有它自己的目录。该配置文件可以构成名为 tuned.conf 的主要配置文件,也可选择构成其它文件,比如 helper 脚本。不要更改 /usr/lib/tuned 中的配置文件。若需要自定义配置文件,请将配置文件目录复制到 /etc/tuned 目录。这是自定义配置文件的位置。若存在两个名称相同的配置文件,将会以 /etc/tuned 中的配置文件为优先。您可以在 /etc/tuned 目录中创建您自己的配置文件,该目录中会有您感兴趣的配置文件,并且只会更改或替代您想要改动的参数。

三、一些常见的系统自带的优化配置文件详解

balanced

默认节电配置文件。其目的为在性能和节能之间找到平衡。它试图在任何可能的情况下都使用自动调整和自动微调。它对大多数负载都会产生好的结果。它唯一的缺点是会增加延迟。目前的 tuned 使得它能够启用 CPU、磁盘、音频和视频插件,还会激活 ondemand 调控器。radeon_powersave 会被设定为 auto

powersave

用于最大化节能效能的配置文件。它能限制效能,以最大限度地减少实际电量消耗。目前的 tuned 使得它能够为 SATA 主适配器启用 USB 自动挂起、 WiFi 节能和 ALPM 节能。它还会以低唤醒率为系统调度多核节能,同时激活 ondemand 控制器。它会根据您的系统启用 AC97 音频节电,或者启用每 10 秒超时的 HDA-Intel 节能。以防您的系统支持启用 KMS 的 Radeon 图形卡,它将自己配置为自动启用节能模式。在华硕 Eee PC 上,会启用动态 Super Hybrid Engine。

throughput-performance

将服务器向高吞吐量优化的配置文件。它会禁用节电机制,并启用 sysctl 设置,提升磁盘和网络 IO 的吞吐性能,并切换到 deadline 计划程序。CPU 调控器被设定为 performance。

latency-performance

将服务器向低延迟优化的配置文件。它会禁用节电机制并启用 sysctl 设置,改善延迟。CPU 调控器被设定为 performance,CPU 会被锁定到低 C 状态(通过 PM QoS)。

network-latency

用于低延迟网络微调的配置文件。它以 latency-performance 配置文件为基础。它还会额外禁用透明 huge page 和 NUMA 平衡,并且微调一些与网络相关的 sysctl 参数。

network-throughput

用于微调网络吞吐量的配置文件。它以 throughput-performance 配置文件为基础。此外它还会增加 kernel 网络缓冲区。

virtual-guest

针对虚拟客机设计的配置文件。它基于企业储存配置文件,会降低虚拟内存的 sawp,增加磁盘预读值。它不会禁用磁盘障碍

virtual-host

基于 enterprise-storage 的配置文件,会降低虚拟内存的 sawppiness,增加磁盘预读值,并且启用更积极的脏页(dirty page)回写。

四、throughput-performance优化文件说明

高性能系统优化文件主要包括以下这些显示优化:

kernel.sched_wakeup_granularity_ns=150000(15微秒)

为抢占当前任务而激活的任务功能。如果将此参数设置为较大的值,那么其他任务就很难实施抢占行为。该参数用于减少过度调度情况。一方面,降低该参数的值可减少唤醒延迟。但是,也可能造成频繁的切换。

kernel.sched_min_granularity_ns=100000(1微秒)

某个任务符合被抢占条件之前至少运行的时间。该参数用于控制未抢占时任务可能运行的时间量。对于延迟敏感型任务(或庞大线程数),将该参数设置为较低的值,而对于受计算量限制或面向吞吐量的工作负载,则将其设置为较高的值。

vm.dirty_ratio=40%

表示在所有进程将脏缓存写回磁盘之前,可使用脏页面所占 MemTotal(可用内存总量)的百分比。达到该值后,将会阻止所有新写操作的所有 I/O ,直至清空脏页面为止。如果将该参数设置为较低的值,那么内核会更频繁地清空小型写操作。如果将该参数设置为较高的值,那么小型写操作会堆积在内存中。

vm.swappiness=10

高参数值可提高文件系统性能,同时积极地将不太活跃的进程换出 RAM。低参数值则避免将进程换出内存,这通常是以 I/O 性能为代价来减少延迟。对于交互式应用,将该参数设置为低值,在减少响应延迟方面有所帮助。

CPU governor=Performance

CPU主要有两种性能模式:

Performance(在 scaling_min_freq 和 scaling_max_freq 参数范围内,将处理器静态设置为最高频率)

Ondemand(根据当前系统负载设置处理器频率)

处理器根据需求提高或降低频率。设置为 performance 的 governor 参数可保持固定的高频率。它不会根据负载而变化。它最符合性能要求,但能耗也更大。ondemand 参数值可以根据工作负载快速提高频率,并在工作负载完成后慢慢降低。


文章转载自请叫我水哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论