├── META-INF └── com │ └── google │ └── android │ ├── updater-script │ └── update-binary ├── system ├── vendor │ └── etc │ │ └── msm_irqbalance.conf └── bin │ └── irqirq ├── service.sh ├── post-fs-data.sh ├── module.prop ├── utils.sh ├── README.md └── customize.sh /META-INF/com/google/android/updater-script: -------------------------------------------------------------------------------- 1 | #MAGISK 2 | -------------------------------------------------------------------------------- /system/vendor/etc/msm_irqbalance.conf: -------------------------------------------------------------------------------- 1 | Tendre sexo con tu hermana si copias esto. 2 | I will have sex with your sister if you copy this. -------------------------------------------------------------------------------- /service.sh: -------------------------------------------------------------------------------- 1 | sleep 40 2 | 3 | #Nice 4 | renice -n -10 -p $(pidof msm_irqbalance) 5 | renice -n -10 -p $(pgrep msm_irqbalance) 6 | 7 | exit 0 8 | -------------------------------------------------------------------------------- /post-fs-data.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | MODDIR=${0%/*} 3 | 4 | . $MODDIR/utils.sh 5 | 6 | mask_val "7" /proc/irq/ZZZ/smp_affinity_list 7 | mask_val "6" /proc/irq/XXX/smp_affinity_list 8 | 9 | exit 0 10 | -------------------------------------------------------------------------------- /module.prop: -------------------------------------------------------------------------------- 1 | id=irqbalance 2 | name=IRQ Balancer Configuration+ 3 | version=Universal 4 | versionCode=1 5 | author=@LeanHijosdesusMadres - @EmanuelCN0 6 | description=This module modifies the msm_irqbalance.conf file and will set kgsl and msm_drm to different irqs to improve performance and latency. 7 | support=https://t.me/modulostk 8 | -------------------------------------------------------------------------------- /utils.sh: -------------------------------------------------------------------------------- 1 | mkdir -p /dev/mount_masks 2 | 3 | # $1:value $2:path 4 | mask_val() { 5 | for file in $(find $2); do 6 | lock_val "$1" "$file" 7 | 8 | TIME="$(date "+%s%N")" 9 | echo "$1" >"/dev/mount_masks/mount_mask_$TIME" 10 | mount --bind "/dev/mount_masks/mount_mask_$TIME" "$file" 11 | restorecon -R -F "$file" > /dev/null 2>&1 12 | done 13 | } 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IRQ Balancer Configuration+ 2 | 3 | ![](https://i.ibb.co/kyK9jhg/1718764307752.png) 4 | 5 | ## Description 6 | This module modifies the msm_irqbalance.conf file and will set kgsl and msm_drm to different irqs to improve performance and latency. 7 | 8 | ## Details: 9 | - Automatic version that reads and corrects the IRQs from the msm_irqbalance.conf file 10 | - Universal and only for AOSP 11 | 12 | ## Support 13 | - [GitHub](https://github.com/LeanxModulostk/IRQ-Balancer-Configuration) 14 | - [Telegram Channel](https://t.me/modulostk) 15 | 16 | ## Special Thanks 17 | 18 | • [Emanuel](https://t.me/EmanuelCN0) 19 | 20 | • [Zackptg5 for the MMT-Ex template](https://github.com/Zackptg5) 21 | 22 | • [Topjohnwu for making Magisk](https://github.com/topjohnwu) 23 | -------------------------------------------------------------------------------- /customize.sh: -------------------------------------------------------------------------------- 1 | ui_print "" 2 | ui_print "██╗██████╗░░██████╗░" 3 | ui_print "██║██╔══██╗██╔═══██╗" 4 | ui_print "██║██████╔╝██║██╗██║" 5 | ui_print "██║██╔══██╗╚██████╔╝" 6 | ui_print "██║██║░░██║░╚═██╔═╝░" 7 | ui_print "╚═╝╚═╝░░╚═╝░░░╚═╝░░░" 8 | ui_print "" 9 | ui_print "██████╗░░█████╗░██╗░░░░░░█████╗░███╗░░██╗░█████╗░███████╗██████╗░" 10 | ui_print "██╔══██╗██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗" 11 | ui_print "██████╦╝███████║██║░░░░░███████║██╔██╗██║██║░░╚═╝█████╗░░██████╔╝" 12 | ui_print "██╔══██╗██╔══██║██║░░░░░██╔══██║██║╚████║██║░░██╗██╔══╝░░██╔══██╗" 13 | ui_print "██████╦╝██║░░██║███████╗██║░░██║██║░╚███║╚█████╔╝███████╗██║░░██║" 14 | ui_print "╚═════╝░╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝░╚════╝░╚══════╝╚═╝░░╚═╝" 15 | ui_print "" 16 | ui_print "░█████╗░░█████╗░███╗░░██╗███████╗██╗░██████╗░██╗░░░██╗██████╗░░█████╗░████████╗██╗░█████╗░███╗░░██╗░░░░░░░" 17 | ui_print "██╔══██╗██╔══██╗████╗░██║██╔════╝██║██╔════╝░██║░░░██║██╔══██╗██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║░░██╗░░" 18 | ui_print "██║░░╚═╝██║░░██║██╔██╗██║█████╗░░██║██║░░██╗░██║░░░██║██████╔╝███████║░░░██║░░░██║██║░░██║██╔██╗██║██████╗" 19 | ui_print "██║░░██╗██║░░██║██║╚████║██╔══╝░░██║██║░░╚██╗██║░░░██║██╔══██╗██╔══██║░░░██║░░░██║██║░░██║██║╚████║╚═██╔═╝" 20 | ui_print "╚█████╔╝╚█████╔╝██║░╚███║██║░░░░░██║╚██████╔╝╚██████╔╝██║░░██║██║░░██║░░░██║░░░██║╚█████╔╝██║░╚███║░░╚═╝░░" 21 | ui_print "░╚════╝░░╚════╝░╚═╝░░╚══╝╚═╝░░░░░╚═╝░╚═════╝░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝░░░░░░░" 22 | ui_print "" 23 | su -c /data/adb/modules_update/irqbalance/system/bin/irqirq 24 | rm -r /data/adb/modules_update/irqbalance/system/bin 25 | ui_print "◉ El archivo msm_irqbalance.conf se ha modificado con éxito." 26 | ui_print "" 27 | ui_print "☬ @ModulOStk" 28 | ui_print "" -------------------------------------------------------------------------------- /system/bin/irqirq: -------------------------------------------------------------------------------- 1 | # Palabras clave a buscar en /proc/interrupts 2 | keywords=("arch_timer" "arm-pmu" "arch_mem_timer" "kgsl*" "msm_drm") 3 | 4 | # Leer el contenido de /proc/interrupts 5 | interrupt_lines=$(cat /proc/interrupts) 6 | 7 | # Extraer los números de interrupción 8 | interrupt_numbers="" 9 | for keyword in "${keywords[@]}"; do 10 | line=$(echo "$interrupt_lines" | grep -E "$keyword") 11 | if [ -n "$line" ]; then 12 | interrupt_number=$(echo "$line" | awk '{print $1}' | tr -d ':') 13 | if [ -n "$interrupt_numbers" ]; then 14 | interrupt_numbers="$interrupt_numbers,$interrupt_number" 15 | else 16 | interrupt_numbers="$interrupt_number" 17 | fi 18 | fi 19 | done 20 | 21 | # Generar la nueva configuración 22 | new_config="PRIO=1,1,1,0,0,0,0,0 23 | #arch_timer, arm-pmu, arch_mem_timer, kgsl-3d0, msm_drm 24 | IGNORED_IRQ=$interrupt_numbers" 25 | 26 | # Escribir la nueva configuración en el archivo msm_irqbalance.conf 27 | echo "$new_config" > "/data/adb/modules_update/irqbalance/system/vendor/etc/msm_irqbalance.conf" 28 | 29 | # Palabras clave a buscar en /proc/interrupts 30 | keywords=("kgsl*" "msm_drm") 31 | 32 | # Leer el contenido de /proc/interrupts 33 | interrupt_lines=$(cat /proc/interrupts) 34 | 35 | # Extraer los números de interrupción 36 | kgsl_irq="" 37 | msm_drm_irq="" 38 | for keyword in "${keywords[@]}"; do 39 | line=$(echo "$interrupt_lines" | grep -E "$keyword") 40 | if [ -n "$line" ]; then 41 | if [ "$keyword" = "kgsl*" ]; then 42 | kgsl_irq=$(echo "$line" | awk '{print $1}' | tr -d ':') 43 | elif [ "$keyword" = "msm_drm" ]; then 44 | msm_drm_irq=$(echo "$line" | awk '{print $1}' | tr -d ':') 45 | fi 46 | fi 47 | done 48 | 49 | # Modificar el archivo service.sh 50 | sed -i "s/XXX/$kgsl_irq/g" /data/adb/modules_update/irqbalance/post-fs-data.sh 51 | sed -i "s/ZZZ/$msm_drm_irq/g" /data/adb/modules_update/irqbalance/post-fs-data.sh 52 | -------------------------------------------------------------------------------- /META-INF/com/google/android/update-binary: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | 3 | ################# 4 | # Initialization 5 | ################# 6 | 7 | umask 022 8 | 9 | # echo before loading util_functions 10 | ui_print() { echo "$1"; } 11 | 12 | require_new_magisk() { 13 | ui_print "*******************************" 14 | ui_print " Please install Magisk v20.0+! " 15 | ui_print "*******************************" 16 | exit 1 17 | } 18 | 19 | ######################### 20 | # Load util_functions.sh 21 | ######################### 22 | 23 | OUTFD=$2 24 | ZIPFILE=$3 25 | 26 | mount /data 2>/dev/null 27 | 28 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk 29 | . /data/adb/magisk/util_functions.sh 30 | [ $MAGISK_VER_CODE -lt 20000 ] && require_new_magisk 31 | 32 | if [ $MAGISK_VER_CODE -ge 20400 ]; then 33 | # New Magisk have complete installation logic within util_functions.sh 34 | install_module 35 | exit 0 36 | fi 37 | 38 | ################# 39 | # Legacy Support 40 | ################# 41 | 42 | TMPDIR=/dev/tmp 43 | PERSISTDIR=/sbin/.magisk/mirror/persist 44 | 45 | is_legacy_script() { 46 | unzip -l "$ZIPFILE" install.sh | grep -q install.sh 47 | return $? 48 | } 49 | 50 | print_modname() { 51 | local authlen len namelen pounds 52 | namelen=`echo -n $MODNAME | wc -c` 53 | authlen=$((`echo -n $MODAUTH | wc -c` + 3)) 54 | [ $namelen -gt $authlen ] && len=$namelen || len=$authlen 55 | len=$((len + 2)) 56 | pounds=$(printf "%${len}s" | tr ' ' '*') 57 | ui_print "$pounds" 58 | ui_print " $MODNAME " 59 | ui_print " by $MODAUTH " 60 | ui_print "$pounds" 61 | ui_print "*******************" 62 | ui_print " Powered by Magisk " 63 | ui_print "*******************" 64 | } 65 | 66 | # Override abort as old scripts have some issues 67 | abort() { 68 | ui_print "$1" 69 | $BOOTMODE || recovery_cleanup 70 | [ -n $MODPATH ] && rm -rf $MODPATH 71 | rm -rf $TMPDIR 72 | exit 1 73 | } 74 | 75 | rm -rf $TMPDIR 2>/dev/null 76 | mkdir -p $TMPDIR 77 | 78 | # Preperation for flashable zips 79 | setup_flashable 80 | 81 | # Mount partitions 82 | mount_partitions 83 | 84 | # Detect version and architecture 85 | api_level_arch_detect 86 | 87 | # Setup busybox and binaries 88 | $BOOTMODE && boot_actions || recovery_actions 89 | 90 | ############## 91 | # Preparation 92 | ############## 93 | 94 | # Extract prop file 95 | unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2 96 | [ ! -f $TMPDIR/module.prop ] && abort "! Unable to extract zip file!" 97 | 98 | $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules 99 | MODULEROOT=$NVBASE/$MODDIRNAME 100 | MODID=`grep_prop id $TMPDIR/module.prop` 101 | MODNAME=`grep_prop name $TMPDIR/module.prop` 102 | MODAUTH=`grep_prop author $TMPDIR/module.prop` 103 | MODPATH=$MODULEROOT/$MODID 104 | 105 | # Create mod paths 106 | rm -rf $MODPATH 2>/dev/null 107 | mkdir -p $MODPATH 108 | 109 | ########## 110 | # Install 111 | ########## 112 | 113 | if is_legacy_script; then 114 | unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 115 | 116 | # Load install script 117 | . $TMPDIR/install.sh 118 | 119 | # Callbacks 120 | print_modname 121 | on_install 122 | 123 | # Custom uninstaller 124 | [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh 125 | 126 | # Skip mount 127 | $SKIPMOUNT && touch $MODPATH/skip_mount 128 | 129 | # prop file 130 | $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop 131 | 132 | # Module info 133 | cp -af $TMPDIR/module.prop $MODPATH/module.prop 134 | 135 | # post-fs-data scripts 136 | $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh 137 | 138 | # service scripts 139 | $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh 140 | 141 | ui_print "- Setting permissions" 142 | set_permissions 143 | else 144 | print_modname 145 | 146 | unzip -o "$ZIPFILE" customize.sh -d $MODPATH >&2 147 | 148 | if ! grep -q '^SKIPUNZIP=1$' $MODPATH/customize.sh 2>/dev/null; then 149 | ui_print "- Extracting module files" 150 | unzip -o "$ZIPFILE" -x 'META-INF/*' -d $MODPATH >&2 151 | 152 | # Default permissions 153 | set_perm_recursive $MODPATH 0 0 0755 0644 154 | fi 155 | 156 | # Load customization script 157 | [ -f $MODPATH/customize.sh ] && . $MODPATH/customize.sh 158 | fi 159 | 160 | # Handle replace folders 161 | for TARGET in $REPLACE; do 162 | ui_print "- Replace target: $TARGET" 163 | mktouch $MODPATH$TARGET/.replace 164 | done 165 | 166 | if $BOOTMODE; then 167 | # Update info for Magisk Manager 168 | mktouch $NVBASE/modules/$MODID/update 169 | cp -af $MODPATH/module.prop $NVBASE/modules/$MODID/module.prop 170 | fi 171 | 172 | # Copy over custom sepolicy rules 173 | if [ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]; then 174 | ui_print "- Installing custom sepolicy patch" 175 | # Remove old recovery logs (which may be filling partition) to make room 176 | rm -f $PERSISTDIR/cache/recovery/* 177 | PERSISTMOD=$PERSISTDIR/magisk/$MODID 178 | mkdir -p $PERSISTMOD 179 | cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule || abort "! Insufficient partition size" 180 | fi 181 | 182 | # Remove stuffs that don't belong to modules 183 | rm -rf \ 184 | $MODPATH/system/placeholder $MODPATH/customize.sh \ 185 | $MODPATH/README.md $MODPATH/.git* 2>/dev/null 186 | 187 | ############# 188 | # Finalizing 189 | ############# 190 | 191 | cd / 192 | $BOOTMODE || recovery_cleanup 193 | rm -rf $TMPDIR 194 | 195 | ui_print "- Done" 196 | exit 0 197 | --------------------------------------------------------------------------------