Skip to content
Permalink
Browse files

pmrep: fix wait.formula for collectl-dm-sD and collectl-sD

Resolves: Fedora BZ #1724288

wait = r_wait + w_wait is incorrect, see BZ #1724288.
Instead use the disk.*.total (reads + writes) metrics to
derive the total average wait time.

Fixed in both pmrep.conf and derived iostat.conf.

QA tested for groups derive, pmrep and pmiostat.
  • Loading branch information...
goodwinos committed Jun 28, 2019
1 parent 8abd93d commit c119577d449868e45268bacad670e9a6b5dd9a7a
Showing with 7 additions and 6 deletions.
  1. +4 −3 src/derived/iostat.conf
  2. +3 −3 src/pmrep/pmrep.conf
@@ -15,7 +15,8 @@
# IOSTAT derived metrics (per-device for regular block devices)
# These derived metrics complement the disk.dev.* metrics tree.
#
disk.dev.await = (delta(disk.dev.read) + delta(disk.dev.write)) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : (delta(disk.dev.read_rawactive) + delta(disk.dev.write_rawactive)) / (delta(disk.dev.read) + delta(disk.dev.write))

disk.dev.await = delta(disk.dev.total) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.dev.total_rawactive) / delta(disk.dev.total)

disk.dev.r_await = delta(disk.dev.read) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.dev.read_rawactive) / delta(disk.dev.read)

@@ -35,7 +36,7 @@ disk.dev.util = 100 * rate(disk.dev.avactive)
# IOSTAT derived metrics (per dm device for device-mapper)
# These derived metrics complement the disk.dm.* metrics tree.
#
disk.dm.await = (delta(disk.dm.read) + delta(disk.dm.write)) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : (delta(disk.dm.read_rawactive) + delta(disk.dm.write_rawactive)) / (delta(disk.dm.read) + delta(disk.dm.write))
disk.dm.await = delta(disk.dm.total) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.dm.total_rawactive) / delta(disk.dm.total)

disk.dm.r_await = delta(disk.dm.read) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.dm.read_rawactive) / delta(disk.dm.read)

@@ -55,7 +56,7 @@ disk.dm.util = 100 * rate(disk.dm.avactive)
# IOSTAT derived metrics (per md device for multiple devices)
# These derived metrics complement the disk.md.* metrics tree.
#
disk.md.await = (delta(disk.md.read) + delta(disk.md.write)) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : (delta(disk.md.read_rawactive) + delta(disk.md.write_rawactive)) / (delta(disk.md.read) + delta(disk.md.write))
disk.md.await = delta(disk.md.total) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.md.total_rawactive) / delta(disk.md.total)

disk.md.r_await = delta(disk.md.read) == 0 ? mkconst(0, type="double", semantics="instant", units="millisec / count") : delta(disk.md.read_rawactive) / delta(disk.md.read)

@@ -1181,7 +1181,7 @@ disk.dev.w_avg_rqsz = wareq-sz,,,,8
w_await = w_await,,,,7
w_await.formula = delta(disk.dev.write_rawactive) / delta(disk.dev.write)
wait = wait,,,,7
wait.formula = delta(disk.dev.read_rawactive) / delta(disk.dev.read) + delta(disk.dev.write_rawactive) / delta(disk.dev.write)
wait.formula = delta(disk.dev.total_rawactive) / delta(disk.dev.total)
disk.dev.avg_qlen = aqu-sz,,,,6
svctm = svctm,,,,6
svctm.formula = 1000 * rate(disk.dev.avactive) / rate(disk.dev.total)
@@ -1195,7 +1195,7 @@ timestamp = yes
precision = 2
delimiter = " "
colxrow = " Mapped Device"
hinv.map.dmname = DM,,,,4
hinv.map.dmname = DM,,,,6
disk.dm.read_bytes = rkB/s,,KB,,7
disk.dm.read_merge = rrqm/s,,,,6
disk.dm.read = r/s,,,,7
@@ -1209,7 +1209,7 @@ disk.dm.w_avg_rqsz = wareq-sz,,,,8
w_await = w_await,,,,7
w_await.formula = delta(disk.dm.write_rawactive) / delta(disk.dm.write)
wait = wait,,,,7
wait.formula = delta(disk.dm.read_rawactive) / delta(disk.dm.read) + delta(disk.dm.write_rawactive) / delta(disk.dm.write)
wait.formula = delta(disk.dm.total_rawactive) / delta(disk.dm.total)
disk.dm.avg_qlen = aqu-sz,,,,6
svctm = svctm,,,,6
svctm.formula = 1000 * rate(disk.dm.avactive) / rate(disk.dm.total)

0 comments on commit c119577

Please sign in to comment.
You can’t perform that action at this time.