linux – SNMP内存值与`free`不匹配

linux – SNMP内存值与`free`不匹配,第1张

概述比较一下 # free -m total used free shared buffers cachedMem: 72363 68035 4328 0 522 66294-/+ buffers/cache: 1218 7 比较一下
# free -m             total       used       free     shared    buffers     cachedMem:         72363      68035       4328          0        522      66294-/+ buffers/cache:       1218      71145Swap:        12291          0      12291

还有这个:

# snmpwalk -c public -v 2c localhost .1.3.6.1.4.1.2021.4UCD-SNMP-MIB::memIndex.0 = INTEGER: 0UCD-SNMP-MIB::memErrorname.0 = STRING: swapUCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 12586888 kBUCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 12586784 kBUCD-SNMP-MIB::memTotalReal.0 = INTEGER: 74100516 kBUCD-SNMP-MIB::memAvailReal.0 = INTEGER: 4429580 kBUCD-SNMP-MIB::memTotalFree.0 = INTEGER: 17016364 kBUCD-SNMP-MIB::memminimumSwap.0 = INTEGER: 16000 kBUCD-SNMP-MIB::memBuffer.0 = INTEGER: 534804 kBUCD-SNMP-MIB::memCached.0 = INTEGER: 44238560 kBUCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:

为什么免费显示66294MB用于“缓存”,而snmp显示大约44238MB用于“memCached”?那应该不一样吗?

看看MIB我发现“memCached”是用于缓存的“物理或虚拟”内存. (不要告诉我它将磁盘缓存放入交换中)^^

目标是通过snmp找出真正的自由物理内存(即此处为免费显示的71145).

更多信息

# cat /proc/meminfoMemTotal:     74100516 kBMemFree:       4422092 kBBuffers:        542168 kBCached:       44239460 kBSwapCached:          4 kBActive:       16455504 kBInactive:     28707308 kBSwapTotal:    12586888 kBSwapFree:     12586784 kBDirty:            2536 kBWriteback:           0 kBAnonPages:      381088 kBMapped:         252132 kBSlab:         23961488 kBSReclaimable: 23648768 kBSUnreclaim:     312720 kBPagetables:       7812 kBNFS_Unstable:        0 kBBounce:              0 kBWritebackTmp:        0 kBCommitlimit:  49637144 kBCommitted_AS:        4 kBVmallocTotal: 34359738367 kBVmallocUsed:    264124 kBVmallocChunk: 34359474191 kBHugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0HugePages_Surp:      0Hugepagesize:     2048 kBDirectMap4k:      7936 kBDirectMap2M:  75481088 kB
解决方法 从免费的联机帮助页(1):

cache Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)

free包括缓存中的slab分配; UCD-SNMP-MIB没有.如果你添加slab分配,你会得到:

UCD-SNMP-MIB::memCached.0 + slab = 44238560 + 23961488                                 = 68200048 KB

这更接近免费报道(67885056 KB).

至于获得真正的自由物理内存,使用此MIB可以做的最好的事情是粗略估计:

totFree = memAvailReal.0 + memBuffer.0 + memCached.0        = 4429580        + 534804      + 44238560        = 49202944 KB

这仍然明显低于免费报告的空闲缓冲区/缓存的值.

请注意,HOST-RESOURCES-MIB并不是更好;请参阅my answer到Stack Overflow上的类似问题.

较新的内核实际上为此提供了更好的指标.再次从free(1)手册页:

available

Estimation of how much memory is available for starting new applications,without swapPing. Unlike the data provIDed by the cache or free fIElds,this fIEld takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in /proc/meminfo,available on kernels 3.14,emulated on kernels 2.6.27+,otherwise the same as free)

这个值将低于可用缓冲区/缓存的总和,并且可以更好地衡量可用内存,但我没有在/ proc / meminfo中看到它并且我没有找到使用它的MIB.

总结

以上是内存溢出为你收集整理的linux – SNMP内存值与`free`不匹配全部内容,希望文章能够帮你解决linux – SNMP内存值与`free`不匹配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1035754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存