1
0
Fork 0

Merge branch 'master' of ssh://git.fedorahosted.org/git/tuned

This commit is contained in:
Jarod Wilson 2010-08-18 10:00:03 -04:00
commit d7bf3c1d10
2 changed files with 61 additions and 8 deletions

View file

@ -0,0 +1,40 @@
# ktune sysctl settings for rhel6 servers, maximizing i/o throughput
#
# Minimal preemption granularity for CPU-bound tasks:
# (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds)
kernel.sched_min_granularity_ns = 10000000
# SCHED_OTHER wake-up granularity.
# (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds)
#
# This option delays the preemption effects of decoupled workloads
# and reduces their over-scheduling. Synchronous workloads will still
# have immediate wakeup/sleep latencies.
kernel.sched_wakeup_granularity_ns = 15000000
# TODO: this bits need comment
kernel.sched_latency_ns = 80000000
kernel.sched_features = 15834234
kernel.sched_tunable_scaling = 0
# 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%)
vm.dirty_ratio = 40
# Start background writeback (via writeback threads) at this percentage (system
# default is 10%)
#vm.dirty_background_ratio = 15
# PID allocation wrap value. When the kernel's next PID value
# reaches this value, it wraps back to a minimum PID value.
# PIDs of value pid_max or larger are not allocated.
#
# A suggested value for pid_max is 1024 * <# of cpu cores/threads in system>
# e.g., a box with 32 cpus, the default of 32768 is reasonable, for 64 cpus,
# 65536, for 4096 cpus, 4194304 (which is the upper limit possible).
#kernel.pid_max = 65536

View file

@ -20,12 +20,14 @@ import sys
import os
import os.path
import glob
import platform
class Tuned_adm:
def __init__(self, profile_dir = "/etc/tune-profiles"):
self.profile_dir = os.path.normpath(profile_dir)
self.active_file = os.path.join(profile_dir, "active-profile")
self.arch = platform.machine()
def error(self, msg, exit_code = 1):
print >>sys.stderr, msg
@ -114,6 +116,17 @@ class Tuned_adm:
if filter(f):
os.unlink(f)
def pick_config(self, name, profile_root):
file = os.path.join(profile_root, name)
(path, ext) = os.path.splitext(file)
arch_specific = "%s.%s%s" % (path, self.arch, ext)
if os.path.exists(arch_specific):
return arch_specific
elif os.path.exists(file):
return file
else:
return None
def off(self):
self.set_active("off")
@ -157,24 +170,24 @@ class Tuned_adm:
self.remove('/etc/ktune.d/tunedadm.sh')
self.remove('/etc/ktune.d/tunedadm.conf')
file = os.path.join(profile_root, "ktune.sysconfig")
if os.path.isfile(file):
file = self.pick_config("ktune.sysconfig", profile_root)
if file:
enablektune = True
os.rename('/etc/sysconfig/ktune', '/etc/sysconfig/ktune.bckp')
os.symlink(file, '/etc/sysconfig/ktune')
file = os.path.join(profile_root, 'ktune.sh')
if os.path.isfile(file):
file = self.pick_config("ktune.sh", profile_root)
if file:
os.symlink(file, '/etc/ktune.d/tunedadm.sh')
file = os.path.join(profile_root, 'sysctl.ktune')
if os.path.isfile(file):
file = self.pick_config("sysctl.ktune", profile_root)
if file:
os.symlink(file, '/etc/ktune.d/tunedadm.conf')
# tuned settings
file = os.path.join(profile_root, 'tuned.conf')
if os.path.isfile(file):
file = self.pick_config("tuned.conf", profile_root)
if file:
enabletuned = True
os.rename('/etc/tuned.conf', '/etc/tuned.conf.bckp')
os.symlink(file, '/etc/tuned.conf')