autotraderuk/chef-tuned

View on GitHub
doc/overview.md

Summary

Maintainability
Test Coverage
[![Build Status](https://travis-ci.org/autotraderuk/chef-tuned.svg?branch=master)](https://travis-ci.org/autotraderuk/chef-tuned)
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/autotraderuk/chef-tuned?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Installs tuned and enables/disables tuned profiles. For more information on tuned please see the [Red Hat documentation](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Power_Management_Guide/Tuned.html) on this daemon

#Usage

###Attribute overview

Define some attributes to be used by the 'tuned_profile' resource.
Attributes have 3 levels
````
default['tuned']['profile']['myprofile']
````
- used as the profile filename must match resource instance name

````
default['tuned']['profile']['myprofile']['cpu']
````
- creates a heading in the profile init file [cpu]

````
default['tuned']['profile']['myprofile']['cpu']['governor'] = 'performance'
````
- creates an key value entry in the profile file under the '[cpu]' heading

###Attribute example


````
default['tuned']['profile']['myprofile']['cpu']['governor'] = 'performance'
default['tuned']['profile']['myprofile']['cpu']['energy_perf_bias'] = 'performance'
default['tuned']['profile']['myprofile']['cpu']['min_perf_pct'] = '100'
default['tuned']['profile']['myprofile']['disk']['readahead'] = '4096'
default['tuned']['profile']['myprofile']['vm']['transparent_hugepage'] = 'never'
default['tuned']['profile']['myprofile']['vm']['transparent_hugepage.defrag'] = 'never'
default['tuned']['profile']['myprofile']['sysctl']['kernel.sched_wakeup_granularity_ns'] = '15000000'
default['tuned']['profile']['myprofile']['sysctl']['kernel.sched_min_granularity_ns'] = '10000000'
default['tuned']['profile']['myprofile']['sysctl']['vm.dirty_background_ratio'] = '10'
default['tuned']['profile']['myprofile']['sysctl']['vm.dirty_ratio'] = '30'
default['tuned']['profile']['myprofile']['main']['include'] = 'latency-performance'
default['tuned']['profile']['myprofile']['sysctl']['vm.swappiness'] = '30'
default['tuned']['profile']['myprofile']['sysfs']['/sys/kernel/mm/transparent_hugepage/enabled'] = 'never'
default['tuned']['profile']['myprofile']['sysfs']['/sys/kernel/mm/transparent_hugepage/defrag'] = 'never'
````
The above example attributes when combined with a resource call:

````
tuned_profile 'myprofile' do
 action [:create, :enable]
end
````

Will create a file 

- /usr/lib/tuned/myprofile/tuned.conf

With the following contents:

```
# Dynamically generated default tuned profile file, applied by Chef!
[main]
include=latency-performance
[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100
[disk]
readahead=4096
[sysctl]
kernel.sched_wakeup_granularity_ns=15000000
kernel.sched_min_granularity_ns=10000000
vm.dirty_background_ratio=10
vm.dirty_ratio=30
vm.swappiness=30
[sysfs]
/sys/kernel/mm/transparent_hugepage/enabled=never
/sys/kernel/mm/transparent_hugepage/defrag=never
[vm]
transparent_hugepage=never
transparent_hugepage.defrag=never
```

###include the default recipe
````
include tuned::default
````
Installs tuned if not already installed

###create and enable a profile
````
tuned_profile 'myprofile' do
 action [:create, :enable]
end
````

###enable a default system profile
See Red Hat Documentation for availale defaults
````
tuned_profile 'balanced' do
 action [:enable]
end
````

###disable a profile (reverts to default)
````
tuned_profile 'myprofile' do
  action [:disable]
end
````

###default to tuned reccomended profile
````
tuned_profile 'myprofile' do
  action [:default]
end
````

#Contributing
1. Fork it
2. Create your feature branch + tests + Readme (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request