Linux性能优化--Tuned特性原理及使用指南

tuned简介

        对普通用户而言,Linux应用环境优化是比较困难的。领域多,范围广:CPU、存储、缓存策略、内存管理等涉及的参数。Linux内部虽然有默认设置值,可以应对大多数的情况场景,但是针对一些特殊场景,例如高性能、高并发和高可用的系统,就需要我们进行调整。
        红帽Linux针对这种情况,综合多年的性能优化分析经验,自RHEL 6.3版本引入了tuned特性,由tuned和tuned-adm两个程序组成。其中 tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的;tuned-adm是客户端程序,用命令行的方式管理和配置 tuned,此外,tuned-adm还提供了一些预先配置的优化方案可供直接使用,比如:虚拟机-主机、虚拟机-客户机、笔记本等优化场景。
        当然不同的系统和应用场景有不同的优化方案,tuned-adm预先配置的优化策略不是总能满足要求,因此tuned允许用户自己创建和定制新的调优方案。

tuned的子系统

        tuned子系统是相互独立运行的,合作组成tuned的调优方案。每个子系统可以支持多个设备(每台设备可能有多个cpu、网卡等设备),并且每个设备可以使用单独的实例控制。

CPU

        CPU子系统主要实现两个功能:

设置CPU governor的值为配置文件中 “governor” 参数的值;CPU governor是内核的CPU频率管理器,通过参数来对CPU的频率进行调节;

根据CPU的负载动态的调节PM QoS CPU DMA延迟。当CPU负载低于 “load_threshold” 参数时,延迟被设为 “latency_high” 参数的数值,否则的话设为 “latency_low”。如果不希望动态调节延迟,可以通过设置 “force_latency” 参数,将延迟固定。

NET

        net子系统主要实现两个功能:

根据网口的使用情况动态调整网口的速度,默认网口会一直保持在高速运行,可以降低功耗;

根据 “wake-on-lan” 参数,配置wake-on-lan功能。Wake-On-LAN简称WOL,是一种电源管理功能,允许通过网络将设备从待机或休眠模式中唤醒。

SYSCTL

        sysctl子系统主要使用sysctl工具来进行系统配置,相当于修改sysctl.conf配置文件。语法格式是 “name=value” ,name就是sysctl工具的条目,value则是配置参数。

DISK

        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提供的profiles

        tuned会预先配置的一些优化策略,下面依次介绍下:(我使用的是tuned 2.7.1版本,不同的版本可能会有差别,具体可以查看 /usr/lib/tuned 目录下各策略的 tuned.conf文件确定)

策略名主要优化内容说明
balancedCPU:governor参数”conservative”; disk:alpm参数为” medium_power”默认的节能策略,追求功耗和性能的平衡,只对CPU和磁盘做了调节
powersaveCPU:governor参数” ondemand”; disk:alpm参数为” min_power”; sysctl:vm.dirty_writeback_centisecs参数1500; 关闭watchdog; 其他:wifi和usb的功耗优化选项最节能的策略
throughput-performanceCPU: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-performanceCPU: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策略

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 <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

自定义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)中,这样用户可以根据不同的使用场景和需求,很方便的对系统的性能进行设置,极大的简化了linux的性能调节。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值