Changes

Jump to: navigation, search

IO statistics

2,546 bytes added, 23:19, 25 June 2013
created
This page describes the IO statistics that is collected at the IO-scheduler level. It describes the information about the container's real work with disks.

== Kernel interface ==

The stats in question are reported via the proc files. Currently it is available in kernels starting from 028stab069.1.

=== Files ===

* /proc/bc/$id/iostat
: statistics for beancounter $id
* /proc/bc/iostat
: statistics for all beancounters

=== Format ===

Files contains one row for each disk-beancounter pair.

Columns are:
{| class="wikitable"
! N !! name !! type !! description
|-
| 1 || disk || string || Disk device name, e.g. sda or hda
|-
| 2 || ub id || integer || Beancounter id
|-
| 3 || state || char || currently unused
|-
| 4 || busy queues || integer || The number of queues with requests (see below)
|-
| 5 || on dispatch || integer || The number of requests dispatched to a hardware
|-
| 6 || activations count || integer || The number of switches to active state
|-
| 7 || wait time || integer || Total time in waiting state in milliseconds
|-
| 8 || used time || integer || Total time in active state in milliseconds.
|-
| 9 || requests completed || integer || The number of completed requests
|-
| 10 || sectors transferred || integer || The number of 512 sectors transferred (includes both read and write)
|}

New columns might be added at the end of row in future!

=== Queues ===

Each beancounter may have many queues with requests. Typically there's one queue for each task with synchronous (e.g. reads) requests and and the fixed amount of them for asynchronous requests (e.g. cached writes) for each beancounter.

== Interpretation ==

=== Disk usage times ===

The disk usage should be reported in a top-like style. Consider the following code

read_iostat(&a);
sleep(interval);
read_iostat(&b);

Now the following numbers should be calculated and shown.

active = sum(b.used_time - a.used_time) * 100 / interval;
waiting = sum(b.wait_time - b.wait_time) * 100 / interval;
idle = 100 - (active + waiting);

The <code>sum</code> function sums up the times for all disk for the beancounter.

Additionally two more values should be shown for beancounter.

=== IO speed ===

The value

sum(b.transfered_sectors - a.transfered_sectors) * 512 / interval

denotes the speed of the IO performed by the beancounter.

=== Average request size ===

The value

(b.transfered_sectors - a.transfered_sectors)/(b.requests_completed - a.requests_completed)

denotes the average request size for a beancounter to a particular disk.

Navigation menu