uned简介
对普通用户而言,Linux应用环境优化是比较困难的。领域多,范围广:CPU、存储、缓存策略、内存管理等涉及的参数。Linux内部虽然有默认设置值,可以应对大多数的情况场景,但是针对一些特殊场景,例如高性能、高并发和高可用的系统,就需要我们进行调整。本文介绍的tuned特性就是目前Linux系统上常用的一种调优特性。
tuned特性由tuned和tuned-adm两个程序组成。其中 tuned是服务端程序,用来监控和收集系统各个组件的数据;tuned-adm是客户端程序,用命令行的方式管理和配置 tuned。
tuned提供了一些预先配置的优化策略(profile)可供直接使用,比如:虚拟机-主机、虚拟机-客户机、节能等优化场景。当然不同的系统和应用场景有不同的优化方案,tuned预先配置的优化策略不是总能满足要求,因此tuned还允许用户自己创建和定制新的调优方案。
中移软件的BC-Linux操作系统目前就支持tuned特性并使用其进行调优。
tuned的子系统
tuned子系统是相互独立运行的,合作组成tuned的调优方案。每个子系统可以支持多个设备(每台设备可能有多个cpu、网卡等设备),并且每个设备可以使用单独的实例控制。
CPU
CPU子系统主要实现两个功能:
1. 设置CPU governor的值为配置文件中 “governor” 参数的值;CPU governor是内核的CPU频率管理器,通过参数来对CPU的频率进行调节,主要是以下几种参数:
CPU 的governor可以使用如下命令查看:
# cpupower --cpu all frequency-info --governors
查看目前支持的governor
# cpupower --cpu all frequency-info --policy
查看正在使用的governor
2. 根据CPU的负载动态的调节PM QoS CPU DMA延迟。当CPU负载低于 “load_threshold” 参数时,延迟被设为 “latency_high” 参数的数值,否则的话设为 “latency_low”。如果不希望动态调节延迟,可以通过设置 “force_latency” 参数,将延迟固定。
VM
内存子系统主要调节系统的内存参数。
根据 “transparent_hugepages” 参数的值设置huge page(巨页)功能;
# cat /sys/kernel/mm/transparent_hugepage/enabled
查看系统的巨页配置
此外内存子系统还可以设置系统参数,也就是“/proc/sys/vm”路径下的内存参数,比较常用的有以下几种,其余的也可根据需要配置:
vm.dirty_background_ratio: 设置 dirty pages 开始后台回写时的百分比
vm.dirty_ratio: 设置 dirty pages 开始回写时的百分比
vm.swappiness: 控制从物理内存换出到交换空间的相对权重,取值为0到100,更低的值导致避免交换,而更高的值导致尝试使用交换空间
DISK
# cat /sys/block/sda/queue/scheduler
查看系统的IO调度算法
磁盘子系统也可以调节内核的磁盘参数,也就是“/proc/sys/kernel”路径下的参数,比较常用的是以下几种:
kernel.sched_min_granularity_ns: 针对CPU 计算密集型任务设置调度器的最小抢占粒度
kernel.sched_wakeup_granularity_ns: 设置调度器的唤醒粒度,这将延迟抢占效应,并减少过度调度
kernel.sched_migration_cost_ns: 调度器认为迁移的进程“cache hot”因而更少可能被重新迁移的总时间
此外磁盘子系统还可以配置磁盘电源策略,通过ALPM磁盘电源管理工具实现,对应 “alpm” 参数,用于降低磁盘功耗;也可以动态调整先进电源管理和磁盘spindown的超时时间。
NET
网络子系统主要调节网络性能和功耗:
1. 可以调节网络参数,常用的有以下几种:
2. 根据网口的使用情况动态调整网口的速度,默认网口会一直保持在高速运行,可以降低功耗;
3. 根据 “wake-on-lan” 参数,配置wake-on-lan功能。Wake-On-LAN简称WOL,是一种电源管理功能,允许通过网络将设备从待机或休眠模式中唤醒。
其他子系统
sysctl
子系统主要使用sysctl工具来进行系统配置,相当于修改sysctl.conf配置文件。语法格式是 “name=value” ,name就是sysctl工具的条目,value则是配置参数。
eeepc_she
根据CPU负载动态调节FSB的频率(FSB--前端总线,是连接CPU和北桥芯片的总线),可以降低功耗。
usb
根据 “autosuspend” 参数设置USB设备自动挂起的超时时间,0表示关闭USB设备自动挂起。
audio
根据 “timeout” 参数设置音频解码设备的自动挂起超时时间,0表示关闭自动挂起。
mounts
根据“disable_barriers”参数开/关mounts的barrier特性,打开barrier特性次文件系统日志记录会更加可靠,但是会降低一些性能。
sysfs
通过设置sysfs路径下的相关参数进行系统性能调节,语法格式是 “name=value” ,name就是sysfs路径的条目,value则是配置参数。
tuned提供的profiles
tuned会预先配置的一些优化策略,下面依次介绍下:(基于BCLinux7.3系统自带的tuned 2.7.1版本,不同的版本可能会有差别,具体可以查看 /usr/lib/tuned 目录下各策略的 tuned.conf文件确定)
tuned使用说明
Redhat7和centos7默认安装并启动了tuned服务,如果没有的话可以手动安装和启动:
# yum install tuned -- 安装tuned
# service tuned start -- 启动tuned服务
# service tuned status -- 查看tuned状态
对tuned的操作主要通过tuned-adm命令实现。
查看所有可用的profiles和当前使用的profile:
# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optmize for the desktop use-case
- latency-performance - Optimize for deterministic performance…………
- network-latency - Optimize for deterministic performance …………
- network-throughput - Optimize for streaming network throughput. …………
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides…………
- virtual-guest - Optimize for running inside a virtual guest.
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest
只查看当前使用的profile:
# tuned-adm active
Current active profile: virtual-guest
切换profile:
tuned-adm profile
# tuned-adm profile balanced
# tuned-adm active
Current active profile: balanced
关闭优化策略,关闭之后可以使用“tuned-adm profile”命令重新打开优化策略:
# tuned-adm off
查看系统推荐的profile,这个优化策略也就是安装并启动tuned服务之后,tuned自动设置使用的profile:
# tuned-adm recommend
virtual-guest
自定义profile
不同的系统和应用场景有不同的优化方案,tuned-adm预先配置的优化策略不是总能满足要求,因此tuned允许用户自己创建和定制新的调优方案。
tuned预定义的profile的配置文件在/usr/lib/tuned目录,用户自定义的profile目录是/etc/tuned。
自定义调优方案步骤很简单:
首先,在/etc/tuned目录下创建一个目录,名称就是自定义profile的名称;
# mkdir myProfile
# ls
active_profile bootcmdline myProfile tuned-main.conf
然后,在自定义profile目录下编写配置文件” tuned.conf”,可以从/usr/lib/tuned复制一个预定义的配置文件过来,然后进行修改,也可以直接创建一个;
# cd myProfile/
# ls
tuned.conf -- 自定义策略myProfile的优化配置文件
一个简单的配置文件格式如下:
# more desktop/tuned.conf
#
# tuned configuration
#
[main] -- main段
summary=Optmize for the desktop use-case -- profile的介绍
include=balanced -- 包含的profile,也就是基于此profile做些调整
[sysctl] -- sysctl子系统
kernel.sched_autogroup_enabled=1 -- 需要修改的参数
最后,使用” tuned-adm list”查看,自定义的策略可以使用了。
# tuned-adm list
Available profiles:
………………
- myProfile - My profile for test
………………
Current active profile: virtual-guest
总结
tuned特性主要还是使用linux系统现有的一些调节手段和工具,包括电源管理工具,CPU、内存、磁盘等内核参数调整的方式,并将其整合到一个具体的策略(profile)中进行系统的性能调节。
BC-Linux操作系统的用户用户可以根据不同的使用场景和需求,使用现有的策略或者自定义一些策略很方便的对系统的性能进行设置,极大的简化对操作系统的性能调节。
END