#!/bin/bash
#
# automate-15-tune-sles-for-virt-and-hana 
#
# Version: 2016-03-02
#
# License: GPL
# Author: Fabian Herschel 2016
# (c) 2016 SUSE Linux GmbH, Nuremberg, Germany
#
# To be called inside VMs (suse??)
#
# Tasks automated:
# - tune OS for KVM VMs
# - tune OS for HANA
#
# Preequisites:
# - VMs defined and started, SLES installed
#
# Syntax:
# automate-15-tune-sles-for-virt-and-hana
#
#######################################################
#
source /usr/share/Landscape/bin/get_values
export PATH="$PATH:$LandscapeMain/bin"

BAKDIR="/var/adm/backup"


#
# stop non-needed services
#
# TODO use /etc/ClusterTools2/cs_...
SVC_NOT="
boot.multipath
multipathd
microcode.ctl
irq_balancer
alsasound
smartd
mcelog
fbset
splash
splash_early
ipmi
ipmievd
powerd
auditd
SuSEfirewall2_setup
SuSEfirewall2_init
"

chkconfig -A >${BAKDIR}/chkconfig.txt

for s in $SVC_NOT; do
	chkconfig $s off
	/etc/init.d/$s stop
done


#
# adapt boot options
#
DIR="/boot/grub"
FIL="menu.lst"
cp ${DIR}/${FIL} ${BAKDIR}/${FIL}; RC=$? 
# TODO adapt boot options
# elevator=noop cgroup_disable=memory transparent_hugepage=never intel_idle.max_cstate=0
#test $RC
sed s/showopts\ vga=/showopts\ elevator=noop\ cgroup_disable=memory\ transparent_hugepage=never\ vga=/ \
	<${BAKDIR}/${FIL} >${DIR}/${FIL}
echo "RC: $?"

DIR="/etc/sysconfig"
FIL="bootloader"
cp ${DIR/}${FIL} ${BAKDIR}/${FIL}; RC=$? 
#test $RC
sed s/showopts\ vga=/showopts\ elevator=noop\ cgroup_disable=memory\ transparent_hugepage=never\ vga=/ \
	<${BAKDIR}/${FIL} >${DIR}/${FIL}
echo "RC: $?"


#
# adapt sysctl.conf
#
DIR="/etc"
FIL="sysctl.conf"
cp ${DIR}/${FIL} ${BAKDIR}/${FIL} ; RC=$?

#test $RC
# TODO script better 
cat ${BAKDIR}/${FIL} |\
grep -v "vm.overcommit_memory" |\
grep -v "vm.swappiness" |\
grep -v "vm.max_map_count" |\
grep -v "vm.memory_failure_early_kill" |\
grep -v "fs.aio-max-nr" |\
grep -v "fs.file-max" |\
grep -v "kernel.sem" |\
grep -v "kernel.shmall" |\
grep -v "kernel.shmmax" |\
grep -v "net.ipv4.tcp_slow_start_after_idle" |\
grep -v "vm.dirty_bytes" |\
grep -v "vm.dirty_background_bytes" >${DIR}/${FIL}.tmp ; RC=$?

#test $RC
echo "#
vm.overcommit_memory = 1
vm.swappiness = 40
vm.max_map_count = 300000
vm.memory_failure_early_kill =
fs.aio-max-nr = 458752
fs.file-max = 20000000
kernel.sem = 1250 256000 100 8192
kernel.shmall = 1152921504606846720
kernel.shmmax = 9223372036854775807
net.ipv4.tcp_slow_start_after_idle = 0
vm.dirty_bytes = 1073741824
vm.dirty_background_bytes = 134217728
# 
" >>${DIR}/${FIL}.tmp ; RC=$?
#test $RC
mv ${DIR}/${FIL}.tmp ${DIR}/${FIL} ; RC=$?

#test $RC
sysctl -p /etc/sysctl.conf
echo "RC: $?"

#
