Memoria

Comandos para administrar la memoria de Linux

Comandos para administrar la memoria de Linux
Los sistemas UNIX / Linux contienen una herramienta de línea de comandos para casi todo. Esto incluye también programas para manejar la memoria. En este artículo le mostramos una selección de comandos que son muy útiles para usted como usuario de Linux.

Detecta el hardware usando dmidecode

La detección automática de hardware siempre ha sido un poco como una lotería, pero mejoró en los últimos años, ya que muchos fabricantes documentan sus productos con más detalle y también tienen información específica disponible en línea. Para conocer la información de hardware con respecto a la RAM instalada en su máquina, utilice el dmidecode comando (paquete para Debian GNU / Linux, Ubuntu y Linux Mint: dmidecode).

Entre otra información, esta herramienta informa datos detallados sobre los componentes del sistema instalados, como el procesador, la placa base y la RAM. La información se basa en la Interfaz de administración de escritorio (DMI) [1], que es un marco que clasifica los componentes individuales en un escritorio, computadora portátil o servidor abstrayendo estos componentes del software que los administra [2]. La opción --tipo de memoria se refiere a los dispositivos de memoria. Para otras clases de DMI, consulte la página del manual de dmidecode.

# dmidecode --type memory
# dmidecode 2.12
SMBIOS 2.7 presentes.
Manejar 0x0007, DMI tipo 16, 23 bytes
Matriz de memoria física
Ubicación: placa base o placa base
Uso: memoria del sistema
Tipo de corrección de errores: Ninguno
Capacidad máxima: 16 GB
Identificador de información de error: no incluido
Cantidad de dispositivos: 1
Manejar 0x0008, DMI tipo 17, 34 bytes
Dispositivo de memoria
Mango de matriz: 0x0007
Identificador de información de error: no incluido
Ancho total: 64 bits
Ancho de datos: 64 bits
Tamaño: 8192 MB
Factor de forma: SODIMM
Establecer: Ninguno
Localizador: ChannelA-DIMM0
Localizador de bancos: BANCO 0
Tipo: DDR3
Detalle de tipo: Sincrónico
Velocidad: 1600 MHz
Fabricante: Samsung
Número de serie: 25252105
Etiqueta de activo: Ninguna
Número de pieza: M471B1G73DB0-YK0
Rango: Desconocido
Velocidad de reloj configurada: 1600 MHz

Esta máquina está equipada actualmente con 8G DDR3 RAM con una velocidad de reloj configurada de 1600 MHz. Como puede ver, la capacidad máxima disponible de la RAM incorporada es 16G, lo que significa que se puede ampliar con un segundo módulo 8G.

Información gráfica sobre la memoria

En caso de que prefiera una interfaz gráfica para recuperar esta información, las herramientas Hardinfo [3] y Hardware Lister (versión GTK +) [4] pueden ser de su interés. En Debian GNU / Linux, Ubuntu y Linux Mint, estos programas están disponibles a través de los paquetes hardinfo y lshw-gtk. La Figura 2 muestra la interfaz de usuario de Hardinfo mostrando la información de la memoria en una instalación de Xubuntu.

Cuánta memoria hay actualmente disponible

A veces menos es más. En la línea de comandos, la información relativa a la memoria está disponible a través del libre mando. En Debian GNU / Linux, Ubuntu y Linux Mint, este programa es parte del paquete procps [5]. La figura 2 muestra la salida en una ventana de terminal.

Como una selección de las opciones adicionales, libre acepta varios parámetros como:

En la figura 3, la salida se muestra en megabytes usando la opción -m. El sistema tiene 4G de RAM, mientras que 725M están actualmente en uso.

Información de la memoria desde el punto de vista del kernel de Linux

Las herramientas mencionadas anteriormente se basan en información sin procesar que se mantiene en el sistema de archivos proc del kernel de Linux. Para mostrar estos detalles, muestre el contenido del archivo / proc / meminfo utilizando la gato utilidad en una terminal:

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
MemDisponible: 448824 kB
Búferes: 17828 kB
En caché: 326104 kB
En caché: 69592 kB
Activo: 2497184 kB
Inactivo: 650912 kB
Activo (anon): 2338748 kB
Inactivo (anon): 525316 kB
Activo (archivo): 158436 kB
Inactivo (archivo): 125596 kB
Imposible de vencer: 64 kB
Bloqueado: 64 kB
Total Swap: 16150524 kB
SwapFree: 15668480 kB
Sucio: 3008 kB
Reescritura: 0 kB
Páginas anón: 2774656 kB
Asignado: 4414752 kB
Shmem: 59900 kB
Losa: 130216 kB
Recuperable: 61748 kB
SUnreclaim: 68468 kB
Pila de granos: 7328 kB
Tablas de páginas: 42844 kB
NFS_Instable: 0 kB
Rebote: 0 kB
WritebackTmp: 0 kB
Límite de compromiso: 20094876 kB
Comprometidos_AS: 10344988 kB
VmallocTotal: 34359738367 kB
Vmalloc Usado: 367296 kB
VmallocChunk: 34359345768 kB
Hardware corrupto: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Tamaño de página enorme: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
PS

