Memoria

Optimización del uso de la memoria de Linux

Optimización del uso de la memoria de Linux
En la primera parte de esta serie, echamos un vistazo más de cerca al espacio de intercambio, y la segunda parte trataba sobre herramientas y comandos para administrar la memoria. Ahora, discutiremos varios parámetros y estrategias para optimizar la memoria y su uso en general. Esto cubre la cantidad de memoria, la aceleración del acceso y la estrategia de uso interno.

Cantidad de memoria

Como ya se comentó en la primera parte, la memoria completa se denomina memoria virtual y consta de memoria física y espacio de intercambio. La disponibilidad de la memoria física depende del hardware que está integrado en la máquina, así como de la cantidad de memoria que el procesador puede manejar, en realidad. Como ejemplo, los sistemas operativos de 32 bits tienen un límite de 4G de memoria, solo (2 ^ 32 bits), mientras que los sistemas operativos basados ​​en 64 bits teóricamente permiten hasta 16 EB (2 ^ 64 bits).

Para ser precisos, la limitación es la placa base con el procesador en sí, los módulos de memoria que son compatibles con esa placa base y los módulos de memoria específicos que están conectados a las ranuras de memoria de la placa base. Una forma de maximizar la memoria disponible del sistema es utilizar módulos de memoria similares que tengan el tamaño más grande posible. La segunda forma es usar la memoria Swap como ya se explicó en la primera parte.

Acceso a la memoria

A continuación, entra en consideración una mejora de la velocidad de acceso de la memoria. Al principio, el límite físico lo da el propio módulo de memoria. No puede ir por debajo de los límites físicos del hardware. En segundo lugar, un ramdisk y, en tercer lugar, el uso de zRAM puede acelerar el acceso a la memoria. Discutiremos estas dos tecnologías con más detalle.

Creando un ramdisk

Un disco RAM es un bloque de memoria que el sistema operativo maneja como un dispositivo físico para almacenar datos, un disco duro que se guarda por completo en la memoria. Este dispositivo temporal existe tan pronto como el sistema se inicia y habilita el ramdisk, y el sistema deshabilita el ramdisk o se apaga. Tenga en cuenta que los datos que almacena en un disco RAM de este tipo se pierden después del apagado de la máquina.

Puede crear un disco RAM dinámico a través del sistema de archivos tmpfs y mediante el sistema de archivos ramfs. Ambas tecnologías difieren significativamente entre sí. Primero, dinámico significa que la memoria para el disco ram se asigna en función de su uso (cierto para ambos métodos). Siempre que no almacene datos en él, el tamaño del disco ram es 0.

La creación de un disco RAM dinámico a través de tmpfs es la siguiente:

# mkdir / media / ramdisk
# mount -t tmpfs ninguno / media / ramdisk

La creación de un disco RAM dinámico a través de ramfs es la siguiente:

# mkdir / media / ramdisk
# mount -t ramfs ramfs / media / ramdisk

En segundo lugar, el uso de tmpfs y, a menos que se especifique explícitamente, el tamaño del disco RAM está limitado al 50% de la memoria física. En contraste, un ramdisk basado en ramfs no tiene tal limitación.

La creación de un disco RAM dinámico a través de tmpfs con un tamaño relativo del 20% de la memoria física es la siguiente:

# mkdir / media / ramdisk
# mount -t tmpfs -o tamaño = 20% ninguno / media / ramdisk

La creación de un disco RAM dinámico a través de tmpfs con un tamaño fijo de 200 M de memoria física es la siguiente:

# mkdir / media / ramdisk
# mount -t tmpfs -o tamaño = 200M ninguno / media / ramdisk

En tercer lugar, ambos métodos manejan el intercambio de manera diferente. En caso de que el sistema alcance el límite de memoria de un disco ram basado en tmpfs, los datos del disco ram se intercambian. Esto frustra la idea de un acceso rápido. Por otro lado, el sistema operativo prioriza tanto el contenido como las páginas de memoria solicitadas de un disco ram basado en ramfs, lo mantiene en la memoria e intercambia las páginas de memoria restantes al disco.

