Changes committed to git://git.pcp.io/kenj/pcp master
Ken McDonell (1):
libpcp/interp.c: fix one performance issue (Bug 1044)
qa/787.out | 6 ++--
src/libpcp/src/check-statics | 1
src/libpcp/src/interp.c | 64 +++++++++++++++++++++++++++----------------
3 files changed, 44 insertions(+), 27 deletions(-)
Details ...
commit 09f68c6b374abd4b71053d40c29673fa645628f4
Author: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Date: Tue Mar 24 07:36:34 2015 +1100
libpcp/interp.c: fix one performance issue (Bug 1044)
Additional logic added to avoid rescanning the region beween the
current time point and the next <mark> record once it has been
established there are not useful metric-instance values in this
region.
The reason this has not been seen before is that for most archives
the logged metrics are similar and repeated often, so there are
only small regions between the last logged value and a <mark>
record. When the archive is large and some metric may be logged
infrequently (like once per pmlogger execution), then the problem
becomes evident.
This fix addresses the most glaring cause of Frank's observed
performance problems in
http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044
as shown below:
Command:
pmval -t 60 -a super-SLOW-merged-archive-20140124.225919 pmcd.numagents
Original
real 6m1.836s
user 4m55.990s
sys 1m5.705s
New
real 0m32.297s
user 0m29.620s
sys 0m2.690s
That's better than an 11-fold reduction in CPU time ... and the output
is identical.
With this fix, most of the qa/787 failures are resolved (I have one
more case to investigate) and qa -g archive passes (so no regressions
that I can see).
|