cancel
Showing results for 
Search instead for 
Did you mean: 
Login & Join the DevCentral Connects Group to watch the Recorded LiveStream (May 12) on Basic iControl Security - show notes included.
Jason_Adams
F5 Employee
F5 Employee

Problem this snippet solves:

Starting in 13.x the linux kernel has increased swappiness, making it look like more RAM is in use. Well, that's because it is, and it's a good thing.

How to use this snippet:

Overview

Are you a fan of head-math?

Probably; Here is a challenge for you; look at the `free` output below and tell me what percentage of memory is used for each line of output (Mem:, -/+ buffers/cache:, Swap:)...Go!

Example `free` outupt.

# free

             total      used       free     shared   buffers    cached

Mem:      8199736   8091608    108128    105916     24532    392148

-/+ buffers/cache:   7674928    524808

Swap:     1023996     96020    927976


However let's pretend you're not a fan of head-math, or you simply like one-liners.

This is a simple one-liner to show you how much memory is actually used on the BIG-IP Linux Host system.


Pretty Memory Usage Output (In Percentage)

Straight-forward: "How much memory is each aspect of the Linux Host System using?"

Example Output (Percentages)

Mem Used:            98.6316

Used After Buffers:  6.83044

Swap Used:           9.37699


This output tells us that 98.6316 percent of RAM is used, however 91.80116 percent is just buffers/cache and is actually eligible to be used by any other service that needs it.


The takeaway here is that, though the memory used may appear to be high, that's actually a really good thing. It means that some data at some point was needed, and so it was cached in memory. It will now stay there until it is needed again or it gets pushed out by another process which needs that memory. Either way, this is a healthy system.

Code :

awk '
BEGIN {
  while (("free" | getline) > 0 ) {
    if ($1 == "Mem:") {
      print("\nMem Used:\t\t", ($3 / $2) * 100)
    }
    else if ($2 ~ "buffers") {
        print("Used After Buffers:\t", ($4 / $3) * 100)
      }
    else if($1 == "Swap:") {
      print("Swap Used:\t\t", ($3 / $2) * 100)
    }
  }
  close("free")
}
'

Tested this on version:

13.0
Version history
Last update:
‎16-May-2019 14:01
Updated by:
Contributors