<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>part_round_stats</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The Linux Kernel API" /><link rel="up" href="ch14.html" title="Chapter 14. Block Devices" /><link rel="prev" href="re506.html" title="blk_insert_request" /><link rel="next" href="re508.html" title="blk_add_request_payload" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>part_round_stats</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re506.html">Prev</a> </td><th width="60%" align="center">Chapter 14. Block Devices</th><td width="20%" align="right"> <a accesskey="n" href="re508.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="part_round_stats"><a id="API-part-round-stats"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>part_round_stats — Round off the performance stats on a struct disk_stats. </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">part_round_stats </b>(</code></td><td>int <var class="pdparam">cpu</var>, </td></tr><tr><td> </td><td>struct hd_struct * <var class="pdparam">part</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id2696136"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>cpu</code></em></span></dt><dd><p> cpu number for stats access </p></dd><dt><span class="term"><em class="parameter"><code>part</code></em></span></dt><dd><p> target partition </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id2696180"></a><h2>Description</h2><p> The average IO queue length and utilisation statistics are maintained by observing the current state of the queue length and the amount of time it has been in this state for. </p><p> Normally, that accounting is done on IO completion, but that can result in more than a second's worth of IO being accounted for within any one second, leading to >100% utilisation. To deal with that, we call this function to do a round-off before returning the results when reading /proc/diskstats. This accounts immediately for all queue usage up to the current jiffies and restarts the counters again. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re506.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch14.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re508.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>blk_insert_request</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>blk_add_request_payload</span></td></tr></table></div></body></html>