13 ago 2014

Android tuning for newbies | vm - cache - swap - ram - battery - network - ping

Muchos saben, otros no (siempre inicio asi mis post, deberia cambiar no?) que no soy fan de Android sino todo lo contrario, pero cuando veo algo que me gusta tanto como el kernel linux.... me tiento y bueno, aqui el post
Hace poco tuve la oportunidad de tocar una tablet generica china, que obviamente, no viene con nada optimizado, ojo, las otras tampoco (Acer y otras marcas), pero, a lo que voy es que tampoco se consiguen los famosos CM (Cyanogenmod) para estas chinas, si pude conseguir la ROM asi que al menos se puede modificar, para el que posea su ROM las cosas desde alli lo hará, explicaré los dos metodos.

En Linux, tenemos un arma poderosa, llamada sysctl, echo y cat.... para cambiar valores del sistema, que nos pueden dar mejoras o no en muchisimos aspectos.

En viejas versiones de Android por ejemplo, el firewall es nulo, respondiendo nuestro tablet o celular a los ping, siendo vulnerable en una red wifi compartida a apps como NetScanner, pero eso, puede cambiarse, solo siendo root y usando sysctl o bien echo de forma mas rustica.

Primero que nada, paso de explicar lo de root, solo les dire que usen Google, existe un .exe que corre en Windows que en menos de 1 minuto nos hace root, llamado Vroot, es chino, y luego se puede cambiar el mismo a español usando este tutorial: https://www.youtube.com/watch?v=38niNAwFP-o para que nos quede con supersu en nuestro idioma, que vendria a ser como el sudo de Linux.

Ahora, a lo que nos compete. Para los que posean la ROM en .zip de su Android, es mas simple, solo deben abrirla, buscar /system y dentro de el /etc y dentro de el, si no existe, crearlo, si existe añadirle lineas al archivo sysctl.conf del codigo que veran al final del post.

Luego en su Android rooteado, con acceso root, hacen esto en la ROM, los que deseen modificarla antes de reflashear con estos cambios

1.- cd /system/etc/init.d
2.- pegan este codigo

#!/system/bin/sh
sysctl -p

Guarden el script como 10sysctl

Para los que no tiene la posibilidad de modificar la ROM.zip o no quieren reflashear su tablet o celular, solamente deben seguir estos pasos, siendo ROOT previamente: http://www.technohunk.com/2013/02/how-to-execute-a-command-at-boot-android/

Editores en terminal: ojo que solo van a tener vi, ni nano ni nada mas como VIM, con "i" insertan, con dd borran linea, con Esc van al modo comando, el cual poniendo :wq sale escribiendo y para salir usan :q! que sale sin escribir cambios. Borran con backspace o bien con x sobre la letra, usando el modo comando, cuando esta con Esc.


Al final de este archivo, pone algo como ############ edicion personal si lo rompo lo pago ######


Y pegan esto:

sysctl -w kernel.randomize_va_space=0
sysctl -w vm.swappiness=1
sysctl -w kernel.panic=5
sysctl -w kernel.panic_on_oops=1
sysctl -w kernel.sched_child_runs_first=0
sysctl -w vm.dirty_ratio=80
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.page-cluster=3
sysctl -w vm.drop_caches=3
sysctl -w vm.min_free_kbytes=3072
sysctl -w vm.panic_on_oom=0
sysctl -w vm.oom_kill_allocating_task=0
sysctl -w vm.vfs_cache_pressure=10
sysctl -w vm.min_free_order_shift=4
sysctl -w vm.laptop_mode=0
sysctl -w vm.block_dump=0
sysctl -w net.ipv4.icmp_echo_ignore_all=1


Salvan  reinician, si todo salio bien, mediante ssh o la terminal van a ver que al poner sysctl -a |grep -i swap el swappiness va a estar en 1 y no en 60 como suele venir, motivo por el cual, las tablet o celulares con 512 de RAM, al usar apps pesadas como Facebook terminan cacheando en la SD interna o externa lo que vuelve todo misteriosamente lento, bueno, con este seteo van a usar hasta el ultimo respiro de memoria RAM

Para los que editen la ROM, quiten los sysctl -w del codigo, dado que la sintaxis es la misma que en Linux, porque, el kernel al menos es Linux

Si quieren saber que hace cada valor, lo pegan en Google y les va a decir, esta lleno de documentacion de kernel, aca lo que mas tocamos es el subsistema vm.

Basicamente esto lo que hace es usar menos bateria, cachear mas las cosas, tocar menos la memoria NAND, no usar swap a menos que sea necesario y no como viene al 60%, no responder pings y si quieren o alguno lo pide, o lo penso, si, se puede usar iptables, asi que se puede armar un firewall o bien usar el celular o tablet como router o vaya a saber que.... con iptables todo es posible.

Para los que no entiendan porque esto sirve de algo, los comento que Android en realidad es un framework de JAVA corriendo aplicaciones, sobre una JVM llamada Dalvik, la cual para hacer mas veloz lo lento que ya es JAVA, delega ciertas cosas al kernel Linux, como el manejo de RAM, caches y demas, con lo cual, al tener acceso root, podemos modificar parametros de Linux, y en consecuencia, casi todo el comportamiento del sistema interno.

PD: No veo la hora de tener un puto tizen para usar comandos como rpm y poder meter lo que se me cante!!, se aceptan donaciones.

No hay comentarios: