#!/system/bin/sh
mountrw
echo "1" > /system/etc/firstboot

#Including Conservative Governor
#/system/bin/insmod /system/lib/modules/cpufreq_conservative.ko

echo "Processor priority Tweaks"
# Set Process priority scheduling
renice -20 `pidof com.teslacoilsw.launcher` 	# Launcher
renice -15 `pidof com.android.systemui` 	# Status bar
renice -20 `pidof com.android.phone` 		# Phone

echo "Processor Tweaks"
# Settings Hybrid Governor
echo "hybrid" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor;

	if [ -e /sys/devices/system/cpu/cpufreq/hybrid/up_threshold ]; then
		echo "75" > /sys/devices/system/cpu/cpufreq/hybrid/up_threshold;
		echo "5" > /sys/devices/system/cpu/cpufreq/hybrid/down_differential;
		echo "1" > /sys/devices/system/cpu/cpufreq/hybrid/io_is_busy;
		echo "1" > /sys/devices/system/cpu/cpufreq/hybrid/sampling_down_factor;
		echo "20000" > /sys/devices/system/cpu/cpufreq/hybrid/sampling_rate;
		echo "90" > /sys/devices/system/cpu/cpufreq/hybrid/load_high;
		echo "50" > /sys/devices/system/cpu/cpufreq/hybrid/load_medium;
		echo "0" > /sys/devices/system/cpu/cpufreq/hybrid/load_light;
		echo "30" > /sys/devices/system/cpu/cpufreq/hybrid/cpu_down_avg_times;
		echo "80" > /sys/devices/system/cpu/cpufreq/hybrid/cpu_down_threshold;
	fi;
	
echo "Scheduler Tweaks"
# change IO Scheduler to deadline
echo deadline > /sys/block/mmcblk0boot0/queue/scheduler 
echo deadline > /sys/block/mmcblk0boot1/queue/scheduler 
echo deadline > /sys/block/mmcblk0/queue/scheduler
echo deadline > /sys/block/mmcblk1/queue/scheduler

echo "Memory Tweaks"
sysctl -w vm.vfs_cache_pressure=10
sysctl -w vm.oom_kill_allocating_task=1
echo '6400,8960,14080,17920,38400,64000' > /sys/module/lowmemorykiller/parameters/minfree

echo "FileSystem Tweaks"
# Tuning FileSystem
# System
/system/bin/tune2fs -o journal_data_writeback /dev/block/mmcblk0p3
/system/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p3
# data
/system/bin/tune2fs -o journal_data_writeback /dev/block/mmcblk0p5
/system/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p5
#cache
/system/bin/tune2fs -o journal_data_writeback /dev/block/mmcblk0p4
/system/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p4

busybox mount -o remount,noatime,noauto_da_alloc,nodiratime,barrier=0,nobh /system
busybox mount -o remount,noatime,noauto_da_alloc,nosuid,nodev,nodiratime,barrier=0,nobh /data
busybox mount -o remount,noatime,noauto_da_alloc,nosuid,nodev,nodiratime,barrier=0,nobh /cache

#remove LOG
rm /dev/log/main

if [ ! -e /system/etc/firstboot ]; then
	echo "Database Tweaks"
	#SQLite database vaccum
	for i in `busybox find /d* -iname "*.db"`; do
		sqlite3 $i 'VACUUM;';
		echo "  VACUUMED: $i"
		sqlite3 $i 'REINDEX;';
		echo " REINDEXED: $i"
	done
fi
  
# TCP
echo "NET Tweaks"
echo "0" > /proc/sys/net/ipv4/tcp_timestamps;
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse;
echo "1" > /proc/sys/net/ipv4/tcp_sack;
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle;
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling;
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout;
echo "404480" > /proc/sys/net/core/wmem_max;
echo "404480" > /proc/sys/net/core/rmem_max;
echo "256960" > /proc/sys/net/core/rmem_default;
echo "256960" > /proc/sys/net/core/wmem_default;
echo "4096,16384,404480" > /proc/sys/net/ipv4/tcp_wmem;
echo "4096,87380,404480" > /proc/sys/net/ipv4/tcp_rmem;

busybox sysctl -e -w net.ipv4.tcp_timestamps=0;
busybox sysctl -e -w net.ipv4.tcp_sack=1;
busybox sysctl -e -w net.ipv4.tcp_fack=1;
busybox sysctl -e -w net.ipv4.tcp_congestion_control=cubic;
busybox sysctl -e -w net.ipv4.tcp_window_scaling=1;

busybox sysctl -e -w net.ipv4.tcp_tw_recycle=1;
busybox sysctl -e -w net.ipv4.tcp_tw_reuse=1;

busybox sysctl -e -w net.ipv4.tcp_syncookies=1;
busybox sysctl -e -w net.ipv4.conf.all.rp_filter=1;
busybox sysctl -e -w net.ipv4.conf.default.rp_filter=1;
busybox sysctl -e -w net.ipv4.tcp_synack_retries=2;

#VM
echo "VM Tweaks"
echo "4096" > /proc/sys/vm/min_free_kbytes
echo "0" > /proc/sys/vm/oom_kill_allocating_task;
echo "0" > /proc/sys/vm/panic_on_oom;
echo "0" > /proc/sys/vm/laptop_mode;
echo "0" > /proc/sys/vm/swappiness
echo "50" > /proc/sys/vm/vfs_cache_pressure
echo "90" > /proc/sys/vm/dirty_ratio
echo "70" > /proc/sys/vm/dirty_background_ratio

#BATTERY
echo "500" > /proc/sys/vm/dirty_expire_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs

### External SD I/O Tweaks
echo "External SD I/O Tweaks"
echo 128 > /sys/devices/virtual/bdi/7:0/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:1/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:2/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:3/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:4/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:5/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:6/read_ahead_kb
echo 128 > /sys/devices/virtual/bdi/7:7/read_ahead_kb
echo 4096 > /sys/devices/virtual/bdi/179:0/read_ahead_kb
echo 4096 > /sys/devices/virtual/bdi/default/read_ahead_kb
echo 97 > /sys/devices/virtual/bdi/179:0/max_ratio
echo 97 > /sys/devices/virtual/bdi/default/max_ratio
echo 4096 > /sys/devices/virtual/bdi/179:0/read_ahead_kb;

echo "Other Tweaks"
### Battery Savings
echo 500 > /proc/sys/vm/dirty_expire_centisecs
echo 1000 > /proc/sys/vm/dirty_writeback_centisecs

### Block Redirects
busybox sysctl -e -w net.ipv4.conf.all.accept_redirects=0;
busybox sysctl -e -w net.ipv4.conf.default.accept_redirects=0;
busybox sysctl -e -w net.ipv4.conf.all.secure_redirects=0;
busybox sysctl -e -w net.ipv4.conf.default.secure_redirects=0;

### Block Source-Routing
busybox sysctl -e -w net.ipv4.conf.default.accept_source_route=0;
busybox sysctl -e -w net.ipv4.conf.all.accept_source_route=0;

mountro
echo "END DroniX Tweaks"
