Last active
August 6, 2022 15:42
-
-
Save MrCarb0n/a2f51feab7fdc28b15d4da3f07526cf2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/system/bin/sh | |
# AOSP Enhancer | |
# Author: LOOPER (iamlooper @ github) | |
# Todo: If you do changes in code then make sure to change referring line numbers to code in comments respectively. | |
############################### | |
# Required Tools | |
############################### | |
# $1:filepath $2:value | |
write() | |
{ | |
for p in $1; do | |
[[ -f "$p" ]] && { | |
chmod +w "$p" 2> /dev/null | |
echo "$2" > "$p" | |
} | |
done | |
} | |
xlog() | |
{ | |
log_file="/storage/emulated/0/Android/aosp_enhancer.txt" | |
case "$1" in | |
"-i") shift && echo "[*] $@" >> "$log_file" ;; | |
"-e") shift && echo "[!] $@" >> "$log_file" ;; | |
"-d") shift && echo "[$(date | awk '{print $4}')] $@" >> "$log_file" ;; | |
"-c") rm -f "$log_file" ;; | |
*) shift && echo "$@" >> "$log_file" ;; | |
esac | |
} | |
home_pkgname_fetcher() | |
{ | |
echo "$(pm resolve-activity -a android.intent.action.MAIN -c android.intent.category.HOME | grep packageName | head -n 1 | cut -d= -f2)" | |
} | |
ime_pkgname_fetcher() | |
{ | |
echo "$(ime list | grep packageName | head -n 1 | cut -d= -f2)" | |
} | |
kill_svc() | |
{ | |
killall -q -9 "$1" | |
stop "$1" | |
} | |
pid_fetcher() | |
{ | |
echo "$(ps -Ao pid,args | grep -i -E "$1" | awk '{print $1}')" | |
} | |
change_task_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
echo "$tid" > "/dev/$3/$2/tasks" | |
done | |
done | |
} | |
change_proc_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
echo $pid > "/dev/$3/$2/cgroup.procs" | |
done | |
} | |
change_thread_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && echo "$tid" > "/dev/$4/$3/tasks" | |
done | |
done | |
} | |
change_main_thread_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
echo $pid > "/dev/$3/$2/tasks" | |
done | |
} | |
change_task_affinity() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
taskset -p "$2" "$tid" | |
done | |
done | |
} | |
change_thread_affinity() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && taskset -p "$3" "$tid" | |
done | |
done | |
} | |
change_task_nice() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
renice -n "$2" -p "$tid" | |
done | |
done | |
} | |
change_thread_nice() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && renice -n "$3" -p "$temp_tid" | |
done | |
done | |
} | |
change_task_rt() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
chrt -f -p "$2" "$tid" | |
done | |
done | |
} | |
change_thread_rt() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && chrt -f -p "$3" "$tid" | |
done | |
done | |
} | |
change_task_high_prio() | |
{ | |
change_task_nice "$1" "-15" | |
} | |
change_thread_high_prio() | |
{ | |
change_thread_nice "$1" "$2" "-15" | |
} | |
unpin_thread() | |
{ | |
change_thread_cgroup "$1" "$2" "" "cpuset" | |
} | |
# Less power cores (avoiding big cluster wakeups) | |
pin_thread_on_pwr() | |
{ | |
change_thread_cgroup "$1" "$2" "background" "cpuset" | |
change_thread_affinity "$1" "$2" "0f" | |
} | |
# Power-efficient cores | |
pin_thread_on_mid() | |
{ | |
unpin_thread "$1" "$2" | |
change_thread_affinity "$1" "$2" "7f" | |
} | |
# Performance cores | |
pin_thread_on_perf() | |
{ | |
unpin_thread "$1" "$2" | |
change_thread_affinity "$1" "$2" "ff" | |
} | |
unpin_proc() | |
{ | |
change_task_cgroup "$1" "" "cpuset" | |
} | |
# Less power cores (avoiding big cluster wakeups) | |
pin_proc_on_pwr() | |
{ | |
change_task_cgroup "$1" "background" "cpuset" | |
change_task_affinity "$1" "0f" | |
} | |
# Power-efficient cores | |
pin_proc_on_mid() | |
{ | |
unpin_proc "$1" | |
change_task_affinity "$1" "7f" | |
} | |
# Performance cores | |
pin_proc_on_perf() | |
{ | |
unpin_proc "$1" | |
change_task_affinity "$1" "ff" | |
} | |
set_task_on_prior() | |
{ | |
pin_proc_on_perf "$1" | |
change_task_nice "$1" "-20" | |
} | |
set_thread_on_prior() | |
{ | |
pin_thread_on_perf "$1" "$2" | |
change_thread_nice "$1" "$2" "-20" | |
} | |
############################### | |
# AOSP Enhancer Functions | |
############################### | |
# Allow sched boosting on top-app tasks (line 185) | |
# Turn off printk logging and scheduler stats (line 186-188) | |
# Disable swap readahead for swap devices (line 189) | |
# Update /proc/stat every 20 sec to reduce jitter (line 190) | |
kernel_opt() | |
{ | |
write "/proc/sys/kernel/sched_min_task_util_for_colocation" "0" | |
write "/proc/sys/kernel/printk" "0 0 0 0" | |
write "/proc/sys/kernel/printk_devkmsg" "off" | |
write "/proc/sys/kernel/sched_schedstats" "0" | |
write "/proc/sys/vm/page-cluster" "0" | |
write "/proc/sys/vm/stat_interval" "20" | |
} | |
# Apply proper I/O scheduler, disable I/O stats, use group_idle in I/O scheduling and some misc. tweaks | |
io_opt() | |
{ | |
for queue in /sys/block/*/queue/; do | |
avail_scheds="$(cat "${queue}scheduler")" | |
for sched in cfq noop kyber bfq mq-deadline deadline none; do | |
if [[ "$avail_scheds" == *"$sched"* ]]; then | |
write "${queue}scheduler" "$sched" | |
break | |
fi | |
done | |
write "${queue}iostats" "0" | |
write "${queue}add_random" "0" | |
write "${queue}io_poll" "0" | |
write "${queue}iosched/group_idle" "1" | |
write "${queue}iosched/slice_idle" "0" | |
done | |
} | |
# Core android process (line 224-230) | |
# Unspecialized app pool (line 232) | |
# Important display & graphics related process (234-240) | |
# Core services container i.e activity manager, power manager, input reader & dispatcher etc. (242-249) | |
# Less necessary threads (line 244-245) | |
# Composer thread i.e Hardware compose vsync & uevent (line 251-255) | |
# Important manager/helper processes and cpu & gpu related workers & services (line 257-259) | |
# SystemUI (line 261-264) | |
# Home (line 266-269) | |
# Input Method Editor (line 271-274) | |
# Pin various init & hardware related processes in background to reduce unnecessary wakeup of big cluster (line 276) | |
# To remember: Don't modify binders state because they are inter-process communicators | |
priority_opt() | |
{ | |
for i in zygote; do | |
set_thread_on_prior "$i" "main" | |
pin_thread_on_pwr "$i" "HeapTaskDaemon" | |
pin_thread_on_pwr "$i" "Finalizer" | |
pin_thread_on_pwr "$i" "ReferenceQueue" | |
pin_thread_on_pwr "$i" "Jit" | |
done | |
set_thread_on_prior "usap" "usap" | |
for i in surfaceflinger; do | |
set_thread_on_prior "$i" "surfaceflinger" | |
set_thread_on_prior "$i" "sf" | |
set_thread_on_prior "$i" "ImageManager" | |
pin_thread_on_pwr "$i" "app" | |
pin_thread_on_pwr "$i" "DispSync" | |
done | |
for i in system_server; do | |
for thread in system_server ActivityManager PowerManager RenderThread Input android.io android.display android.ui android.anim; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit LazyTaskWriter GrallocUpload SyncManager SyncHandler; do pin_thread_on_pwr "$i" "$thread"; done | |
for thread in TaskSnapshot OomAdjuster StatsCompanion batterystats NetworkStats GraphicsStats; do | |
pin_thread_on_pwr "$i" "$thread" | |
change_thread_nice "$i" "$thread" "7" | |
done | |
done | |
for i in composer; do | |
set_thread_on_prior "$i" "composer" | |
set_thread_on_prior "$i" "hwc" | |
pin_thread_on_pwr "$i" "IdleInvalidator" | |
done | |
for i in khelper servicemanager kgsl_worker kgsl_devfreq_wq devfreq_wq gpuservice allocator; do set_task_on_prior "$i"; done | |
set_thread_on_prior "storaged" "storaged" | |
for i in com.android.systemui; do | |
for thread in systemui SysUi hwui recents.fg RenderThread Keyboard; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in $(home_pkgname_fetcher); do | |
for thread in launcher hwui RenderThread UiThread; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit GrallocUpload file-logger; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in $(ime_pkgname_fetcher); do | |
for thread in latin hwui RenderThread InputLogic ExecutorUtils; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in ueventd netd main_thread rx_thread dsp_send_thread hif_thread aal_sof kfps vdec_ipi_recv disp_feature pp_event crtc_event crtc_commit; do pin_proc_on_pwr "$i"; done | |
} | |
# Disable AI preload feature & various debugging services | |
system_settings_opt() | |
{ | |
[[ "$(settings get system ai_preload_user_state)" != "null" ]] && settings put system ai_preload_user_state 0 | |
settings put system anr_debugging_mechanism 0 | |
cmd looper_stats disable | |
cmd dropbox set-rate-limit 10000 | |
cmd appops set com.android.backupconfirm RUN_IN_BACKGROUND ignore | |
cmd appops set com.google.android.setupwizard RUN_IN_BACKGROUND ignore | |
cmd appops set com.android.printservice.recommendation RUN_IN_BACKGROUND ignore | |
cmd appops set com.android.onetimeinitializer RUN_IN_BACKGROUND ignore | |
cmd appops set com.qualcomm.qti.perfdump RUN_IN_BACKGROUND ignore | |
} | |
# Use profile-guided compilation to compile package of important system apps | |
dex_opt() | |
{ | |
for app_list in $(home_pkgname_fetcher) com.android.systemui com.android.settings; do | |
cmd package compile -m speed-profile "$app_list" | |
done | |
} | |
# Stop unnecessary daemons & services | |
misc_opt() | |
{ | |
for i in statsd traced cnss_diag vendor.cnss_diag tcpdump vendor.tcpdump ipacm-diag vendor.ipacm-diag ramdump subsystem_ramdump charge_logger; do | |
kill_svc "$i" | |
done | |
} | |
# Tweak zygote preforking, I/O readahead and debugging related props | |
prop_opt() | |
{ | |
resetprop persist.sys.usap_pool_enabled true | |
resetprop persist.device_config.runtime_native.usap_pool_enabled true | |
resetprop ro.iorapd.enable true | |
resetprop vidc.debug.level 0 | |
resetprop vendor.vidc.debug.level 0 | |
resetprop vendor.swvdec.log.level 0 | |
resetprop persist.radio.ramdump 0 | |
resetprop ro.lmk.debug false | |
resetprop ro.lmk.log_stats false | |
resetprop persist.sys.lmk.reportkills false | |
resetprop dalvik.vm.minidebuginfo false | |
resetprop dalvik.vm.dex2oat-minidebuginfo false | |
resetprop ro.statsd.enable false | |
resetprop persist.vendor.dpm.loglevel 0 | |
resetprop persist.vendor.dpmhalservice.loglevel 0 | |
resetprop persist.debug.sf.statistics 0 | |
resetprop debug.sf.enable_egl_image_tracker 0 | |
resetprop debug.mdpcomp.logs 0 | |
resetprop persist.ims.disableDebugLogs 1 | |
resetprop persist.ims.disableADBLogs 1 | |
resetprop persist.ims.disableQXDMLogs 1 | |
resetprop persist.ims.disableIMSLogs 1 | |
} | |
############################### | |
# Main | |
############################### | |
apply_all() | |
{ | |
sync | |
sync | |
sync | |
xlog -c | |
xlog -i "Started AOSP Enhancer Tweaks at $(date)" | |
xlog "" | |
kernel_opt | |
xlog -d "Applied universal kernel tweaks" | |
io_opt | |
xlog -d "Tweaked I/O parameters" | |
priority_opt | |
xlog -d "Optimized priority of system processes" | |
system_settings_opt | |
xlog -d "Enhanced settings provider tunables" | |
dex_opt | |
xlog -d "Compiled dalvik data of important system apps" | |
misc_opt | |
xlog -d "Applied misc. system tweaks" | |
prop_opt | |
xlog -d "Tweaked system properties" | |
xlog "" | |
xlog -i "Completed AOSP Enhancer Tweaks at $(date)" | |
} | |
apply_all &> /dev/null | |
# Exit as successful | |
exit 0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/system/bin/sh | |
# AOSP Enhancer | |
# Author: LOOPER (iamlooper @ github) | |
# Todo: If you do changes in code then make sure to change referring line numbers to code in comments respectively. | |
############################### | |
# Required Tools | |
############################### | |
# $1:filepath $2:value | |
write() | |
{ | |
for p in $1; do | |
[[ -f "$p" ]] && { | |
chmod +w "$p" 2> /dev/null | |
echo "$2" > "$p" | |
} | |
done | |
} | |
xlog() | |
{ | |
log_file="/storage/emulated/0/Android/aosp_enhancer.txt" | |
case "$1" in | |
"-i") shift && echo "[*] $@" >> "$log_file" ;; | |
"-e") shift && echo "[!] $@" >> "$log_file" ;; | |
"-d") shift && echo "[$(date | awk '{print $4}')] $@" >> "$log_file" ;; | |
"-c") rm -f "$log_file" ;; | |
*) shift && echo "$@" >> "$log_file" ;; | |
esac | |
} | |
home_pkgname_fetcher() | |
{ | |
echo "$(pm resolve-activity -a android.intent.action.MAIN -c android.intent.category.HOME | grep packageName | head -n 1 | cut -d= -f2)" | |
} | |
ime_pkgname_fetcher() | |
{ | |
echo "$(ime list | grep packageName | head -n 1 | cut -d= -f2)" | |
} | |
kill_svc() | |
{ | |
killall -q -9 "$1" | |
stop "$1" | |
} | |
pid_fetcher() | |
{ | |
echo "$(ps -Ao pid,args | grep -i -E "$1" | awk '{print $1}')" | |
} | |
change_task_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
echo "$tid" > "/dev/$3/$2/tasks" | |
done | |
done | |
} | |
change_proc_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
echo $pid > "/dev/$3/$2/cgroup.procs" | |
done | |
} | |
change_thread_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && echo "$tid" > "/dev/$4/$3/tasks" | |
done | |
done | |
} | |
change_main_thread_cgroup() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
echo $pid > "/dev/$3/$2/tasks" | |
done | |
} | |
change_task_affinity() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
taskset -p "$2" "$tid" | |
done | |
done | |
} | |
change_thread_affinity() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && taskset -p "$3" "$tid" | |
done | |
done | |
} | |
change_task_nice() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
renice -n "$2" -p "$tid" | |
done | |
done | |
} | |
change_thread_nice() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && renice -n "$3" -p "$temp_tid" | |
done | |
done | |
} | |
change_task_rt() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
chrt -f -p "$2" "$tid" | |
done | |
done | |
} | |
change_thread_rt() | |
{ | |
for pid in $(pid_fetcher "$1"); do | |
for tid in $(ls "/proc/$pid/task/"); do | |
comm="$(cat "/proc/$pid/task/$tid/comm")" | |
[[ "$(echo "$comm" | grep -i -E "$2")" != "" ]] && chrt -f -p "$3" "$tid" | |
done | |
done | |
} | |
change_task_high_prio() | |
{ | |
change_task_nice "$1" "-15" | |
} | |
change_thread_high_prio() | |
{ | |
change_thread_nice "$1" "$2" "-15" | |
} | |
unpin_thread() | |
{ | |
change_thread_cgroup "$1" "$2" "" "cpuset" | |
} | |
# Less power cores (avoiding big cluster wakeups) | |
pin_thread_on_pwr() | |
{ | |
change_thread_cgroup "$1" "$2" "background" "cpuset" | |
change_thread_affinity "$1" "$2" "0f" | |
} | |
# Power-efficient cores | |
pin_thread_on_mid() | |
{ | |
unpin_thread "$1" "$2" | |
change_thread_affinity "$1" "$2" "7f" | |
} | |
# Performance cores | |
pin_thread_on_perf() | |
{ | |
unpin_thread "$1" "$2" | |
change_thread_affinity "$1" "$2" "ff" | |
} | |
unpin_proc() | |
{ | |
change_task_cgroup "$1" "" "cpuset" | |
} | |
# Less power cores (avoiding big cluster wakeups) | |
pin_proc_on_pwr() | |
{ | |
change_task_cgroup "$1" "background" "cpuset" | |
change_task_affinity "$1" "0f" | |
} | |
# Power-efficient cores | |
pin_proc_on_mid() | |
{ | |
unpin_proc "$1" | |
change_task_affinity "$1" "7f" | |
} | |
# Performance cores | |
pin_proc_on_perf() | |
{ | |
unpin_proc "$1" | |
change_task_affinity "$1" "ff" | |
} | |
set_task_on_prior() | |
{ | |
pin_proc_on_perf "$1" | |
change_task_nice "$1" "-20" | |
} | |
set_thread_on_prior() | |
{ | |
pin_thread_on_perf "$1" "$2" | |
change_thread_nice "$1" "$2" "-20" | |
} | |
############################### | |
# AOSP Enhancer Functions | |
############################### | |
# Allow sched boosting on top-app tasks (line 185) | |
# Turn off printk logging and scheduler stats (line 186-188) | |
# Disable swap readahead for swap devices (line 189) | |
# Update /proc/stat every 20 sec to reduce jitter (line 190) | |
kernel_opt() | |
{ | |
write "/proc/sys/kernel/sched_min_task_util_for_colocation" "0" | |
write "/proc/sys/kernel/printk" "0 0 0 0" | |
write "/proc/sys/kernel/printk_devkmsg" "off" | |
write "/proc/sys/kernel/sched_schedstats" "0" | |
write "/proc/sys/vm/page-cluster" "0" | |
write "/proc/sys/vm/stat_interval" "20" | |
} | |
# Apply proper I/O scheduler, disable I/O stats, use group_idle in I/O scheduling and some misc. tweaks | |
io_opt() | |
{ | |
for queue in /sys/block/*/queue/; do | |
avail_scheds="$(cat "${queue}scheduler")" | |
for sched in cfq noop kyber bfq mq-deadline deadline none; do | |
if [[ "$avail_scheds" == *"$sched"* ]]; then | |
write "${queue}scheduler" "$sched" | |
break | |
fi | |
done | |
write "${queue}iostats" "0" | |
write "${queue}add_random" "0" | |
write "${queue}io_poll" "0" | |
write "${queue}iosched/group_idle" "1" | |
write "${queue}iosched/slice_idle" "0" | |
done | |
} | |
# Core android process (line 224-230) | |
# Unspecialized app pool (line 232) | |
# Important display & graphics related process (234-240) | |
# Core services container i.e activity manager, power manager, input reader & dispatcher etc. (242-249) | |
# Less necessary threads (line 244-245) | |
# Composer thread i.e Hardware compose vsync & uevent (line 251-255) | |
# Important manager/helper processes and cpu & gpu related workers & services (line 257-259) | |
# SystemUI (line 261-264) | |
# Home (line 266-269) | |
# Input Method Editor (line 271-274) | |
# Pin various init & hardware related processes in background to reduce unnecessary wakeup of big cluster (line 276) | |
# To remember: Don't modify binders state because they are inter-process communicators | |
priority_opt() | |
{ | |
for i in zygote; do | |
set_thread_on_prior "$i" "main" | |
pin_thread_on_pwr "$i" "HeapTaskDaemon" | |
pin_thread_on_pwr "$i" "Finalizer" | |
pin_thread_on_pwr "$i" "ReferenceQueue" | |
pin_thread_on_pwr "$i" "Jit" | |
done | |
set_thread_on_prior "usap" "usap" | |
for i in surfaceflinger; do | |
set_thread_on_prior "$i" "surfaceflinger" | |
set_thread_on_prior "$i" "sf" | |
set_thread_on_prior "$i" "ImageManager" | |
pin_thread_on_pwr "$i" "app" | |
pin_thread_on_pwr "$i" "DispSync" | |
done | |
for i in system_server; do | |
for thread in system_server ActivityManager PowerManager RenderThread Input android.io android.display android.ui android.anim; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit LazyTaskWriter GrallocUpload SyncManager SyncHandler; do pin_thread_on_pwr "$i" "$thread"; done | |
for thread in TaskSnapshot OomAdjuster StatsCompanion batterystats NetworkStats GraphicsStats; do | |
pin_thread_on_pwr "$i" "$thread" | |
change_thread_nice "$i" "$thread" "7" | |
done | |
done | |
for i in composer; do | |
set_thread_on_prior "$i" "composer" | |
set_thread_on_prior "$i" "hwc" | |
pin_thread_on_pwr "$i" "IdleInvalidator" | |
done | |
for i in khelper servicemanager kgsl_worker kgsl_devfreq_wq devfreq_wq gpuservice allocator; do set_task_on_prior "$i"; done | |
set_thread_on_prior "storaged" "storaged" | |
for i in com.android.systemui; do | |
for thread in systemui SysUi hwui recents.fg RenderThread Keyboard; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in $(home_pkgname_fetcher); do | |
for thread in launcher hwui RenderThread UiThread; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit GrallocUpload file-logger; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in $(ime_pkgname_fetcher); do | |
for thread in latin hwui RenderThread InputLogic ExecutorUtils; do set_thread_on_prior "$i" "$thread"; done | |
for thread in HeapTaskDaemon Finalizer ReferenceQueue Jit; do pin_thread_on_pwr "$i" "$thread"; done | |
done | |
for i in ueventd netd main_thread rx_thread dsp_send_thread hif_thread aal_sof kfps vdec_ipi_recv disp_feature pp_event crtc_event crtc_commit; do pin_proc_on_pwr "$i"; done | |
} | |
# Disable AI preload feature & various debugging services | |
system_settings_opt() | |
{ | |
[[ "$(settings get system ai_preload_user_state)" != "null" ]] && settings put system ai_preload_user_state 0 | |
settings put system anr_debugging_mechanism 0 | |
cmd looper_stats disable | |
cmd dropbox set-rate-limit 10000 | |
cmd appops set com.android.backupconfirm RUN_IN_BACKGROUND ignore | |
cmd appops set com.google.android.setupwizard RUN_IN_BACKGROUND ignore | |
cmd appops set com.android.printservice.recommendation RUN_IN_BACKGROUND ignore | |
cmd appops set com.android.onetimeinitializer RUN_IN_BACKGROUND ignore | |
cmd appops set com.qualcomm.qti.perfdump RUN_IN_BACKGROUND ignore | |
} | |
# Use profile-guided compilation to compile package of important system apps | |
dex_opt() | |
{ | |
for app_list in $(home_pkgname_fetcher) com.android.systemui com.android.settings; do | |
cmd package compile -m speed-profile "$app_list" | |
done | |
} | |
# Stop unnecessary daemons & services | |
misc_opt() | |
{ | |
for i in statsd traced cnss_diag vendor.cnss_diag tcpdump vendor.tcpdump ipacm-diag vendor.ipacm-diag ramdump subsystem_ramdump charge_logger; do | |
kill_svc "$i" | |
done | |
} | |
# Tweak zygote preforking, I/O readahead and debugging related props | |
prop_opt() | |
{ | |
resetprop persist.sys.usap_pool_enabled true | |
resetprop persist.device_config.runtime_native.usap_pool_enabled true | |
resetprop ro.iorapd.enable true | |
resetprop vidc.debug.level 0 | |
resetprop vendor.vidc.debug.level 0 | |
resetprop vendor.swvdec.log.level 0 | |
resetprop persist.radio.ramdump 0 | |
resetprop ro.lmk.debug false | |
resetprop ro.lmk.log_stats false | |
resetprop persist.sys.lmk.reportkills false | |
resetprop dalvik.vm.minidebuginfo false | |
resetprop dalvik.vm.dex2oat-minidebuginfo false | |
resetprop ro.statsd.enable false | |
resetprop persist.vendor.dpm.loglevel 0 | |
resetprop persist.vendor.dpmhalservice.loglevel 0 | |
resetprop persist.debug.sf.statistics 0 | |
resetprop debug.sf.enable_egl_image_tracker 0 | |
resetprop debug.mdpcomp.logs 0 | |
resetprop persist.ims.disableDebugLogs 1 | |
resetprop persist.ims.disableADBLogs 1 | |
resetprop persist.ims.disableQXDMLogs 1 | |
resetprop persist.ims.disableIMSLogs 1 | |
} | |
############################### | |
# Main | |
############################### | |
apply_all() | |
{ | |
sync | |
sync | |
sync | |
xlog -c | |
xlog -i "Started AOSP Enhancer Tweaks at $(date)" | |
xlog "" | |
kernel_opt | |
xlog -d "Applied universal kernel tweaks" | |
io_opt | |
xlog -d "Tweaked I/O parameters" | |
priority_opt | |
xlog -d "Optimized priority of system processes" | |
system_settings_opt | |
xlog -d "Enhanced settings provider tunables" | |
dex_opt | |
xlog -d "Compiled dalvik data of important system apps" | |
misc_opt | |
xlog -d "Applied misc. system tweaks" | |
prop_opt | |
xlog -d "Tweaked system properties" | |
xlog "" | |
xlog -i "Completed AOSP Enhancer Tweaks at $(date)" | |
} | |
apply_all &> /dev/null | |
# Exit as successful | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment