Concept of free –m command in Linux

I wanted to know the concept of free -m command as there are different rows of Mem, -/+ buffers/cache & Swap in the output. As an example, it is showing 195 as free Mem in my server but 13850 in the free section of the -/+ buffers/cache row. The output needs in depth knowledge of the different parameters of the command.

I hope, my question is clear.

Please revert with the reply to my query.

Regards

             total       used       free     shared    buffers     cached
Mem:          3816       3569        247          0        118       2397
-/+ buffers/cache:       1053       2763
Swap:         3823         13       3810

ok, this is the output for my laptop.

The free command is used to display the amount of free and used memory on a system. The -m option tells free to print the output in MB.

My laptop has 4Gb currently.

Linux attempts to utilize all of the memory on the system and not leave any sitting idle, like some other operating systems have done over time. Memory will be used for the OS and applications, but the remainder will be used as "buffers and cache". The kernel will keep items in memory that are needed often or are predicted to be needed for faster access. The memory used for "buffers and cache" is available for applications or the OS to use. If required, it is quickly flushed and used.

To find the actual available memory on my system, take the last number on the Mem line (247) and add it to the last number on the Mem line (2397). So currently, I have about 3G of memory available.

Most of this information is available via the manpage and simple google searches. Take a look and you should have all of your questions answered.

Thanks for your answer. I wanted to add something, if we add 118 to the total of 2397 & 247, it would be 2762 which is very near the free memory on line 2, 2763. Please confirm on this.

Also, as per your answer, the architecture of Linux is to utilize all the memory on the system.

the line +/- buffers/cache basically shows the memory used and free without taking into account how much is used for buffers or cache.

This is because cached memory is not actually used memory, it is information that is stored for quick retrieval if requested again from previous operations but dumped straight away if memory is required to be written to. This process makes the system run quicker as queries are using data stored on RAM instead of hard disk which is obviously a much quicker process.

So yes, top line free + cached = free on 2nd line

Linux will use all the installed memory if you install a 64 bit kernel, otherwise, you need to use a PAE kernel in which case the limit is 64 GB.

Thanks for your answer. Does it mean that if it is a 64 bit kernel, it could use even 40 GB if the laptop has that much memory? Also, does it mean that a PAE kernel would use maximum of 64 GB of memory even if the laptop/ machine had 128 GB of memory?

I hope my queries are clear that

1) A 64 bit kernel would use even upto 40 GB of memory if I increased the laptop memory to 40 from 8 GB.
2) A PAE kernel would use only 64 GB of memory even if the laptop/machine had 128 GB of memory.

Request you to please revert.

a) Yes, and up to 1 TB (as of 2.6 kernel branch).
b) Yes.