]> granicus.if.org Git - sysstat/commit
Workaround for iowait being decremented
authorSebastien GODARD <sysstat@users.noreply.github.com>
Wed, 2 Sep 2020 17:04:04 +0000 (19:04 +0200)
committerSebastien GODARD <sysstat@users.noreply.github.com>
Wed, 2 Sep 2020 17:04:04 +0000 (19:04 +0200)
commit1f5949d4a6fcb33065dbb1d509f356db039998ed
treeca70275f10a1bb7fee1653e4839efc88e917109a
parentc79c131d9c91c4c2969c2c0d4266399d2630ab4d
Workaround for iowait being decremented

The iowait value reported by the kernel on NO_HZ systems can decrement
as a result of inaccurate iowait tracking. Waiting on IO can be first
accounted as iowait but then instead as idle.

Function get_per_cpu_interval() considers iowait going backwards between
two readings as a CPU coming back online and resets the iowait value of
the first reading to 0. If iowait is decremented only because of
inaccurate tracking, this causes that almost all time between the two
readings is incorrectly recognized by sar as being spent in iowait.

The patch updates the code in get_per_cpu_interval() to recognize this
situation. If the iowait value between two readings decremented but the
idle value did not then the code now considers it as a problem with the
iowait reporting and corrects the first value according to the second
reading. Otherwise, the code remains treating decremented iowait as a
CPU coming back online.

Fixes #14.

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
rd_stats.c