GNU/Linux >> Linux Esercitazione >  >> Linux

Comprensione del file /proc/meminfo (analisi dell'utilizzo della memoria in Linux)

– Il /proc il filesystem è uno pseudo filesystem. Non esiste su un disco. Invece, il kernel lo crea in memoria. Viene utilizzato per fornire informazioni sul sistema (originariamente sui processi, da cui il nome).
– Il '/proc/meminfo ' viene utilizzato da per segnalare la quantità di memoria libera e utilizzata (sia fisica che di scambio) sul sistema, nonché la memoria condivisa e i buffer utilizzati dal kernel.
– Il filesystem /proc è descritto più dettagliatamente in la pagina man di proc (man proc).

Esempio di “cat /proc/meminfo”

L'output del comando "cat /proc/meminfo" sarebbe diverso a seconda del sistema operativo e dell'architettura del server. I campi elencati di seguito potrebbero essere leggermente diversi o non presenti nel tuo 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

Campi

Le informazioni si presentano sotto forma di statistiche sia alte che basse. Nella parte superiore viene visualizzato un riepilogo dei valori più comuni che le persone vorrebbero guardare. Di seguito trovi i singoli valori di cui discuteremo. Per prima cosa discuteremo delle statistiche elevate.

Statistiche di alto livello

  • MemTotale :RAM utilizzabile totale (cioè la ram fisica meno alcuni bit riservati e il codice binario del kernel)
  • MemFree :è la somma di LowFree+HighFree (statistica complessiva)
  • MemShared :0; è qui per motivi di compatibilità ma è sempre zero.
  • Buffer :Memoria nella cache del buffer. per lo più inutile come metrica al giorno d'oggi L'archiviazione relativamente temporanea per i blocchi del disco grezzo non dovrebbe diventare tremendamente grande (20 MB circa)
  • Memorizzato nella cache :Memoria nella pagecache (diskcache) meno SwapCache, non include SwapCached
  • SwapCache :la memoria che una volta era stata scambiata, viene reinserita ma è ancora nel file di scambio (se è necessaria memoria non è necessario scambiarla ANCORA perché è già nel file di scambio. Ciò consente di risparmiare I/O)

Statistiche dettagliate

1. Statistiche VM
VM divide le pagine della cache in memoria "attiva" e "inattiva". L'idea è che se hai bisogno di memoria e un po' di cache deve essere sacrificata per questo, la togli da inattiva poiché dovrebbe non essere utilizzata. La macchina virtuale controlla regolarmente cosa viene utilizzato e sposta le cose.

Le statistiche sono:

  • Attivo :Memoria che è stata utilizzata più di recente e di solito non recuperata a meno che non sia assolutamente necessario.
  • Inact_dirty :Dirty significa "potrebbe essere necessario scrivere su disco o scambiare". Ci vuole più lavoro per essere liberato. Un esempio potrebbero essere file che non sono stati ancora scritti. Non vengono scritti in memoria troppo presto per mantenere basso l'I/O. Ad esempio, se stai scrivendo dei log, potrebbe essere meglio aspettare di avere un log completo pronto prima di inviarlo su disco.
  • Inact_clean :Si presume che sia facilmente liberabile. Il kernel cercherà di mantenere un po' di roba pulita in giro per avere sempre un po' di respiro.
  • Obiettivo_inattivo :Solo una metrica obiettivo che il kernel usa per assicurarsi che ci siano abbastanza pagine inattive in giro. Quando viene superato, il kernel non funzionerà per spostare le pagine da attive a inattive. Una pagina può anche diventare inattiva in altri modi, ad es. se esegui un lungo I/O sequenziale, il kernel presume che non utilizzerai quella memoria e la rende inattiva preventivamente. Quindi puoi ottenere più pagine inattive rispetto alla destinazione perché il kernel contrassegna parte della cache come "è più probabile che non venga mai utilizzata" e gli consente di imbrogliare nell'ordine "ultimo utilizzato".

2. Statistiche sulla memoria

  • Totale elevato :è la quantità totale di memoria nella regione alta. Highmem è tutta la memoria sopra (circa) 860 MB di RAM fisica. Il kernel utilizza trucchi indiretti per accedere alla regione di memoria elevata. La cache dei dati può andare in questa regione di memoria.
  • Totale basso :la quantità totale di memoria non highmem.
  • LowFree :La quantità di memoria libera della regione di memoria insufficiente. Questa è la memoria che il kernel può indirizzare direttamente. Tutte le strutture dati del kernel devono avere poca memoria.
  • Scambio Totale :quantità totale di memoria di scambio fisica.
  • Scambio gratuito :quantità totale di memoria di scambio libera. Memoria che è stata espulsa dalla RAM e si trova temporaneamente sul disco
  • Sporco :Memoria in attesa di essere riscritta sul disco
  • Ritorno :Memoria che viene attivamente riscritta sul disco
  • Mappa :file che sono stati mappati, come le librerie
  • Lastra :cache delle strutture dati nel kernel
  • Commesso_COME :una stima della quantità di RAM necessaria per garantire il 99,99% che non ci sia mai OOM (memoria insufficiente) per questo carico di lavoro. Normalmente il kernel sovracomanderà la memoria. Ciò significa che, ad esempio, fai un malloc da 1 GB, non succede nulla, davvero. Solo quando inizi a UTILIZZARE quella memoria malloc otterrai memoria reale su richiesta e tanto quanto ne usi. Quindi prendi un mutuo e speri che la banca non fallisca. Altri casi potrebbero includere quando mmap un file che è condiviso solo quando ci scrivi e ottieni una copia privata di quei dati. Mentre normalmente è condiviso tra i processi. Committed_AS è una stima di quanta RAM/swap avresti bisogno nel peggiore dei casi.
  • Tabelle delle pagine :quantità di memoria dedicata al livello più basso delle tabelle delle pagine.
  • ReverseMaps :numero di mappature inverse eseguite
  • VmallocTotale :dimensione totale dell'area di memoria di vmalloc
  • VmallocUsato :quantità di area vmaloc utilizzata
  • VmallocChunk :il più grande blocco contiguo dell'area di vmaloc che è libero


Linux
  1. Come riempire il 90% della memoria libera?

  2. Comprendere il file /etc/inittab in Linux

  3. Comprensione del file di configurazione /etc/profile in Linux

  4. Recupera il file cancellato che è attualmente in fase di scrittura

  5. Perché MemTotal in /proc/meminfo cambia?

Comprendere i permessi dei file Linux

/dev/null in Linux

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere il file /etc/fstab in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

/proc/[pid]/pagemaps e /proc/[pid]/maps | Linux