比较一下
#free -m caching总共使用的空闲共享缓冲区 Mem:72363 68035 4328 0 522 66294 - / + buffers / cache:1218 71145 掉期:12291 0 12291
和这个:
#snmpwalk -c public -v 2c localhost .1.3.6.1.4.1.2021.4 UCD-SNMP-MIB :: memIndex.0 = INTEGER:0 UCD-SNMP-MIB :: memErrorName.0 = STRING:交换 UCD-SNMP-MIB :: memTotalSwap.0 = INTEGER:12586888 kB UCD-SNMP-MIB :: memAvailSwap.0 = INTEGER:12586784 kB UCD-SNMP-MIB :: memTotalReal.0 = INTEGER:74100516 kB UCD-SNMP-MIB :: memAvailReal.0 = INTEGER:4429580 kB UCD-SNMP-MIB :: memTotalFree.0 = INTEGER:17016364 kB UCD-SNMP-MIB :: memMinimumSwap.0 = INTEGER:16000 kB UCD-SNMP-MIB :: memBuffer.0 = INTEGER:534804 kB UCD-SNMP-MIB :: memCached.0 = INTEGER:44238560 kB UCD-SNMP-MIB :: memSwapError.0 = INTEGER:noError(0) UCD-SNMP-MIB :: memSwapErrorMsg.0 = STRING:
为什么免费显示“caching”66294MB,而snmp显示“memCached”约44238MB? 不应该是一样的吗?
查看MIB我看到“memCached”是用于caching的“物理或虚拟”内存。 (不要告诉我它把磁盘caching交换)^^
目标是通过snmp找出真正的自由物理内存(即在这里free
显示的71145)。
更多信息
#cat / proc / meminfo MemTotal:74100516 kB MemFree:4422092 kB 缓冲区:542168 kB caching:44239460 kB SwapCached:4 kB Active:16455504 kB 不活动:28707308 kB SwapTotal:12586888 kB SwapFree:12586784 kB 脏:2536 kB 写回:0 kB AnonPages:381088 kB 映射:252132 kB 板:23961488 kB SReclaimable:23648768 kB SUnreclaim:312720 kB PageTables:7812 kB NFS_Unstable:0 kB 弹跳:0 kB WritebackTmp:0 kB CommitLimit:49637144 kB Committed_AS:4 kB VmallocTotal:34359738367 kB VmallocUsed:264124 kB VmallocChunk:34359474191 kB HugePages_Total:0 HugePages_Free:0 HugePages_Rsvd:0 HugePages_Surp:0 Hugepagesize:2048 kB DirectMap4k:7936 kB DirectMap2M:75481088 kB
从free(1)
的manpage free(1)
:
caching页面caching和平板使用的内存(Cached和Slab在/ proc / meminfo中)
free
包括caching中的板块分配; UCD-SNMP-MIB不。 如果你添加板块分配,你会得到:
UCD-SNMP-MIB::memCached.0 + slab = 44238560 + 23961488 = 68200048 KB
这更接近free
报道(67885056 KB)。
至于获得真正的自由物理内存,你可以做的最好的这个MIB是一个粗略的估计:
totFree = memAvailReal.0 + memBuffer.0 + memCached.0 = 4429580 + 534804 + 44238560 = 49202944 KB
这仍然大大低于免费报告的free + buffers / cache的值。
请注意,HOST-RESOURCES-MIB并不是最好的; 看到我堆栈溢出类似的问题的答案 。
较新的内核实际上为此提供了一个更好的指标。 再次从free(1)
页:
可得到
估计有多less内存可用于启动新的应用程序,而不需要交换。 与caching或空闲字段提供的数据不同,此字段考虑了页面caching,并且由于项目正在使用(MemA可用于/ proc / meminfo中,所以内核3.14上提供了MemA,所以可能不会收回所有可回收的内存块内核2.6.27+,否则一样免费)
这个值将低于free + buffers / cache的总和,并且是可用内存的一个更好的标准,但是我没有在/proc/meminfo
看到它,而且我还没有find使用它的MIB。