Para obtener más información estadística sobre el uso de la CPU, la memoria y los procesos, puede echar un vistazo a las herramientas vmstat, y iostato (Paquetes de Debian procps y sysstat).

Trabajar con procesos: ps, htop y pstree

Para mostrar los procesos activos de su sistema Linux utilice el PD mando. Por lo general, la salida se ordena alfabéticamente. Pero el PD el comando puede hacer mucho más. Usando las opciones aux --sort -rss la salida de la lista de procesos está ordenada por su uso de memoria en un orden de arriba hacia abajo. La Figura 4 muestra los procesos que tienen la mayor demanda de memoria. La salida está ordenada por la sexta columna titulada RSS que abrevia Tamaño del conjunto residente. El valor se da en kilobytes.

Los comandos ps, pstree y htop están estrechamente relacionados en términos de la información que muestran estas herramientas. Ambas cosas pstree y htop mostrar un gráfico para visualizar las dependencias del proceso. htop actúa como una versión interactiva que le permite desplazarse por la lista de procesos hacia arriba y hacia abajo. La figura 5 muestra htop en un sistema de escritorio con una selección de procesos ordenados por su uso específico de memoria (quinta columna).

Encontrar procesos que usan memoria Swap

Cuantos más procesos se inician, más memoria se utiliza al mismo tiempo. Tan pronto como su sistema Linux se quede sin páginas de memoria no utilizadas, el kernel de Linux decide cambiar las páginas de memoria al disco utilizando el método de uso menos reciente (LRU). Para responder a la pregunta, qué procesos usan memoria de intercambio y cuánto se usa en particular, puede echar un vistazo a la salida del programa principal. En 2016, Erik Ljungstrom publicó una breve descripción de cómo recuperar esa información y extender esta columna a la salida de top [6]. La Figura 6 muestra esta salida en un sistema que tiene muchas páginas de memoria en RAM y no usa Swap, actualmente.

Además, en 2011 ya publicó un script bash que evalúa la información del sistema de archivos proc para mostrar el uso del proceso de intercambio por proceso [7]. Incluso 7 años después y ya descrito como obsoleto, el script sigue siendo excelente y muestra cómo automatizar tareas en un sistema Linux. Por eso tenemos la certeza de que es útil volver a mostrarlo aquí.

La salida del script es la siguiente (ejecutar como raíz el usuario recupera los datos completos):

# ./intercambio.sh
PID = 1 - Swap utilizado: 0 - (systemd)
PID = 2 - Intercambio utilizado: 0 - (kthreadd)
PID = 3 - Intercambio utilizado: 0 - (ksoftirqd / 0)
PID = 5 - Swap utilizado: 0 - (kworker / 0: 0H)
PID = 6 - Swap utilizado: 0 - (kworker / u16: 0)
PID = 7 - Swap utilizado: 0 - (rcu_sched)
PID = 8 - Swap utilizado: 0 - (rcu_bh)
PID = 9 - Swap utilizado: 0 - (migración / 0)
PID = 10 - Swap usado: 0 - (perro guardián / 0)
PID = 11 - Swap utilizado: 0 - (perro guardián / 1)
PID = 12 - Swap utilizado: 0 - (migración / 1)
PID = 13 - Intercambio utilizado: 0 - (ksoftirqd / 1)
PID = 15 - Swap utilizado: 0 - (kworker / 1: 0H)
PID = 16 - Swap utilizado: 0 - (perro guardián / 2)
PID = 17 - Swap utilizado: 0 - (migración / 2)
PID = 18 - Intercambio utilizado: 0 - (ksoftirqd / 2)
PID = 20 - Swap utilizado: 0 - (kworker / 2: 0H)
..
#

Conclusión

La caja de herramientas de Linux contiene una lista interminable de programas disponibles para ayudarlo a analizar el uso de memoria de su sistema Linux. Acabamos de echar un vistazo breve, desde datos sin procesar hasta información preprocesada, todo está ahí. Solo conoce tus herramientas. Para familiarizarse con ellos, tómese un poco de tiempo y juegue con ellos.

Esta es la parte 2 de la serie sobre administración de memoria del kernel de Linux.  La parte 1 trata sobre la memoria de intercambio, en la tercera parte de esta serie analizaremos cómo optimizar el uso de la memoria. Esto incluirá la gestión de ramdisks y archivos de intercambio comprimidos.

Enlaces y referencias

Serie de administración de memoria de Linux

Agradecimientos

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

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
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...