2

I am using Linux CentOS 7.2 version.

I have searched details about this but can't found any useful information.

What is this about?

Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232

1 Answers1

4

From free(1):

Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by the cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in /proc/meminfo, available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free)

It reports the amount of physical memory that's available, i.e. that can be used without causing the system to start swapping. How can I get the amount of available memory portably across distributions? has more information.

Stephen Kitt
  • 434,908
  • Thanks for infomation but I need to how to calculate "available" options from ram and whether relating buffer and cache memoryand etc ? – Babak Mammadov Nov 30 '16 at 07:04
  • @BabakMammadov, could you edit your question to explain exactly what information you're looking for then? Did you see the linked question? It explains the algorithm used to calculate the available memory. – Stephen Kitt Nov 30 '16 at 07:59
  • Thanks. Does "available" consist of exactly "free" and part of "buffer/cache"? Which part of "buffer/cache" does "available" not consist of? – Tim Oct 29 '18 at 14:23
  • @Tim the linked question details exactly how “available” is calculated. – Stephen Kitt Oct 29 '18 at 14:28
  • "Estimation of how much memory is available for starting new applications, without swapping. " Does it mean "Estimation of how much memory is available for starting new processes, without swapping." instead of existing processes calling execve() to run new applications? – Tim Oct 29 '18 at 14:56
  • @Tim what distinction are you trying to make? – Stephen Kitt Oct 29 '18 at 15:17
  • I remember execve() will first deallocate the original memory for the old program and then allocate new memory for the new program. So do the deallocated memory for the old program become part of "available"? – Tim Oct 29 '18 at 15:19
  • @Tim OK, but generally execve is called after a fork, so it frees memory which was just allocated. If you start a new process (without replacing an existing process), the memory you have available to do so is estimated by MemAvailable. – Stephen Kitt Oct 29 '18 at 15:21