赞
踩
对普通用户而言,Linux应用环境优化是比较困难的。领域多,范围广:CPU、存储、缓存策略、内存管理等涉及的参数。Linux内部虽然有默认设置值,可以应对大多数的情况场景,但是针对一些特殊场景,例如高性能、高并发和高可用的系统,就需要我们进行调整。
红帽Linux针对这种情况,综合多年的性能优化分析经验,自RHEL 6.3版本引入了tuned特性,由tuned和tuned-adm两个程序组成。其中 tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的;tuned-adm是客户端程序,用命令行的方式管理和配置 tuned,此外,tuned-adm还提供了一些预先配置的优化方案可供直接使用,比如:虚拟机-主机、虚拟机-客户机、笔记本等优化场景。
当然不同的系统和应用场景有不同的优化方案,tuned-adm预先配置的优化策略不是总能满足要求,因此tuned允许用户自己创建和定制新的调优方案。
tuned子系统是相互独立运行的,合作组成tuned的调优方案。每个子系统可以支持多个设备(每台设备可能有多个cpu、网卡等设备),并且每个设备可以使用单独的实例控制。
CPU子系统主要实现两个功能:
设置CPU governor的值为配置文件中 “governor” 参数的值;CPU governor是内核的CPU频率管理器,通过参数来对CPU的频率进行调节;
根据CPU的负载动态的调节PM QoS CPU DMA延迟。当CPU负载低于 “load_threshold” 参数时,延迟被设为 “latency_high” 参数的数值,否则的话设为 “latency_low”。如果不希望动态调节延迟,可以通过设置 “force_latency” 参数,将延迟固定。
net子系统主要实现两个功能:
根据网口的使用情况动态调整网口的速度,默认网口会一直保持在高速运行,可以降低功耗;
根据 “wake-on-lan” 参数,配置wake-on-lan功能。Wake-On-LAN简称WOL,是一种电源管理功能,允许通过网络将设备从待机或休眠模式中唤醒。
sysctl子系统主要使用sysctl工具来进行系统配置,相当于修改sysctl.conf配置文件。语法格式是 “name=value” ,name就是sysctl工具的条目,value则是配置参数。
disk子系统通过 “elevator” 参数调整电梯算法;通过 “alpm” 参数配置ALPM,ALPM是一种磁盘电源管理工具,用于降低磁盘功耗;此外,还可以动态调整先进电源管理和磁盘spindown的超时时间。
eeepc_she:根据CPU负载动态调节FSB的频率(FSB--前端总线,是连接CPU和北桥芯片的总线),可以降低功耗;
usb:根据 “autosuspend” 参数设置USB设备自动挂起的超时时间,0表示关闭USB设备自动挂起;
vm:根据 “transparent_hugepages” 参数的值使能或者关闭huge page功能;
audio:根据 “timeout” 参数设置音频解码设备的自动挂起超时时间,0表示关闭自动挂起;
mounts:根据“disable_barriers”参数开/关mounts的barrier特性,打开barrier特性次文件系统日志记录会更加可靠,但是会降低一些性能。
sysfs:通过设置sysfs路径下的相关参数进行系统性能调节,语法格式是 “name=value” ,name就是sysfs路径的条目,value则是配置参数。
tuned会预先配置的一些优化策略,下面依次介绍下:(我使用的是tuned 2.7.1版本,不同的版本可能会有差别,具体可以查看 /usr/lib/tuned 目录下各策略的 tuned.conf文件确定)
策略名 | 主要优化内容 | 说明 |
---|---|---|
balanced | CPU:governor参数”conservative”; disk:alpm参数为” medium_power” | 默认的节能策略,追求功耗和性能的平衡,只对CPU和磁盘做了调节 |
powersave | CPU:governor参数” ondemand”; disk:alpm参数为” min_power”; sysctl:vm.dirty_writeback_centisecs参数1500; 关闭watchdog; 其他:wifi和usb的功耗优化选项 | 最节能的策略 |
throughput-performance | CPU:governor参数”performance”; disk:关闭alpm;readahead设置为4096; sysctl:vm.swappiness设为10;vm. dirty_background_ratio和dirty_ratio分别设为10和40;sched_min_granularity设为10ms;sched_wakeup_granularity设为15ms | 禁用节能配置,启用sysctl模块设置来提升性能,主要改善吞吐量,使用deadline的IO调度策略(默认CFQ) |
latency-performance | CPU:governor参数” performance”;force_latency参数为1; disk:关闭alpm; sysctl:vm.swappiness设为10;vm. dirty_background_ratio和dirty_ratio分别设为10和3;sched_min_granularity设为10ms;sched_migration_cost设为5ms | 禁用节能配置,启用sysctl模块设置来提升性能,主要改善延迟; |
virtual-host | 在throughput-performance策略基础上,修改了vm. dirty_background_ratio为5;sched_migration_cost设为5ms | 适用于虚拟机的host设备,基于throughput-performance策略 |
virtual-guest | 在throughput-performance策略基础上,修改了vm.dirty_ratio为30;vm.swappiness设为30 | 适用于作为虚拟机客户机运行的设备,基于throughput-performance策略 |
network-throughput | 在throughput-performance策略基础上,设置了sysctl里面net.ipv4下tcp_rmem、tcp_wmem和udp_mem参数。 | 优化网络吞吐量,基于throughput-performance策略 |
network-latency | 在throughput-performance策略基础上,vm:关闭hugepage特性; sysctl:设置busy_read参数为50;设置busy_poll参数为50;设置.tcp_fastopen参数为3 | 优化网络延迟,基于latency-performance策略 |
desktop | 在balanced策略基础上修改kernel.sched_autogroup_enabled为1 | 适用于桌面设备,基于balanced策略 |
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 <profile_name>
- # 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
不同的系统和应用场景有不同的优化方案,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)中,这样用户可以根据不同的使用场景和需求,很方便的对系统的性能进行设置,极大的简化了linux的性能调节。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。