Linux free memory confusion.
595762May 4 2011 — edited May 4 2011Hi,
I am trying to know the amount of free memory in linux however get more confused.
all hereunder commands run during one minute at the same box:
1)
$ free -m
total used free shared buffers cached
Mem: 24118 23992 126 0 0 14193
-/+ buffers/cache: 9799 14319
Swap: 16383 0 16383
2)
$top
Mem: 24697152k total, 24573876k used, 123276k free, 0k buffers
Swap: 16777208k total, 84k used, 16777124k free, 14539380k cached
3)
$cat /proc/meminfo
MemTotal: 24697152 kB
MemFree: 122956 kB
Buffers: 0 kB
Cached: 14556828 kB
SwapCached: 0 kB
Active: 9905800 kB
Inactive: 14418416 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 24697152 kB
LowFree: 122956 kB
SwapTotal: 16777208 kB
SwapFree: 16777124 kB
Dirty: 36 kB
Writeback: 0 kB
AnonPages: 9767396 kB
Mapped: 57128 kB
Slab: 179524 kB
PageTables: 32464 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 29125784 kB
Committed_AS: 11207060 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 8516 kB
VmallocChunk: 34359729783 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
3)
Script:
---memScriptStart----
TOT=`cat /proc/meminfo | grep MemTotal: | awk '{print $2}'`
USED=`cat /proc/meminfo | grep Active: | awk '{print $2}'`
FREE=$[$TOT - $USED ]
LOG=/tmp/mem_monitor.log
echo > $LOG
SEND=0
if [ "$USED" -gt "0" ]; then
USEDPERC=$[$USED * 100 / $TOT]
echo "Used Percentage : $USEDPERC %"
TOTMB=$[$TOT / 1024 ]
USEDMB=$[$USED / 1024 ]
FREEMB=$[$TOTMB - $USEDMB ]
# echo "Used Percentage : $USEDPERC"
if [ "$USEDPERC" -gt "30" ]; then
SEND=1
STATUS="Warning"
echo "------------------------------------------------------------------" >> $LOG
echo `hostname` >> $LOG
echo "------------------------------------------------------------------" >> $LOG
echo "Total Memory (MB) : $TOTMB" >> $LOG
echo "Used Memory (MB) : $USEDMB" >> $LOG
echo "Free Memory (MB) : $FREEMB" >> $LOG
echo "Used Percentage : $USEDPERC %" >> $LOG
echo "------------------------------------------------------------------" >> $LOG
if [ "$USEDPERC" -gt "95" ]; then
STATUS="Critical"
fi
fi
fi
if [ "$FREEMB" -eq "0" ]; then
SEND=1
STATUS="Fatal"
echo "------------------------------------------------------------------" >> $LOG
echo " No free memory available in " `hostname` >>$LOG
echo "------------------------------------------------------------------" >> $LOG
fi
cat $LOG
---memScriptEnd----
Samle output:
------------------------------------------------------------------
hostname
------------------------------------------------------------------
Total Memory (MB) : 24118
Used Memory (MB) : 10532
Free Memory (MB) : 13586
Used Percentage : 43 %
------------------------------------------------------------------
-
Thank you,
Edited by: user592759 on May 4, 2011 4:03 AM