Allá por el 2009, los primeros Smartphones Android venían con 512 MB. 10 años más tarde, hay modelos con 12GB.

Evolución, Ley de Moore, Apps más complejas, necesidad del mercado, guerra de Specs. Existen muchas formas de explicar cómo aumentó la cantidad de memoria en los Smartphones y cómo lo sigue haciendo casi de manera exponencial. Para 2014, la mayoría de los dispositivos de alta gama tenían 3 GB de RAM. Ya durante 2016 y 2017, los 4 GB se convirtieron en el estándar de facto.

Hoy, no es difícil encontrar Smartphones de gama media con 6GB y muchos de alta gama ya cuentan con 8GB de RAM. Incluso hay modelos con 12GB. Una bestialidad. Lo más curioso es que hoy, donde muchas PC’s en el mundo funcionan y ejecutan aplicaciones complejas cómo Adobe Premiere o Photoshop con 8GB de RAM, vemos cómo hay Smarthones con la misma cantidad de memoria pero que, por lo general, no ejecutan aplicaciones tan pesadas. Así que nos preguntamos… ¿cuánta RAM es suficiente y cuánta es demasiada?

Quizás, la respuesta, está en conocer cómo Android maneja la memoria RAM.

Cuando ejecutamos una nueva aplicación en Android, el kernel de Linux crea un nuevo proceso. Un proceso es una unidad de ejecución con su propio espacio de direcciones virtuales (que se asigna a la memoria física). El kernel de Linux administra los recursos necesarios para el proceso, incluido el tiempo de ejecución en la CPU, la entrada y salida de datos (a través de la red o a través del sistema de archivos) y la memoria física (RAM).

Cuando hay una abundancia de recursos, el trabajo del kernel es fácil. Si el proceso necesita más tiempo de CPU y la CPU está inactiva, el kernel puede otorgar fácilmente al proceso más tiempo de ejecución.

Sin embargo, cuando los recursos escasean, las cosas se complican. Con el tiempo de CPU y los de I/O (también conocidos cómo entrada/salida), la mayor víctima de la sobrecarga es el rendimiento. Si la CPU está ocupada, el trabajo en cuestión todavía se hará, pero no tan rápido. Con la memoria RAM es diferente. Cuando el dispositivo no tiene más memoria RAM disponible, deberá esperar más tiempo  hasta que se libere más RAM. Aquí es donde el kernel debe ser proactivo para recuperar algo de RAM para el proceso que se está ejecutando.

Linux y Android manejan esto de dos maneras. Primero, existe la idea de intercambiar usando zRAM (básicamente es una forma de compresión de memoria sobre la misma memoria RAM). Android comprime la memoria y la escribe de nuevo en la memoria, pero en la sección reservada para zRAM. Si asumimos una relación de compresión del 50 por ciento, 128KB de RAM se pueden reducir a 64KB, liberando 64KB. Esto es equivalente a intercambiar memoria con el disco (Swap). La memoria comprimida no se puede leer directamente, por lo que si es necesario, se debe descomprimir y volver a escribir. Esto genera una pérdida de performance ya que la CPU pierde ciclos haciendo este trabajo.

La otra es el famoso intercambio o Swap. El intercambio es una idea que Linux utiliza en PC y servidores: Cuando no hay suficiente memoria, las páginas de memoria más antiguas y menos utilizadas se escriben en el disco y la memoria que ocupan queda disponible para otros procesos. Si esa memoria intercambiada se necesita más tarde, los datos guardados se leen del disco y se guardan en la memoria (intercambiada), donde se puede usar.

Cuando no hay más RAM disponible, ya sea zRam o con memoria de Intercambio, el kernel necesita ser más agresivo y comenzar los procesos de eliminación. Esta es una situación extrema para el núcleo ya que debe matar un proceso existente para dejar espacio para otro proceso. La clave acá es que la solicitud de memoria actual probablemente provenga de la aplicación de primer plano que está en uso. El núcleo aplica varias pruebas y verifica y determina qué procesos pueden eliminarse para liberar memoria. Si iniciaste Candy Crush hace tres días pero nunca volviste, entonces el kernel puede asumir que no vas a volver a usarlo y lo mata. Esto libera memoria y permite que la aplicación actualmente en ejecución obtenga los recursos necesarios para correr.

