Memory issue on My CentOS 5.8 x64 bit server

Hello,

I am using CentOS 5.8 x64 server for our one of internal application which is developed on PHP and Mysql as DB.
Currently there are 8-10 instances deployed on this server some of them are rarely used.

Below is the H/W specification fort the same :-

Procesor :- Intel(R) Xeon(R) CPU           X3470  @ 2.93GHz [7 cores]
RAM :- 15GB

Now the issue is when i check my RAM it shows 15GB all in user how ever there are no instances running and server load is also OK.

[root@server]# free -g
             total       used       free     shared    buffers     cached
Mem:            15         15          0          0          0         14
-/+ buffers/cache:          0         15
Swap:           15          0         15
[root@server]#

Below is the top output

top - 18:28:01 up 65 days,  7:04,  1 user,  load average: 0.08, 0.14, 0.10
Tasks: 194 total,   1 running, 187 sleeping,   6 stopped,   0 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16622452k total, 16162080k used,   460372k free,   215596k buffers
Swap: 16386292k total,       84k used, 16386208k free, 15405992k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0  2160  644  556 S  0.0  0.0   0:01.12 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.05 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.03 migration/1
    6 root      39  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1
    7 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/1
    8 root      RT  -5     0    0    0 S  0.0  0.0   0:00.03 migration/2

Please help me out how to figure out why OS is using huge amount of RAM

I don't see any problem with your system: your OS is using less than 1G and all the rest (14G cached) is available for use.

Thanks for prompt reply...
Then why it showing 0 under free column on executing free -g

[root@server]# free -g
                 total       used       free     shared    buffers     cached
Mem:              15         15         0          0          0         14
-/+ buffers/cache:          0         15
Swap:           15          0         15
[root@server]#

I am bit confused over here.

Under VM, not dirty pages stay mapped in case anyone wants to read them through a mmap(). If you need a page, they can be taken, but they are not free. You can run a job that mmap()'s a file, read the whole file into ram, exit, run it again, and when it mmap()s the file again, the old pages are mapped into the new process memory range and it runs much faster. This is what happens with libc.so: everyone runs printf() from the same ram page.

Because the Linux kernel works that way, the cached memory is used to optimize access to slow access data, usually disks.
Most of that could be considered available ("free") memory.

Lack of free ram is measured by page fault rates. If a machine is truly busy, even they can be reasonably high, as apps map files for reading. If the cpu queue depth is not low, then stuff is running not thrashing pages. It really depends on the applications running.

Hello All.,

Thanks for clearing my doubts...:b:
Result is i have to refer cache memory as a available memory for my next processes.