3

The server has about 24GB memory. By running free -g I find the memory is used up

             total       used       free     shared    buffers     cached
Mem:            23         23          0          0          0         18
-/+ buffers/cache:          4         19
Swap:           56          2         53

Then I did some research into what has used up all these memory by top then M. But it seems the memory is quite free in the %MEM column.

What can I do to free some memory? This is a server for calculation so it is better not to restart the computer.

onemach
  • 133
  • 4
    What issues are you experiencing that require you to free up the cached/buffer memory? – Matt May 09 '14 at 06:07
  • @mtm After finding out the meaning of free column of buffer/cache row, I guess it is just OK. The server does not cache that lot before. – onemach May 10 '14 at 00:57

2 Answers2

4

You're misinterpreting the output of free. What you posted is showing that you have 19 GB of RAM free. The 23 GB you're seeing is used by the system as cache but is still readily available for applications. That is also why top shows the memory as free..

See Linuxatemyram.com for a more detailed explanation

Creek
  • 5,062
0

You can refer to this question for determining exact free memory.

  • By default the linux has a very efficient memory management process that should be freeing any cached memory on the machine that it is being run on.

  • However when it comes to cached memory, linux may at times decide that the cached memory is being used and is needed which can lead to memory related issues and ultimately use up the free memory. To counter it, you can force linux to free up any stored cached memory.

To free memory immediately, you can simply do this,

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

EDITED: You can also run this command as a cronjob.

As @mjturner pointed out, it not very recommended as it can cause performace bottlenecks.

delta24
  • 954
  • What if I do not have root access on my system? – Bernhard May 09 '14 at 06:14
  • 1
    Linux creates the page and fs caches for performance reasons. I'm not sure dropping them hourly will be of much benefit. Maybe on a memory constrained machine where you don't rely on the fs much. – Matt May 09 '14 at 06:16
  • @Bernhard you will need root, or at least sudo root access. – Matt May 09 '14 at 06:16
  • Memory is managed at kernel level, you need atleast sudo root access. You need to give some input on what issues are affecting for further clarification as @mtm suggested. – delta24 May 09 '14 at 06:23
  • @delta24 Well, it was not my question, I am just asking out of curiosity. :) – Bernhard May 09 '14 at 06:31
  • I was refering to @Bernhard. I was giving credit for asking it. :) Here you cannot reference 2 users in a comment. That ought to improve. – delta24 May 09 '14 at 06:33
  • 1
    @delta24 I don't think freeing the page cache every hour is wise advice. From the Linux kernel documentation: Use of this file can cause performance problems. Since it discards cached objects, it may cost a significant amount of I/O and CPU to recreate the dropped objects, especially if they were under heavy use. Because of this, use outside of a testing or debugging environment is not recommended. – mjturner May 09 '14 at 13:10