#!/system/bin/sh
# PROJECT MOD BOOST EDITION 
# NITRO X_SPARK EDITION OMEGA
# VERSION 1.3
# Copyright (C) 2015 K1ks
#=======================================================================#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#  GNU General Public License for more details.
#  You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.
#=======================================================================#

busybox mount -o remount,rw /
busybox mount -o remount,rw rootfs
busybox mount -o remount,rw /system

PMB=/system/etc/SPARK_OMEGA.log

if [ -e $PMB ]; then
busybox	rm $PMB;
fi

busybox touch $PMB;
busybox echo "# NITRO X_SPARK EDITION OMEGA 1.2" | tee -a $PMB;
busybox echo "" | tee -a $PMB;
busybox echo "# STARTING UP OF NITRO X : $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $PMB;
busybox echo "" | tee -a $PMB;

# Remount Partition =========================================#

for X in $(busybox mount | grep ext4 | cut -d " " -f3);
do
busybox mount -o noatime,remount,rw,discard,barrier=0,commit=60,noauto_da_alloc,delalloc $X
done;
if [ -e /system/etc/Nitro/XRemount.log ]; then
busybox rm -f /system/etc/Nitro/XRemount.log
fi;
mount >> /system/etc/Nitro/XRemount.log

# Renice System Apps =========================================#

for i in `ps | awk '/u0_/&&!/systemui|latin|input|keyboard|ai|swype|hacker|adwfreak|home|launcher|nextgen|shell|trebuchet|tw3|tw4|tw5|zeam/{print $2}'`; do
  if [ `cat /proc/$i/oom_score_adj` -gt 0 ]; then
    pkg=`ps | grep $i | awk '{print $9}'`
    am force-stop $pkg 2>/dev/null;
  fi 2>/dev/null;
done 2>/dev/null;
am kill-all

pid=$(busybox pgrep zygote 2>/dev/null)
busybox renice -1 $pid 2>/dev/null
busybox ionice -c 1 -n 0 -p $pid 2>/dev/null

pid=$(busybox pgrep kswapd0 2>/dev/null)
busybox renice 0 $pid 2>/dev/null
busybox ionice -c 2 -n 0 -p $pid 2>/dev/null

for pid in `dumpsys activity services | busybox grep -i app=ProcessRecord | busybox awk '{ print $2 }' | busybox grep -v '/100[0-9]}' | busybox cut -d: -f1`; do
busybox renice 7 $pid 2>/dev/null
busybox ionice -c 2 -n 7 -p $pid 2>/dev/null
done

for pid in `busybox pgrep loop 2>/dev/null`; do
busybox ionice -c 2 -n 0 -p $pid 2>/dev/null
done
busybox echo "Optimization Renice System = Activated..." | tee -a $PMB

# LMK Moderate =========================================#

RAM=`free -m | awk '/Mem:/{print $2}'`

busybox chmod 644 /sys/module/lowmemorykiller/parameters/minfree;
busybox chmod 644 /sys/module/lowmemorykiller/parameters/adj;
OLDADJ=`cat /sys/module/lowmemorykiller/parameters/adj`
busybox echo "Old ADJ Values: $OLDADJ" | tee -a $PMB;
OLDMIN=`cat /sys/module/lowmemorykiller/parameters/minfree`
busybox echo "Old MINFREE Values: $OLDMIN" | tee -a $PMB;
busybox echo "" | tee -a $PMB;

RAM=$((`awk '/MemTotal/{print $2}' /proc/meminfo`/1024));

if [ "$RAM" -lt 512000 ];then
busybox echo "3072,6144,9216,14336,20480,25600" > /sys/module/lowmemorykiller/parameters/minfree;	
elif [ "$RAM" -lt 1024000 ];then
busybox	echo "8192,12288,14336,16384,20480,25600" > /sys/module/lowmemorykiller/parameters/minfree;
else 
busybox	echo "10240,12288,14336,20480,25600,30720" > /sys/module/lowmemorykiller/parameters/minfree;
fi;

busybox	echo "0,1,3,5,7,15" > /sys/module/lowmemorykiller/parameters/adj;
busybox chmod 444 /sys/module/lowmemorykiller/parameters/adj;
busybox chmod 444 /sys/module/lowmemorykiller/parameters/minfree;

