Hi team
I have three physical servers running on Red Hat Enterprise Linux Server release 6.2 with the following memory conditions:
# cat /proc/meminfo | grep -i mem
MemTotal: 8062888 kB
MemFree: 184540 kB
Shmem: 516 kB
and the following swap conditions:
# cat /proc/meminfo | grep -i swap
SwapCached: 688 kB
SwapTotal: 10305528 kB
SwapFree: 10302584 kB
# cat /proc/sys/vm/swappiness
60
# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 10305528 2944 -1
As you can see the swapspace is double the size of memory and yet the swap usage is relatively low compared to actual memory usage:
# free -mt
total used free shared buffers cached
Mem: 7873 7693 179 0 380 4241
-/+ buffers/cache: 3071 4802
Swap: 10063 2 10061
Total: 17937 7696 10241
I am trying to understand why the processes are not using swap instead, but relying on RAM until it reached a critical level of 97% last weekend (sorry, haven't got the numbers all I have are charts from nagios) How can I make the process use swap instead of so much of RAM?
Having an aye-karamba moment here
Hi, this is normal Linux behavior. Linux uses free memory for cache and buffers, which is immediately released when it is needed.. Search these forums for more details..
Scrutinizer, I did search and found that it's OK for RAM usage to be critically high, but if customer has no issue with high swapping (i know disk access will be slower) wouldn't this be a better option instead?
No, in general, it is not a better option. See Help! Linux ate my RAM!
1 Like
You are having the standard linux newbie memory freakout. We sometimes see a few of these a month. Take a deep breath and relax -- you're not running out of memory.
Memory that's otherwise sitting idle gets used for caches when there's anything to cache, because it's wasted just sitting around doing nothing. The kernel gives it up just as readily as any other unused memory -- you don't need to "free" anything or put your computer through weird convolutions to "release the cache". Everything is fine.
Just consider 'cache' and 'free' to get truer numbers on how much memory is available.
1 Like
This might help you out also:
vmstat -s -S M | egrep 'mem|swap'
Memory is faster than swap. If you have a lot of unused memory, then you are wasting it.
1 Like
@corona, thanks that was a relief. I logged a case with RHEL just in case and they told me the same thing you did but in totally incomprehensible terms
@mark, thanks for the vmstat syntax. I suppose cat /proc/meminfo provided me with more or less the same info
@murphy, I did check the link you provided but I got lost halfway thru I think I was just too stressed to figure it out yesterday!
Anyways, just in case someone comes across this thread and wants answers, following is the math concoction:
For example (Units are in megabytes):
# free -m
total used free shared buffers cached
Mem: 1000 900 100 0 350 350
-/+ buffers/cache: 200 800
In this example, as far as applications are concerned the system is using only 200MB of memory and has 800MB free and available for use if needed.
Note: in this example,
Total Physical Memory = 1000 M
Physically Used Memory = 900 M
Actual used memory = 200 M
buffers = 350 M
cached = 350 M
Physically Free Memory = 100 M
Memory free for Applications = 800 M
The items to note here are:
<Physically Used Memory> = <Actual used memory> + <buffers> + <cache> = 200 + 350 + 350 = 900 M
<Physically Free Memory> = <Total Physical Memory> - <Actual used memory> - <buffers> - <cache> = 1000 - 200 - 350 - 350 = 100 M
<Memory free for Applications> = <Total Physical Memory> - <Actual used memory> = 1000 - 200 = 800 M
<Memory used by Applications> = <Physically Used Memory> - <buffers> - <cache> = 900 - 350 - 350 = 200 M
1 Like