これを比較する
#free -m キャッシュされた使用済み空き共有バッファーの合計 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:swap 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:
Freeが「cache」に66294MBを表示するのに、snmpが「memCached」に約44238MBを表示するのはなぜですか?それは同じではないでしょうか?
MIBを見ると、「memCached」はキャッシュに使用される「物理または仮想」メモリであることがわかります。 (ディスクキャッシュをスワップに入れるとは言わないでください)^^
目標は、snmpを介して実際の空き物理メモリ(つまり、ここではfree
で示される71145)を見つけることです。
より詳しい情報
#cat /proc/meminfo MemTotal:74100516 kB MemFree:4422092 kB バッファ:542168 kB キャッシュ:44239460 kB SwapCached:4 kB アクティブ:16455504 kB 非アクティブ:28707308 kB SwapTotal:12586888 kB SwapFree:12586784 kB ダーティ:2536 kB ライトバック:0 kB AnonPages:381088 kB マッピング:252132 kB スラブ:23961488 kB S再生可能: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 [.____。 :0 HugePages_Rsvd:0 HugePages_Surp:0 Hugepagesize: 2048 kB DirectMap4k:7936 kB DirectMap2M:75481088 kB
free(1)
のマンページから:
cacheページキャッシュとスラブによって使用されるメモリ(/ proc/meminfoのキャッシュとスラブ)
free
にはキャッシュ内のスラブ割り当てが含まれます。 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
によって報告された空き+バッファ/キャッシュの値よりも大幅に低くなっています。
Host-RESOURCES-MIBは優れていないことに注意してください。 Stack Overflowの同様の質問については、 私の回答 を参照してください。
新しいカーネルは、実際にはこれに対してより優れたメトリックを提供します。再びfree(1)
マンページから:
利用可能
スワップせずに、新しいアプリケーションを起動するために使用できるメモリの量の見積もり。キャッシュまたは空きフィールドによって提供されるデータとは異なり、このフィールドはページキャッシュを考慮し、アイテムが使用されているためにすべての再利用可能なメモリスラブが再利用されるわけではありません(MemAvailable in/proc/meminfo、カーネル3.14で利用可能、でエミュレートカーネル2.6.27+、それ以外は無料と同じ)
この値は、空き+バッファ/キャッシュの合計よりも低く、使用可能なメモリのより良いゲージになりますが、_/proc/meminfo
_に表示されず、それを使用するMIBが見つかりません。