# proc_stat plugin

This plugin provides an interface to the /proc/stat file.

## Functions

proc_stat(key) | parse absolute values from /proc/stat |

proc_stat(key, delay) | parse delta values from /proc/stat |

proc_stat::cpu(key, delay) | parse cpu info from /proc/stat |

proc_stat::disk(device, key, delay) | parse disk info from /proc/stat |

### proc_stat(key)

Valid keys are:

page.in | number of page-in events |

page.out | number of page-out events |

swap.in | number of swap-in events |

swap.out | number of swap-out events |

intr.<n> | number of interrupts #n |

intr.sum | total number of interrupts |

all other entries from /proc/stat are provided verbatim, with the first column as a key. Do a 'cat /proc/stat' to see which values are supported on your system.

The 'delay' value specifies a period of time (in milliseconds) for a delta computation. If you use a delta of 0 (zero) or omit the delta parameter, you get the absolute values (same as in /proc/stat). For delay values > 0 you get the delta value in 1/sec unit. Using a delta value of 500 msec seems to be a good choice.

### proc_stat::cpu(key, delay)

Valid keys are:

user | percentage spent in user mode (0..100) |

nice | percentage spent in niced tasks (0..100) |

system | percentage spent in kernel mode (0..100) |

iowait | percentage spent in kernel mode (0..100) |

irq | percentage spent in kernel mode (0..100) |

softirq | percentage spent in kernel mode (0..100) |

idle | percentage idle (0..100) |

busy | percentage busy (100-idle) |

The 'delay' value specifies a period of time (in milliseconds) for a delta computation. If you use a delta of 0 (zero), you get the absolute values (same as in /proc/stat). For delay values > 0 you get the delta value in 1/sec unit. Using a delta value of 500 msec seems to be a good choice.

Keys iowait,irq and softirq can be used only with **Kernel 2.6**

### proc_stat::disk(device, key, delay)

The 'device' parameter specifies the device in the form 'major:minor'. Do a 'cat /proc/stat' to see which devices are available on your system. Note that the 'device' field is interpreted as a 'regular expression' (regex), if you use a regex you get the sum of all matching devices (e.g. 'proc_stat::disk ('3:.*', 'rblk', 500)' will return the sum of read blocks for 3:0, 3:1, 3:2, ...)

Valid keys are:

io | total number of disk I/O events |

rio | number of disk read events |

rblk | number of blocks read from disk |

wio | number of disk write events |

wblk | number of blocks written to disk |

The 'delay' value specifies a period of time (in milliseconds) for a delta computation. If you use a delta of 0 (zero), you get the absolute values (same as in /proc/diskstats). For delay values > 0 you get the delta value in 1/sec unit. Using a delta value of 500 msec seems to be a good choice.

**Kernel 2.6**: With Kernel 2.6, the 'disk_io' lines disappeared from /proc/stat, and therefore you'll get no results with this plugin. Use the diskstats-plugin instead!

## Example

Widget BusyBar { class 'Bar' expression proc_stat::cpu('busy', 500) expression2 proc_stat::cpu('system', 500) length 10 direction 'E' update 100 } Widget Disk { class 'Text' expression (proc_stat::disk('.*', 'rblk', 500) + proc_stat::disk('.*', 'wblk', 500))/2 prefix 'I/O' width 10 precision 0 align 'R' update 100 }