Eu estou inicializando uma imagem de disco via PXE, é um sistema completo em um disco initrd
. Eu gostaria de medir a memória livre real do sistema (não incluindo buffers e cache do sistema de arquivos). Foi-me dito que isso é feito adicionando os valores MemFree, Buffers e Cached de /proc/meminfo
. Para um sistema regular, isso fornece resultados precisos.
No entanto, com a configuração do meu ramdisk, ele não fornece resultados precisos. Eu suponho que a memória que é usada pelo ramdisk é adicionada ao valor "Em cache":
[root@node1 ~]# cat /proc/meminfo
MemTotal: 8173700 kB
MemFree: 7443696 kB
Buffers: 0 kB
Cached: 650236 kB
SwapCached: 0 kB
MemCommitted: 0 kB
VirtualSwap: 0 kB
Active: 27156 kB
Inactive: 632204 kB
Active(anon): 4636 kB
Inactive(anon): 4616 kB
Active(file): 22520 kB
Inactive(file): 627588 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 9156 kB
Mapped: 8712 kB
Shmem: 128 kB
Slab: 38548 kB
SReclaimable: 29420 kB
SUnreclaim: 9128 kB
KernelStack: 536 kB
PageTables: 1268 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4086848 kB
Committed_AS: 51216 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 288032 kB
VmallocChunk: 34359448036 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 10240 kB
DirectMap2M: 8378368 kB
Agora, isso infelizmente me fornece valores incorretos para duas métricas que gostaria de calcular:% MemUsed e AmountMemFreeActual. Com um Ramdisk, o valor "Em cache" é, pelo menos em parte, irrecuperável e, portanto, não pode ser usado para calcular a memória livre real.
Para calcular corretamente, eu precisaria saber o uso de memória do ramdisk, e eu não acho que posso simplesmente pegar o valor "Cached", já que isso também pode incluir outros dados do sistema de arquivos em cache.
De preferência, eu gostaria de tirar o uso da memória ramdisk da imagem para ambas as métricas, uma vez que é a memória não recuperável AFAIK. Alguma idéia de onde procurar?
Editar: "livre" (@ answer1) fornece os mesmos valores errados. O valor "livre" da saída "livre" é enganador de qualquer maneira. A memória "Free" é normalmente "Free" + "Buffers" + "Cached". Meu problema é que o ramdisk como memória não recuperável (diferentemente dos dados do sistema de arquivos em cache) não pode ser recuperado.