busybox sleep 1

NEWADJ=`cat /sys/module/lowmemorykiller/parameters/adj`
busybox echo "New ADJ Values: $NEWADJ" | tee -a $PMB;
NEWMIN=`cat /sys/module/lowmemorykiller/parameters/minfree`
busybox echo "New MINFREE Values: $NEWMIN" | tee -a $PMB;
busybox echo "" | tee -a $PMB;
if [ /sys/module/lowmemorykiller/parameters/adj=0,1,3,5,7,15 ]; then
busybox echo "Optimization Light LMK = Activated..." | tee -a $PMB; else
busybox echo "Optimization Light LMK = Not Activated..." | tee -a $PMB;
fi;

# VM Tweaks Nitro X =========================================#
RAM=$((`awk '/MemTotal/{print $2}' /proc/meminfo`/1024));

busybox chmod 644 /proc/sys/vm/*;

busybox sysctl -e -w vm.min_free_kbytes=4096
busybox sysctl -e -w vm.oom_kill_allocating_task=1
busybox sysctl -e -w vm.dirty_background_ratio=10
busybox sysctl -e -w vm.dirty_ratio=80
busybox sysctl -e -w vm.vfs_cache_pressure=50
busybox sysctl -e -w vm.overcommit_memory=1
busybox sysctl -e -w vm.min_free_order_shift=4
busybox sysctl -e -w vm.laptop_mode=0
busybox sysctl -e -w vm.block_dump=0
busybox sysctl -e -w vm.oom_dump_tasks=1
busybox sysctl -e -w vm.swappiness=20
busybox sysctl -e -w vm.page-cluster=3
busybox sysctl -e -w vm.dirty_expire_centisecs=200
busybox sysctl -e -w vm.dirty_writeback_centisecs=500
busybox sysctl -e -w vm.panic_on_oom=0
busybox sysctl -e -w fs.lease-break-time=10
busybox sysctl -e -w fs.inotify.max_queued_events=32000
busybox sysctl -e -w fs.inotify.max_user_instances=256
busybox sysctl -e -w fs.inotify.max_user_watches=10240

if [ $RAM -lt 256 ]; then
busybox sysctl -e -w fs.file-max=16384
elif [ $RAM -lt 512 ]; then
busybox sysctl -e -w fs.file-max=32768
elif [ $RAM -lt 768 ]; then
busybox sysctl -e -w fs.file-max=49152
else
busybox sysctl -e -w fs.file-max=65536
fi;
busybox sleep 1

if [ /proc/sys/vm/min_free_kbytes=4096 ]; then
busybox echo "Optimization VM Nitro X = Activated..." | tee -a $PMB; else
busybox echo "Optimization VM Nitro X = NOT Activated..." | tee -a $PMB;
fi;

# Scheduler Tweaks =========================================#

STL=`ls -d /sys/block/stl*`
BML=`ls -d /sys/block/bml*`
MMC=`ls -d /sys/block/mmc*`
ZRM=`ls -d /sys/block/zram*`
MTD=`ls -d /sys/block/mtd*`
RAM=`ls -d /sys/block/ram*`
LP=`ls -d /sys/block/loop*`

for X in $STL $BML $MMC $ZRM $MTD $RAM
do
busybox echo "0" > $X/queue/rotational;
busybox echo "0" > $X/queue/iostats;
done;
busybox echo "Optimization Scheduler = Activated..." | tee -a $PMB;

# CPU MULTICORE POWER SAVING =========================================#

if [ -e /sys/devices/system/cpu/sched_mc_power_savings ];
then 
busybox echo "2" > /sys/devices/system/cpu/sched_mc_power_savings
fi;

busybox sleep 1

if [ /sys/devices/system/cpu/sched_mc_power_savings=2 ]; then
busybox echo "Multicore Power Saving Aggressive = Activated..." | tee -a $PMB; else
busybox echo "Multicore Power Saving Aggressive = Not Activated..." | tee -a $PMB;
fi;

# Essentiel SetProp =========================================#

setprop ro.config.nocheckin 1
setprop ro.kernel.android.checkjni 0
setprop ro.kernel.checkjni 0
setprop ro.max.fling_velocity 12000
setprop ro.min.fling_velocity 8000
setprop wifi.supplicant_scan_interval 180
setprop windowsmgr.max_events_per_sec 76
setprop persist.sys.purgeable_assets 1
setprop profiler.force_disable_err_rpt 1
setprop profiler.force_disable_ulog 1
setprop ro.ril.transmitpower true
setprop ro.ril.hep 1
setprop ro.ril.disable.power.collapse 1
setprop mot.proximity.delay 25
setprop ro.telephony.call_ring.delay 0
setprop persist.sys.use_dithering 0
setprop debug.performance.tuning 1
setprop video.accelerate.hw 1
setprop logcat.live disable
setprop pm.sleep_mode 2 
setprop ro.ril.enable.a52 0
setprop ro.ril.fast.dormancy.rule 1
setprop ro.ril.enable.a53 1
setprop ro.ril.enable.enhance.search 
setprop ro.ril.hsxpa 2 
setprop ro.ril.gprsclass 12
setprop ro.ril.enable.gea3 1
setprop ro.ril.disable.power.collapse 0 
setprop ro.ril.hep 1
setprop ro.ril.hsdpa.category 24 
setprop ro.ril.hsupa.category 6
setprop ro.ril.enable.sdr 1
setprop net.rmnet0.dns1 8.8.8.8;
setprop net.rmnet0.dns2 8.8.4.4;
setprop net.dns1 8.8.8.8;
setprop net.dns2 8.8.4.4;
busybox rm /dev/log/main

if [ -e /dev/log/main ]; then
busybox echo "Essentiel SetProp Nitro X = Not Activated..." | tee -a $PMB; else
busybox echo "Essentiel SetProp Nitro X = Activated..." | tee -a $PMB;
fi;

# Flag Tuner =========================================#

setprop ENFORCE_PROCESS_LIMIT false
setprop MAX_SERVICE_INACTIVITY false
setprop MIN_HIDDEN_APPS false
setprop MAX_HIDDEN_APPS false
setprop CONTENT_APP_IDLE_OFFSET false
setprop EMPTY_APP_IDLE_OFFSET false
setprop MAX_ACTIVITIES false
setprop ACTIVITY_INACTIVE_RESET_TIME false
setprop MAX_RECENT_TASKS false
setprop MIN_RECENT_TASKS false
setprop APP_SWITCH_DELAY_TIME false
setprop MAX_PROCESSES false
setprop PROC_START_TIMEOUT false
setprop CPU_MIN_CHECK_DURATION false
setprop GC_TIMEOUT false
setprop SERVICE_TIMEOUT false
setprop MIN_CRASH_INTERVAL false
busybox echo "Optimization Flags = Activated" | tee -a $PMB;

# Liquid =========================================#

setprop persist.service.lgospd.enable false
setprop persist.service.pcsync.enable false
setprop touch.presure.scale 0.001
busybox echo "Optimization Liquid Smooth Ui = Activated" | tee -a $PMB;

# CLEANER =========================================#

busybox rm -f /cache/*.apk
busybox rm -f /cache/*.tmp
busybox rm -f /cache/recovery/*
busybox rm -f /data/*.log
busybox rm -f /data/*.txt
busybox rm -f /data/anr/*.*
busybox rm -f /data/backup/pending/*.tmp
busybox rm -f /data/cache/*.*
busybox rm -f /data/dalvik-cache/*.apk
busybox rm -f /data/dalvik-cache/*.tmp
busybox rm -f /data/log/*.*
busybox rm -f /data/local/*.apk
busybox rm -f /data/local/*.log
busybox rm -f /data/local/tmp/*.*
busybox rm -f /data/last_alog/*
busybox rm -f /data/last_kmsg/*
busybox rm -f /data/mlog/*
busybox rm -f /data/tombstones/*
busybox rm -f /data/system/dropbox/*
busybox rm -f /data/system/usagestats/*
busybox rm -rf /sdcard/LOST.DIR

if [ -e /data/system/usagestats/* ]; then
busybox echo "Clean Up System = NOT Activated..." | tee -a $PMB; else
busybox echo "Clean Up System = Activated..." | tee -a $PMB;
fi;

busybox echo "" | tee -a $PMB;
busybox echo "# END OF THE NITRO X_SPARK OMEGA : $( date +"%m-%d-%Y %H:%M:%S" ) " | tee -a $PMB;