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 bastante útiles para usted como usuario de Linux.

Detectar 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 del hardware sobre la RAM instalada en su máquina, use 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, el zócalo 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 únicos en un escritorio, cuaderno 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, eche un vistazo a la página manual de dmidecode.

# DMIDECODE -MEMORIA DE TIPO
# dmidecode 2.12
Smbios 2.7 presente.
Manejar 0x0007, DMI tipo 16, 23 bytes
Matriz de memoria física
Ubicación: tablero del sistema o placa base
Uso: memoria del sistema
Tipo de corrección de errores: ninguno
Capacidad máxima: 16 GB
Manejo de información de error: no se proporciona
Número de dispositivos: 1
Manejar 0x0008, DMI tipo 17, 34 bytes
Dispositivo de memoria
Mango de matriz: 0x0007
Manejo de información de error: no se proporciona
Ancho total: 64 bits
Ancho de datos: 64 bits
Tamaño: 8192 MB
Factor de forma: SODIMM
Establecer: ninguno
Locator: Channela-Dimm0
Localizador del banco: Banco 0
Tipo: DDR3
Tipo de detalle: sincrónico
Velocidad: 1600 MHz
Fabricante: Samsung
Número de serie: 25252105
Etiqueta de activos: ninguno
Número de pieza: M471B1G73DB0-YK0
Rango: desconocido
Velocidad de reloj configurada: 1600 MHz

Esta máquina está actualmente equipada con RAM DDR3 8G con una velocidad de reloj configurada de 1600 MHz. Como puede ver, la capacidad máxima disponible de RAM a bordo es 16 g, lo que significa que puede extenderse por 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] podrían ser de interés para usted. 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 que muestra la información de memoria en una instalación de Xubuntu.

¿Cuánta memoria está disponible actualmente?

A veces menos es más. En la línea de comandos, la información sobre la memoria está disponible a través del gratis dominio. 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 terminal.

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

  • -B (-bytes): Mostrar la salida como bytes
  • -K (--kilo): Muestre la salida como kilobytes
  • -M (--mega): Muestre la salida como megabytes
  • -G (--giga): Mostrar la salida como gigabytes
  • --Tera: Mostrar la salida como terabytes
  • -H (--human): Mostrar la salida en formato legible por humanos

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

Información de memoria desde el punto de vista del núcleo de Linux

Las herramientas mencionadas anteriormente dependen de la información sin procesar que se mantienen en el sistema de archivos PROC del núcleo de Linux. Para mostrar estos detalles, el contenido del archivo /Proc/Meminfo utilizando el gato utilidad en un terminal:

$ Cat /Proc /Meminfo
Memtotal: 7888704 KB
MEMFREE: 302852 KB
Memánea: 448824 KB
Buffers: 17828 KB
Almacenado en caché: 326104 kb
Swapcached: 69592 KB
Activo: 2497184 KB
Inactivo: 650912 KB
Active (Anon): 2338748 KB
Inactivo (anon): 525316 kb
Activo (archivo): 158436 KB
Inactivo (archivo): 125596 KB
Inevitable: 64 kb
Mocked: 64 kb
Swaptotal: 16150524 KB
SwapFree: 15668480 KB
Sucio: 3008 kb
Vuelva a escribir: 0 KB
Anonpages: 2774656 KB
Mapeado: 4414752 KB
Shmem: 59900 KB
Losa: 130216 KB
Seclaimable: 61748 KB
SunREClaim: 68468 KB
Kernelstack: 7328 KB
Pagetables: 42844 KB
Nfs_unstable: 0 kb
Rebote: 0 kb
WriteBackTmp: 0 KB
Competlimit: 20094876 KB
Committed_as: 10344988 KB
VMALLOCTOTAL: 34359738367 KB
Vmallocused: 367296 KB
Vmallocchunk: 34359345768 KB
Hardwarecorrupted: 0 kb
Anonhugepages: 0 KB
Enormpages_total: 0
Enormpages_free: 0
Enormpages_rsvd: 0
Enormpages_surp: 0
Enormespagesize: 2048 kb
DirectMap4K: 78448 KB
DirectMap2m: 2756608 KB
DirectMap1g: 5242880 KB
ps

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

Trabajar con procesos - PS, HTOP y PSTREE

Para mostrar los procesos activos de su sistema Linux, use el PD dominio. Por lo general, la salida se clasifica alfabéticamente. Pero el PD El comando puede hacer mucho más. Usando las opciones aux --ordenar -rss La salida de la lista de procesos se clasifica mediante 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 se clasifica por la sexta columna titulada RSS que abrevia el tamaño del conjunto de residentes. 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. Ambos pstree y htop mostrar un gráfico para visualizar las dependencias del proceso. htop actúa como una versión interactiva que le permite desplazar 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 la memoria de intercambio

Cuanto más procesos sean lanzados, más memoria se usa al mismo tiempo. Tan pronto como su sistema Linux se queda fuera de las páginas de memoria no utilizadas, el kernel de Linux decide intercambiar páginas de memoria al disco utilizando el método menos utilizado (LRU). Para responder a la pregunta, qué procesos usan la memoria de intercambio y cuánto se usa en particular, puede echar un vistazo a la salida del programa superior. 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 a la izquierda 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 las tareas en un sistema Linux. Por eso estamos seguros de que es útil mostrarlo aquí una vez más.

La salida del script es la siguiente (ejecute como raíz Usuario de recuperar los datos completos):

# ./intercambio.mierda
PID = 1 - Swap utilizado: 0 - (Systemd)
PID = 2 - Swap utilizado: 0 - (Kthreadd)
PID = 3 - Swap utilizado: 0 - (ksoftirqd/0)
PID = 5 - Intercambio 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 utilizado: 0 - (Watchdog/0)
PID = 11 - Swap utilizado: 0 - (Watchdog/1)
PID = 12 - Swap utilizado: 0 - (migración/1)
PID = 13 - Swap utilizado: 0 - (ksoftirqd/1)
PID = 15 - Intercambio utilizado: 0 - (Kworker/1: 0h)
PID = 16 - Swap utilizado: 0 - (Watchdog/2)
PID = 17 - Swap utilizado: 0 - (migración/2)
PID = 18 - Swap 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 la memoria de su sistema Linux. Acabamos de ver, 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 en Linux Kernel Memory Management. La Parte 1 discute la memoria de intercambio, en la tercera parte de esta serie discutiremos cómo optimizar el uso de la memoria. Esto incluirá la administración de ramdisks y archivos de intercambio comprimidos.

Enlaces y referencias

  • [1] DMI en Distributed Management Task Force (DMTF)
  • [2] DMI en Wikipedia
  • [3] Hardinfo
  • [4] LSHW-GTK (paquete Debian para estiramiento)
  • [5] PROCPS (paquete Debian para el estiramiento)
  • [6] Erik Ljungstrom: Descubra qué está usando su intercambio
  • [7] Erik Ljungstrom: uso de intercambio - 5 años después

Serie de administración de memoria de Linux

  • Parte 1: Gestión de la memoria del núcleo de Linux: espacio de intercambio
  • Parte 2: Comandos para administrar la memoria de Linux
  • Parte 3: Optimización del uso de la memoria de Linux

Agradecimientos

El autor desea agradecer a Mandy Neumeyer y Gerold Rupprecht por su apoyo mientras prepara este artículo.