Aunque este sistema parece extremadamente jodido, la realidad es que todo Android se diseñó y creció de esta manera. El OS y las aplicaciones mantienen «conversaciones» donde se les avisa que serán eliminadas y se moverán a través de diferentes estados, permitiéndoles guardar su información de estado actual. Cuando se vuelven a cargar, estas aplicaciones solo leen la última información de estado y continúan desde donde las dejaron.

Aquí estamos ante la primera conclusión: no limpies de memoria el OS todo el tiempo, ya que lo que vas a hacer es liberar de RAM a un dispositivo que quizás tenga disponible de sobra, y vas a perder tiempo esperando que las aplicaciones inicien y carguen el último estado.

El famoso punto dulce de memoria RAM

Existe un sensacional concepto creado por Gary Sims (y del cual robé la mayor cantidad de este artículo) y que engloba el uso diario de aplicaciones con la cantidad de memoria. La idea detrás del término es que para la mayoría de los usuarios existe una cantidad de memoria RAM que es suficiente ya que con tal cantidad es posible tener una gran cantidad de Apps en memoria y el intercambio es mínimo.

Este muchacho escribió una utilidad que utiliza el Android Debug Bridge (adb) para monitorear qué procesos se están eliminando, junto con la cantidad de memoria disponible. También analiza la cantidad de RAM que usan las aplicaciones en ejecución.

Según muchas pruebas, se determinó que en la actualidad 6GB es el comienzo del punto dulce. Las aplicaciones comunes (WhatsApp, Instagram, Twitter, Chrome, Google Photos y demás) permanecen en la memoria durante largos períodos de tiempo y la experiencia multitarea es perfecta, la mayoría del tiempo.

Estos teléfonos de 6GB pueden alternar entre una docena o más de aplicaciones, incluidas algunas de uso pesado, sin ver una sola recarga.

Con 8GB el punto dulce es aún mayor. La diferencia es que con esos 2GB extra es posible abrir juegos muy grandes cómo PUBG o Need for Speed: No Limits y hacer switch con otras Apps sin retardo alguno.

Al parecer, en la actualidad, luego de 8GB la diferencia de uso no se nota. 4GB va muy bien, 6GB es dulce, 8GB se acerca a la tierra sin sentido para la myoría del tiempo y ya 10GB, 12GB y 16GB no tienen sentido.

Nota: es interesante cómo cada Smartphone tiene, además de una cantidad física de memoria RAM, una configuración de intercambio específica. Por ejemplo, los Samsung Galaxy Note 8 y 9 vienen con 2GB de memoria de Intercambio y los OnePlus 6T (que vienen con 8GB de RAM) directamente sin memoria Swap.

3 COMENTARIOS

  1. walter11av

    Muy bueno el articulo, personalmente creo que este sistema para gestionar la ram que usa android es muy complicado y «vueltero» por lo que termina haciendo lo contrario, que es acortar la autonomía de los teléfonos, tienen que existir gestiones mas eficientes de la ram no?

  2. mm

    Leandro

    La otra pregunta que surge es por cuánto timepo va a ser «dulce» la experiencia con un teléfono con 6GB de RAM. Si partimos del hecho que un celu de esas características no es precisamente económico no se puede pensar en renovarlo cada año.

    Por lo tanto, si hoy tengo una experiencia dulzona con uno ¿seguirá siendo así en dos años? (asumiendo que durante el primer año va a durar el romance) ¿O es como esos chicles baratos que su sabor dura no más de 10 minutos?

  3. Techno Guille

    De un Vivo Nex con 8GB de ram pase por unos pocos meses a un Realme con 4gb y la experiencia fue como volver a win95, tenia que tener paciencia para abrir solo pocas aplicaciones (mal acostumbrado del nex), de ahi pase al nex 3s con 12gb + 3gb de intercabio y es una gozada, abrir mas de 20 apps y sin ralentizarse o volverse a abrir ninguna, una delicia, se nota el camio de 8gb a 12gb, no tan pronunciada pero hay.

    Ademas del ufs 3.1, otra gozada.

Dejá una respuesta

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí