Obtain some system statistics from vmstat

December 8th, 2007 mysurface Posted in Admin, date, tail, vmstat | Hits: 87993 | 4 Comments »

vmstat know as virtual memory statistics reporter, but it gives more information the just only virtual memory.

Besides memory, it covers overall CPU usage, IO, Swap, Proc, System interupts and context switching. vmstat is pretty easy to use, ignores all other options, the normal usage will be looks like this:

vmstat [delay] [counts]

Let say, you want to print out the stat every 1 seconds for 60 times. Meaning you wanna to get the stat every second within a particular minute. You do this:

vmstat 1 60

The output will looks like this:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 3  0  57768   5712   4696 174692    0    0     0   496  458 1636 19  2 77  2
 2  0  57768   5712   4696 174692    0    0     0     0  466 1687 25  1 74  0
 0  0  57768   5712   4696 174704    0    0     0     0  438  990  7  1 92  0
 2  0  57768   5712   4696 174704    0    0     0     0  459 1020  6  0 94  0
 2  0  57768   5712   4696 174704    0    0     0     0  429  965  7  0 93  0
 2  0  57768   5712   4704 174696    0    0     0    40  455 1039  3  0 97  0
...

Okay, lets look at the field details:

FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of processes waiting for run time.
       b: The number of processes in uninterruptible sleep.

   Memory
       swpd: the amount of virtual memory used.
       free: the amount of idle memory.
       buff: the amount of memory used as buffers.
       cache: the amount of memory used as cache.
       inact: the amount of inactive memory. (-a option)
       active: the amount of active memory. (-a option)

   Swap
       si: Amount of memory swapped in from disk (/s).
       so: Amount of memory swapped to disk (/s).

   IO
       bi: Blocks received from a block device (blocks/s).
       bo: Blocks sent to a block device (blocks/s).

   System
       in: The number of interrupts per second, including the clock.
       cs: The number of context switches per second.

   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code. (user time, including nice time)
       sy: Time spent running kernel code. (system time)
       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
       wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
       st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

I usually interested on two field, under Memory, field free, that indicates me how much left my idle memory space. Under CPU, field id, it tells much how busy is my CPU is. If my free or id goes very low, that indicates my system is in a danger.

vmstat is very handy when comes to remote monitoring. You can ssh to a remote server execute vmstat for simple system monitoring like this:

ssh username@domain.com "vmstat 60 99999"

vmstat does not print out the date time, sometimes you wants to log down the stat with time stamp so that you can generate report based on the data you obtained.

Lets make use of some bash for loop, tail and date command,

vmstat 1 1;for ((;;));do date; vmstat 10 2 | tail -n1;done

The line above print out the stat every 10 seconds.

Output will looks like this:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0  57644   6096   8080 160828    0    1    30    31  441  137 11  1 86  1
Sat Dec  8 12:51:40 MYT 2007
 0  0  57644   6152   8092 160828    0    0     0    38  449  989  8  0 92  0
Sat Dec  8 12:51:50 MYT 2007
 0  0  57644   5864   8108 160828    0    0     0     8  443  980  5  0 95  0
Sat Dec  8 12:52:00 MYT 2007
...

vmstat support display disk usage and other statistics as well, you can check out the man pages for more info.

4 Responses to “Obtain some system statistics from vmstat”

  1. Sweet!

  2. [...] Read nifty little intro into this powerful program from Linux By Examples… [...]

  3. [...] 翻译自 Obtain some system statistics from vmstat [...]

  4. Thank you that was superhelpful!

    –P

Leave a Reply