En los ejemplos anteriores hemos utilizado / media / ramdisk como punto de montaje. Con respecto a los datos regulares, la única parte del sistema de archivos de Linux que se recomienda utilizar en un disco ram es / tmp. Este directorio almacena datos temporales, solo, que no persisten. La creación de un disco RAM permanente que almacena el sistema de archivos / tmp requiere una entrada adicional en el archivo / etc / fstab de la siguiente manera (basado en ramfs):

ramfs / tmp valores predeterminados de ramfs 0 0

La próxima vez que inicie su sistema Linux, el disco RAM se habilitará automáticamente.

Usando zRAM

zRAM significa Virtual Swap Compressed en RAM y crea un dispositivo de bloque comprimido directamente en la memoria física. zRAM entra en acción (uso) tan pronto como no haya más páginas de memoria física disponibles en el sistema. Luego, el kernel de Linux intenta almacenar páginas como datos comprimidos en el dispositivo zRAM.

Actualmente, no hay ningún paquete disponible para Debian GNU / Linux, pero Ubuntu. Se llama zram-config. Instale el paquete y configure un dispositivo zRAM simplemente iniciando el servicio systemd correspondiente de la siguiente manera:

# systemctrl iniciar zram-config

Según lo dado por la salida de swapon -s, el dispositivo está activo como una partición de intercambio adicional. Automáticamente, se asigna un tamaño del 50% de la memoria para zRAM (ver figura 1). Actualmente, no hay forma de especificar un valor diferente para que se asigne zRAM.

Para ver más detalles sobre la partición de intercambio comprimida, use el comando zramctl. La Figura 2 muestra el nombre del dispositivo, el algoritmo de compresión (LZO), el tamaño de la partición de intercambio, el tamaño de los datos en el disco y su tamaño comprimido, así como el número de flujos de compresión (valor predeterminado: 1).

Estrategia de uso

A continuación, nos centramos en la estrategia de uso de la memoria. Hay algunos parámetros que influyen en el comportamiento del uso y la distribución de la memoria. Esto incluye el tamaño de las páginas de memoria; en sistemas de 64 bits es 4M. A continuación, el intercambio de parámetros juega un papel. Como ya se explicó en la parte uno, este parámetro controla el peso relativo que se le da al intercambio de memoria en tiempo de ejecución, en lugar de eliminar páginas de memoria del caché de la página del sistema. Además, no debemos olvidar tanto el almacenamiento en caché como la alineación de la página de memoria.

Utilice programas que requieran menos memoria

Por último, pero no menos importante, el uso de la memoria depende de los programas en sí. La mayoría de ellos están vinculados a la biblioteca C predeterminada (LibC estándar). Como desarrollador, para minimizar su código binario, considere usar una alternativa y una biblioteca C mucho más pequeña en su lugar. Por ejemplo, hay dietlibc [1], uClibc [2] y musl lib C [3]. El sitio web del desarrollador de musl lib C contiene una amplia comparación [4] con respecto a estas bibliotecas en términos del programa C estático más pequeño posible, una comparación de características, así como los entornos de compilación correspondientes y las arquitecturas de hardware compatibles.

Como usuario, es posible que no tenga que compilar sus programas. Considere buscar programas más pequeños y marcos diferentes que requieran menos recursos. Como ejemplo, puede usar el entorno de escritorio XFCE en lugar de KDE o GNOME.

Conclusión

Existen bastantes opciones para cambiar el uso de la memoria para mejor. Esto va desde Swap hasta la compresión basada en zRAM, así como la configuración de un ramdisk o la selección de un marco diferente.

Enlaces y referencias

Serie de administración de memoria de Linux

Agradecimientos

El autor desea agradecer a Axel Beckert y Gerold Rupprecht por su apoyo durante la preparación de este artículo.

Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...
Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...
Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...