I saw memory usage by using System Monitor it showed me 778Mb/2012Mb. Then I checked it using free -m on terminal. I saw this

             total       used       free     shared    buffers     cached
Mem:          2012       1922         89          0        130       1013
-/+ buffers/cache:        778       1234
Swap:         2047          0       2047

How come this vast difference. Looks like system monitor is showing -/+ bufferes/cache reading as total used memory. But what is this exactly? If used memory of 1922Mb was true, then my system would have become horrible slow. Will anyone explain this? I use fedora 13

  • Your reasoning is backwards. The more memory the system uses, the faster it gets. That why you put more memory in a machine if it's slow -- so it can use more memory and thus run faster. (This is a very common and very fundamental misunderstanding of how memory works on a modern computer. Free memory does nothing to make your machine faster, it just sits there. Used memory is good, it holds useful data that can save the computer from having to do things like read from disk.) – David Schwartz Jun 20 '12 at 11:26

I like to point people with this concern to this website: www.linuxatemyram.com

Linux ate my ram!

What's going on?

Linux is borrowing unused memory for disk caching. This makes it looks like you are low on memory, but you are not! Everything is fine!


Why does top and free say all my ram is used if it isn't?

This is just a misunderstanding of terms. Both you and Linux agree that memory taken by applications is "used", while memory that isn't used for anything is "free".

But what do you call memory that is both used for something and available for applications?

You would call that "free", but Linux calls it "used".

Memory that is               You'd call it  Linux calls it
---------------------------  -------------  --------------
taken by applications                 Used            Used
available for applications,
  and used for something              Free            Used
not used for anything                 Free            Free

This "something" is what top and free calls "buffers" and "cached". Since your and Linux's terminology differs, you think you are low on ram when you're not.

How do I see how much free ram I really have?

To see how much ram is free to use for your applications, run free -m and look at the row that says "-/+ buffers/cache" in the column that says "free". That is your answer in megabytes.


  • enlightening article – Shades88 Jun 21 '12 at 10:16

The majority of the memory that you are talking about it simply cached data. That means (generally) that the operating system has predicted what is likely to be accessed in the near future, and if it guesses correctly (very very common) then you get a significant speed boost.

If for whatever reason, more memory is needed, some things simply get flushed from the cache.

A dramatic slowdown occurs when the OS/programs are forced to pull directly from the swap partition, as a hard drive is much slower than RAM.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.