GNU/Linux >> Linux Esercitazione >  >> Linux

Memoria inattiva di Linux

Ci sono casi in cui guardare la memoria inattiva è interessante, un alto rapporto tra memoria attiva e inattiva può indicare ad esempio una pressione della memoria, ma tale condizione è solitamente accompagnata da paging/scambio che è più facile da capire e osservare. Il file /proc/kpageflags contiene una bitmap a 64 bit per ogni pagina di memoria fisica, puoi ottenere un riepilogo con page-types che potrebbe venire con il tuo kernel.

La tua comprensione di attivo e inattivo non è tuttavia corretto

  • memoria attiva sono pagine a cui si è avuto accesso "recentemente"
  • memoria inattiva sono pagine a cui non si è avuto accesso "recentemente"

"recentemente" non è una misura assoluta del tempo, ma dipende anche dall'attività e dalla pressione della memoria (puoi leggere alcuni dei dettagli tecnici nel libro gratuito Capire il Linux Virtual Memory Manager , il Capitolo 10 è rilevante qui), o la documentazione del kernel (pagemap.txt).

Ogni elenco è memorizzato come un LRU (più o meno). Le pagine di memoria inattive sono buone candidate per la scrittura nel file di scambio, sia preventivamente (prima che siano richieste pagine di memoria libera) o quando la memoria libera scende al di sotto di un limite configurato e le pagine libere sono (imminentemente) necessarie.

Entrambi i flag si applicano alle pagine assegnate ai processi in esecuzione, con l'eccezione della memoria persistente o condivisa tutta la memoria viene liberata quando un processo termina, altrimenti sarebbe considerato un bug.

Questa segnalazione di pagina di basso livello non ha bisogno di conoscere il PID (e una pagina di memoria può avere più di un PID con esso mappato in ogni caso), quindi le informazioni richieste per fornire i dati richiesti non sono in un posto.

Per fare ciò in base al processo è necessario estrarre gli intervalli di indirizzi virtuali da /prod/PID/maps , converti in PFN (pagina fisica) con /proc/PID/pagemap e indicizza in /proc/kpageflags . È tutto descritto in pagemap.txt e richiede circa 60-80 righe di C. A meno che tu non stia risolvendo i problemi del sistema VM, i numeri non sono molto interessanti. Una cosa che potresti fare è contare le pagine inattive e supportate da swap per processo, questi numeri dovrebbero indicare i processi che hanno una dimensione RSS (residente) bassa rispetto a VSZ (dimensione totale della VM). Un'altra cosa potrebbe essere dedurre una perdita di memoria, ma ci sono strumenti migliori per questo compito.


Non esiste uno strumento del genere in quanto è completamente inutile per qualsiasi programma esterno.

L'unica parte del sistema che ha bisogno di saperlo è il gestore della memoria del kernel che lo userà per sapere cosa paginare (scambiare) se esaurisce la memoria disponibile.

L'unico caso correlato che potrebbe causare preoccupazioni è se il tuo scambio diventa quasi pieno. Se mai dovesse succedere, aumentalo.

Non ho mai visto problemi reali che implicassero l'indagine sulla memoria inattiva.


Linux
  1. Il kernel Linux:le 5 migliori innovazioni

  2. Utilizzo della memoria di Linux

  3. Linux:determinare correttamente l'utilizzo della memoria in Linux?

  4. Killer di memoria insufficiente di Linux

  5. Linux può ripulire la memoria?

Comando gratuito in Linux

Come cancellare la memoria di scambio in Linux

Come disabilitare permanentemente lo scambio in Linux

Come funziona la memoria di scambio in Linux?

Esempi di comandi gratuiti in Linux

Segmentazione della memoria di Linux