Changes

Jump to: navigation, search

IO accounting

295 bytes added, 19:46, 8 July 2015
See also: added I/O limits
This page describes how accounting for I/O activity of VE CT processes is accounted, on a VFS I/O level. This The feature is available since beginning with OpenVZ kernels version <code>028test008</code>. If you are interested in [[I/O priorities for containers]], it is described in a separate article. If you are looking for IO scheduler (i.e. lower level) statistics, see [[IO statistics]] instead.
== New resources ==
The following resources are accounted:
; read bytes
: is the amount number of bytes read by tasks. Reads are always synchronous in the kernel so this type of resources resource is the easiest one.
; dirty bytes
: is the amount number of bytes that were dirty since VE start, i.&nbsp;e. data that isn't yet flushed to disk. This type of resources resource is accounted accumulated using [[RSS_fractions_accounting|page beancounters]] and the context the page was dirtied by is determined like this:
:* if a page is mapped it's "mapper" is used as this may happen in any context (unmapping of a page under memory pressure);
:* if a page is not mapped — current BC is used as this can happen during usual write (writev) only.
; written bytes
: is the amount number of bytes flushed to disk. The beancounter to charge charged with this to is the one by which the page was dirtied by.
; canceled bytes
: is the amount number of bytes that were dirty but weren't flushed to disk.
; missed bytes
: is the amount number of bytes that were dirtied but the context (beancounter) wasn't saved due to lack of memory.
== Proc interface ==
 
=== General information ===
As it was described in [[BC proc entries|another article]] each beancounter has it's its own <code>/proc/bc/$BCID</code> directory where subsystems add their entries. I/O accounting adds an <code>ioacct</code> entry to show I/O information. This entry contains the following information:
<pre>
# cat /proc/bc/101/ioacct
</pre>
Note that <code>dirty</code> is not the size of a dirty data at the moment, but the size of a dirty data seen so far.
=== Debugging information ===
When <code>CONFIG_UBC_DEBUG_IO</code>, is on <code>/proc/bc/ioacct_debug</code> is added. This entry contains a snapshot of current dirty pages with its beancounter in system. For example:
<pre>
# cat /proc/bc/ioacct_debug
io_pbs 0
</pre>
 
== See also ==
* [[IO statistics]]
* [[I/O priorities]]
* [[I/O limits]]
[[Category:Resource management]]

Navigation menu