GNU/Linux >> Tutoriales Linux >  >> Linux

Comprensión del archivo /proc/meminfo (Análisis de la utilización de la memoria en Linux)

– El /proc El sistema de archivos es un pseudo sistema de archivos. No existe en un disco. En cambio, el núcleo lo crea en la memoria. Se utiliza para proporcionar información sobre el sistema (originalmente sobre procesos, de ahí el nombre).
– El '/proc/meminfo ' se utiliza para informar la cantidad de memoria libre y utilizada (tanto física como de intercambio) en el sistema, así como la memoria compartida y los búferes utilizados por el kernel.
– El sistema de archivos /proc se describe con más detalle en la página del manual del proceso (man proc).

Ejemplo de “gato /proc/meminfo”

La salida del comando "cat /proc/meminfo" sería diferente según el sistema operativo y la arquitectura del servidor. Los campos enumerados a continuación pueden ser ligeramente diferentes o no estar presentes en su sistema.

# cat /proc/meminfo 
MemTotal:        1882064 kB
MemFree:         1376380 kB
MemAvailable:    1535676 kB
Buffers:            2088 kB
Cached:           292324 kB
SwapCached:            0 kB
Active:           152944 kB
Inactive:         252628 kB
Active(anon):     111328 kB
Inactive(anon):    16508 kB
Active(file):      41616 kB
Inactive(file):   236120 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:        111180 kB
Mapped:            56396 kB
Shmem:             16676 kB
Slab:              54508 kB
SReclaimable:      25456 kB
SUnreclaim:        29052 kB
KernelStack:        2608 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3038180 kB
Committed_AS:     577664 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14664 kB
VmallocChunk:   34359717628 kB
HardwareCorrupted:     0 kB
AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       69632 kB
DirectMap2M:     2027520 kB

Campos

La información viene en forma de estadísticas altas y bajas. En la parte superior, verá un resumen de los valores más comunes que a la gente le gustaría ver. A continuación encontrará los valores individuales que discutiremos. Primero discutiremos las estadísticas altas.

Estadísticas de alto nivel

  • MemTotal :RAM utilizable total (es decir, RAM física menos algunos bits reservados y el código binario del kernel)
  • MemFree :Es la suma de LowFree+HighFree (estadística general)
  • MemShared :0; está aquí por razones de compatibilidad pero siempre cero.
  • Búferes :Memoria en caché de búfer. en su mayoría inútil como métrica hoy en día El almacenamiento relativamente temporal para bloques de disco sin procesar no debería ser tremendamente grande (20 MB más o menos)
  • En caché :Memoria en el pagecache (diskcache) menos SwapCache, no incluye SwapCached
  • Intercambio de caché :La memoria que una vez se intercambió, se vuelve a intercambiar pero también está en el archivo de intercambio (si se necesita memoria, no es necesario volver a intercambiarla porque ya está en el archivo de intercambio. Esto ahorra E/S)

Estadísticas detalladas

1. Estadísticas de máquinas virtuales
VM divide las páginas de caché en memoria "activa" e "inactiva". La idea es que si necesita memoria y se necesita sacrificar algo de caché para eso, la saca de inactiva ya que se espera que no se use. La máquina virtual verifica lo que se usa regularmente y mueve las cosas.

Las estadísticas son:

  • Activo :Memoria que se ha utilizado más recientemente y que, por lo general, no se recupera a menos que sea absolutamente necesario.
  • Inactivo_sucio :Sucio significa "podría necesitar escribir en el disco o intercambiar". Se necesita más trabajo para liberar. El ejemplo podría ser archivos que aún no se han escrito. No se escriben en la memoria demasiado pronto para mantener baja la E/S. Por ejemplo, si está escribiendo registros, podría ser mejor esperar hasta que tenga listo un registro completo antes de enviarlo al disco.
  • Inactivo_limpio :Se supone que se puede liberar fácilmente. El núcleo tratará de mantener siempre algunas cosas limpias para tener un poco de espacio para respirar.
  • Objetivo_inactivo :solo una métrica de objetivo que utiliza el kernel para asegurarse de que haya suficientes páginas inactivas. Cuando se excede, el núcleo no funcionará para mover páginas de activas a inactivas. Una página también puede quedar inactiva de otras maneras, p. si realiza una E/S secuencial larga, el kernel asume que no va a utilizar esa memoria y la desactiva de forma preventiva. Por lo tanto, puede obtener más páginas inactivas que el objetivo porque el kernel marca parte del caché como "más probable que nunca se use" y lo deja engañar en el orden "último uso".

2. Estadísticas de memoria

  • Total alto :es la cantidad total de memoria en la región alta. Highmem es toda la memoria por encima de (aproximadamente) 860 MB de RAM física. Kernel usa trucos indirectos para acceder a la región de memoria alta. El caché de datos puede ir en esta región de memoria.
  • Total bajo :la cantidad total de memoria no alta.
  • BajaGratis :La cantidad de memoria libre de la región de memoria baja. Esta es la memoria que el núcleo puede direccionar directamente. Todas las estructuras de datos del kernel deben ir a poca memoria.
  • Total de intercambio :cantidad total de memoria de intercambio física.
  • Intercambio gratuito :Cantidad total de memoria de intercambio libre. Memoria que ha sido desalojada de la RAM y está temporalmente en el disco
  • Sucio :Memoria que está a la espera de volver a escribirse en el disco
  • Reescribir :Memoria que se está volviendo a escribir activamente en el disco
  • Asignado :archivos que han sido asignados, como bibliotecas
  • Losa :caché de estructuras de datos en el núcleo
  • Commited_AS :una estimación de la cantidad de RAM que necesitaría para tener una garantía del 99,99 % de que nunca habrá OOM (sin memoria) para esta carga de trabajo. Normalmente, el kernel sobreasignará memoria. Eso significa que, digamos que haces un malloc de 1 GB, no pasa nada, de verdad. Solo cuando comience a UTILIZAR esa memoria malloc, obtendrá memoria real a pedido, y tanto como usted usa. Entonces tomas una hipoteca y esperas que el banco no quiebre. Otros casos pueden incluir cuando asignas un archivo que se comparte solo cuando escribes en él y obtienes una copia privada de esos datos. Si bien normalmente se comparte entre procesos. El Committed_AS es una estimación aproximada de la cantidad de RAM/intercambio que necesitaría en el peor de los casos.
  • Tablas de páginas :cantidad de memoria dedicada al nivel más bajo de las tablas de páginas.
  • Mapas inversos :número de mapeos inversos realizados
  • VmallocTotal :tamaño total del área de memoria vmalloc
  • Usado en Vmalloc :cantidad de área vmalloc que se utiliza
  • VmallocChunk :bloque contiguo más grande del área de vmalloc que es libre


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  3. Entendiendo el archivo /etc/xinetd.conf en Linux

  4. Comprender el sistema de archivos /proc

  5. Comprender el archivo de configuración /etc/profile en Linux

Comprender los permisos de archivos de Linux

/dev/null en Linux

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender el archivo /etc/fstab en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

¿Por qué cambia MemTotal en /proc/meminfo?