Relatório de Memória Livre [duplicado]

0

Eu tenho um sistema em que estamos constantemente armazenando arquivos na RAM (sob / tmp /), processando-os e excluindo-os.

Alguns arquivos que precisamos manter na RAM e outros não.

Meu problema é que eu quero informar a quantidade de memória RAM que pode ser usada para armazenar arquivos.

Quando uso "livre", posso receber um relatório que diz:

free: 10000 (KB)

No entanto, quando executo cat /proc/meminfo , obtenho uma história diferente / mais significativa:

memfree:     10000 (KB)
Cached:     100000 (KB)
SwapCached:      0 (KB)
Active:      59000 (KB)
Inactive:    41000 (KB)

Ok, eu aproximei / arredondei os valores para maior clareza.

A partir desta postagem: memória inativa do linux , posso ver que "inativa" a memória é utilizável e, portanto, - no que me diz respeito - é gratuita.

Portanto, devo poder reportar 10000 KB + 41000 KB de memória livre (bem, ok, não "gratuita", mas utilizável).

Existe algum comando que eu possa usar (ou algum outro método) pelo qual eu possa relatar a memória total "utilizável"?

Eu acredito que o total utilizável, tanto quanto eu entendo, é "livre" + "inativo".

Obrigado

    
por code_fodder 27.03.2017 / 17:03

1 resposta

1

Desde o 3.14, o kernel do Linux rastreia quanta memória está realmente disponível - isto é, alocável sem bater swap, incluindo memória recuperável - na entrada MemAvailable em /proc/meminfo . Isso já inclui a memória recuperável rastreada como inativa, então não há necessidade de adicionar isso.

Em kernels mais antigos, você pode usar a fórmula dada na resposta a Como posso obter a quantidade de memória disponível de forma portável entre distribuições? :

awk -v low=$(grep low /proc/zoneinfo | awk '{k+=$2}END{print k}') \
 '{a[$1]=$2}
  END{ 
   print a["MemFree:"]+a["Active(file):"]+a["Inactive(file):"]+a["SReclaimable:"]-(12*low); 
  }' /proc/meminfo 
    
por 27.03.2017 / 19:14