Merge branch 'master' of ssh://git.fedorahosted.org/git/tuned
This commit is contained in:
commit
d7bf3c1d10
2 changed files with 61 additions and 8 deletions
40
tune-profiles/throughput-performance/sysctl.s390x.ktune
Normal file
40
tune-profiles/throughput-performance/sysctl.s390x.ktune
Normal 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
|
||||||
29
tuned_adm.py
29
tuned_adm.py
|
|
@ -20,12 +20,14 @@ import sys
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import glob
|
import glob
|
||||||
|
import platform
|
||||||
|
|
||||||
class Tuned_adm:
|
class Tuned_adm:
|
||||||
|
|
||||||
def __init__(self, profile_dir = "/etc/tune-profiles"):
|
def __init__(self, profile_dir = "/etc/tune-profiles"):
|
||||||
self.profile_dir = os.path.normpath(profile_dir)
|
self.profile_dir = os.path.normpath(profile_dir)
|
||||||
self.active_file = os.path.join(profile_dir, "active-profile")
|
self.active_file = os.path.join(profile_dir, "active-profile")
|
||||||
|
self.arch = platform.machine()
|
||||||
|
|
||||||
def error(self, msg, exit_code = 1):
|
def error(self, msg, exit_code = 1):
|
||||||
print >>sys.stderr, msg
|
print >>sys.stderr, msg
|
||||||
|
|
@ -114,6 +116,17 @@ class Tuned_adm:
|
||||||
if filter(f):
|
if filter(f):
|
||||||
os.unlink(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):
|
def off(self):
|
||||||
self.set_active("off")
|
self.set_active("off")
|
||||||
|
|
||||||
|
|
@ -157,24 +170,24 @@ class Tuned_adm:
|
||||||
self.remove('/etc/ktune.d/tunedadm.sh')
|
self.remove('/etc/ktune.d/tunedadm.sh')
|
||||||
self.remove('/etc/ktune.d/tunedadm.conf')
|
self.remove('/etc/ktune.d/tunedadm.conf')
|
||||||
|
|
||||||
file = os.path.join(profile_root, "ktune.sysconfig")
|
file = self.pick_config("ktune.sysconfig", profile_root)
|
||||||
if os.path.isfile(file):
|
if file:
|
||||||
enablektune = True
|
enablektune = True
|
||||||
os.rename('/etc/sysconfig/ktune', '/etc/sysconfig/ktune.bckp')
|
os.rename('/etc/sysconfig/ktune', '/etc/sysconfig/ktune.bckp')
|
||||||
os.symlink(file, '/etc/sysconfig/ktune')
|
os.symlink(file, '/etc/sysconfig/ktune')
|
||||||
|
|
||||||
file = os.path.join(profile_root, 'ktune.sh')
|
file = self.pick_config("ktune.sh", profile_root)
|
||||||
if os.path.isfile(file):
|
if file:
|
||||||
os.symlink(file, '/etc/ktune.d/tunedadm.sh')
|
os.symlink(file, '/etc/ktune.d/tunedadm.sh')
|
||||||
|
|
||||||
file = os.path.join(profile_root, 'sysctl.ktune')
|
file = self.pick_config("sysctl.ktune", profile_root)
|
||||||
if os.path.isfile(file):
|
if file:
|
||||||
os.symlink(file, '/etc/ktune.d/tunedadm.conf')
|
os.symlink(file, '/etc/ktune.d/tunedadm.conf')
|
||||||
|
|
||||||
# tuned settings
|
# tuned settings
|
||||||
|
|
||||||
file = os.path.join(profile_root, 'tuned.conf')
|
file = self.pick_config("tuned.conf", profile_root)
|
||||||
if os.path.isfile(file):
|
if file:
|
||||||
enabletuned = True
|
enabletuned = True
|
||||||
os.rename('/etc/tuned.conf', '/etc/tuned.conf.bckp')
|
os.rename('/etc/tuned.conf', '/etc/tuned.conf.bckp')
|
||||||
os.symlink(file, '/etc/tuned.conf')
|
os.symlink(file, '/etc/tuned.conf')
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue