Uso elevado de memoria que no se puede atribuir a un servicio o aplicación

Uso elevado de memoria que no se puede atribuir a un servicio o aplicación

En Ubuntu 22.04 tengo un problema extraño con la memoria. Parece que no puedo entender por qué mi uso de memoria es tan alto. Cuando inicio, el uso de la memoria de mi computadora portátil es el esperado, pero con el tiempo, algo parece consumir mi memoria, pero el sistema no parece saber para qué se usa.

Después de que la computadora portátil ha estado funcionando durante un par de días y ha estado en reposo durante la noche, free -minforma lo siguiente:

               total        used        free      shared  buff/cache   available
Mem:           14812        7329        2683        1810        4799        5348
Swap:           2047         416        1631

Todas las solicitudes han sido cerradas y, segúnesta herramientaLa memoria acumulada utilizada por todas las aplicaciones es de 1,7 GiB. Entonces, ¿para qué se utilizan los últimos ~5,5 GiB (7,2-1,7)?

¿Me estoy perdiendo de algo?

ingrese la descripción de la imagen aquí

Respuesta1

Esta respuesta está escrita en un intento de solucionar posibles causas del uso de memoria "no contabilizado", que pueden ir más allá de lo que está experimentando el OP.

Fondo

En Linux, el uso de memoria se puede atribuir en gran medida a dos elementos:

  • Uso por procesos/hilos
  • Uso por un sistema de archivos

En el caso de esta pregunta, el OP no puede dar cuenta de toda la memoria utilizada por procesos/hilos. Por lo tanto, es muy probable que el núcleo utilice la memoria restante para operaciones del sistema de archivos.

Causas probables

Actualmente conozco 3 razones principales para el uso excesivo de memoria del sistema de archivos:

  1. Caché ZFS ARC (o caché de sistema de archivos similar, que se registra como uso de memoria "normal")
  2. Discos RAM ( tmpfsy sistemas de archivos similares)
  3. Compresión nativa del sistema de archivos, combinada con E/S excesiva de disco (de modo que la compresión/recompresión se produce con un consumo constante de memoria como resultado)

Para solucionar estos 3 escenarios, recomendaría lo siguiente:

1. Caché ZFS ARC

Ejecute este comando para obtener información detallada sobre la caché ZFS ARC:

arcstat -a 

La estadística reportada por sizeaparecerá como memoria usada normal.

Por su publicación, es obvio que aquí se usan 0,5 GB.

2. Discos RAM

Ejecute este comando para obtener información sobre tmpfslos discos ram del sistema de archivos actual:

df -hl -t"tmpfs"

Cualquier cantidad reportada por usedaparecerá como memoria usada normal.

Ubuntu (y muchas otras variantes de Linux) tienen un disco ram predeterminado en /dev/shm. Las aplicaciones pueden utilizar este espacio, por lo que puedes consultarlo fácilmente con:

ls -ahl /dev/shm

Además, tmpfsel uso también se muestra a continuación shareden el freeresultado, por lo que, según su publicación, es obvio que aquí se usan 1,8 GB.

3. Compresión FS

Verifique la E/S del disco con este comando: ( iostates parte del sysstatpaquete)

iostat

Combine esto con conocimientos sobre la compresión del sistema de archivos habilitado para los discos relevantes. Para ZFS, ejecute este comando para obtener propiedades de compresión para todos los Zpools y conjuntos de datos:

zfs get compression

Si tiene una E/S alta en el disco, combinada con la compresión nativa habilitada, esto puede dar como resultado un exceso de memoria reportado como memoria usada normal.

Respuesta2

¿Está utilizando compresión en su sistema de archivos o un sistema de archivos de copia en escritura como BTRFS o ZFS?

Es posible que el uso excesivo de memoria se deba a que el kernel intenta (re)comprimir archivos en tiempo real o copiar/versionar cada escritura cuando los archivos grandes cambian con frecuencia.

La presión de la memoria se vuelve especialmente notable si tiene archivos grandes, como imágenes para máquinas virtuales, donde los archivos cambian con frecuencia y tienen un tamaño de gigabytes en lugar de megabytes.

Puede considerar deshabilitar la compresión en un sistema de archivos/subvolumen/nivel de volumen o nivel de archivo individual y/o deshabilitar COW (copiar al escribir)

BTRFS:
Se admite la eliminación de la compresión para archivos particulares con el comando btrfs:

 property set <file> compression none

para eliminar COW (copiar al escribir) para una carpeta en particular:

chattr -R +C /directory/of/your/vm_images/

ZFS:
No creo que puedas eliminar la compresión de archivos individuales. Deshabilitar la compresión en un volumen solo afectará las escrituras futuras, por lo que deberá copiar cada archivo individualmente para que los archivos tengan la compresión deshabilitada.

zfs set compression=off name_of_zfs_vol

información relacionada