pcp
[Top] [All Lists]

pcp updates: pevans merge

To: pcp@xxxxxxxxxxx
Subject: pcp updates: pevans merge
From: Nathan Scott <nathans@xxxxxxxxxx>
Date: Thu, 10 Oct 2013 05:26:09 -0400 (EDT)
Delivered-to: pcp@xxxxxxxxxxx
In-reply-to: <132024049.5075953.1381397063458.JavaMail.root@xxxxxxxxxx>
Reply-to: Nathan Scott <nathans@xxxxxxxxxx>
Thread-index: iEmHmnS2msk9mMOx/nOiqblQUEqgAw==
Thread-topic: pcp updates: pevans merge
Changes committed to git://oss.sgi.com/pcp/pcp.git dev

 qa/654.out                   |    2 
 qa/655.out                   |    2 
 src/pmdas/gfs2/GNUmakefile   |   11 -
 src/pmdas/gfs2/control.c     |    4 
 src/pmdas/gfs2/control.h     |    1 
 src/pmdas/gfs2/ftrace.c      |  159 +++++++++++++++++++++
 src/pmdas/gfs2/ftrace.h      |   36 ++++
 src/pmdas/gfs2/gfs2_ftrace.c |  312 +++++++++++++++++++++----------------------
 src/pmdas/gfs2/gfs2_ftrace.h |   72 ++++-----
 src/pmdas/gfs2/help          |    5 
 src/pmdas/gfs2/lock_time.c   |  161 +++++++---------------
 src/pmdas/gfs2/lock_time.h   |   10 -
 src/pmdas/gfs2/pmda.c        |   28 ++-
 src/pmdas/gfs2/pmdagfs2.h    |    4 
 src/pmdas/gfs2/pmns          |    1 
 15 files changed, 488 insertions(+), 320 deletions(-)

commit dcf2be6c70af53398d0a5e940395c66ed1a351b0
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Thu Oct 10 20:21:33 2013 +1100

    Remove some no-longer-used gfs2 pmda sources

commit 831ae7176c0ee42e92fba46f5046ba69b07515eb
Merge: 39e0eea d4ce171
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Thu Oct 10 20:19:38 2013 +1100

    Merge branch 'dev' of git://github.com/pauljevans/pcp into dev

commit d4ce171501348c7854d6911179870a3e70ed0437
Author: Paul Evans <pevans@xxxxxxxxxx>
Date:   Thu Oct 10 10:02:05 2013 +0100

    pmdagfs2: Minor update and coverity defect fixes
    
    As suggested by Nathan have reduced the value of GLOCK_ARRAY_CAPACITY to
    2048 (from 100000), this should reduce the chance of malloc failing whilst
    keeping the number of malloc's performed on a system under heavy load to an
    acceptable level. Renamed gfs2_ftrace(ch) to ftrace(ch) and re-factored the
    change throughout the rest of the code.
    
    Fixed outstanding CHECKED_RETURN and RESOURCE_LEAK coverity defects for
    pmdagfs2 in ftrace.c and pmda.c respectively and rechecked.
    
    Left NO_EFFECT defect (the only defect left showing for pmdagfs2 on my runs)
    in pmda.c because it is intentional.

commit 3163ff6a3c55f83da9b40bf83d089c5d80466468
Author: Paul Evans <pevans@xxxxxxxxxx>
Date:   Wed Oct 9 18:01:06 2013 +0100

    pmdagfs2: Updates from continued testing and changes for future updates.
    
    From continued testing with the gfs2 sas-calibration workload there have 
been
    a couple of changes made to increase the stability of the PMDA along with
    performance improvement with regards to glock throughput when reading glock
    data on trace_pipe based metrics. These improvements are the result of two 
main
    changes, the first involving changing how the glocks are temporary stored 
after
    being read from the trace_pipe and the second from controlling the maximum
    number of glocks that are read through each refresh of the metrics.
    
    During testing it because increasingly obviously that due to the number of
    updates that occur for each glock in the event of inode contention on a node
    (resulting in locks being passed around and updated) that hash collisions 
when
    reading data into the pmdaCache structure was a major bottleneck in 
throughput
    before time-outs under load. To combat this the lock data taken from the
    trace_pipe is now stored in an array. The duplication issues is rectified by
    checking that the latest update for a given glock is placed towards the 
front
    of the array during comparison. This has resulted in a total throughput for
    glocks from the trace_pipe to 1 million glocks from 120 thousand using
    pmdaCache as the temp storage method.
    
    It has also become obvious that because we need to compute the worst glock 
on
    each refresh and in order to minimise the chances of time-out of the PMDA by
    PMCD during calculation a new control metric has been introduced. This 
metric
    gfs2.control.glock_threshold controls the max number of accepted glock 
entries
    that are taken from the trace_pipe each refresh call. This can be either
    increased or decreased by the user in the event that a machine is 
experiencing
    time-outs. (Future improvement ideas involve having this value computed and
    changed either reducing or increase with regards to the load of the 
system/time
    it is taking to process the lock data).
    
    Limiting the number of locks that can be read out on in refresh call comes 
with
    the potential issue of us not reading all of the locks from the trace_pipe 
and
    a queue of old lock data collecting. To combat this 
gfs2_trace_clear_buffer()
    has been introduced to allow the trace_pipe buffer to be completely cleared 
at
    the end of a metric refresh clearing any unread glocks from trace_pipe.
    
    The final change involves the introduction of gfs2_ftrace.c this file is a
    split of the trace_pipe reading functions from lock_time.c I felt that with
    future improvements being the introduction of the rest of the trace_pipe 
based
    metrics it was best to split the trace_pipe reading functions from 
lock_time.c
    and have it contain the specific information regarding the glock_lock_time
    based metrics thus allowing the smoother introduction of the additional 
metrics
    in the following weeks.
    
    - control.c, control.h
    Contains the code to handle the new gfs2.glock_threshold metric allowing the
    user to set a new max threshold value with pmstore.
    
    - gfs2_ftrace.c, gfs2_ftrace.h
    Newly created files to separate the trace_pipe handling code. Also includes 
new
    code to flush the trace_pipe after each refresh. Handling of the glock
    threshold to control the maximum number of glocks processed in each refresh
    cycle.
    
    - lock_time.c, lock_time.h
    Updated to remove the trace_pipe open/close and reading code which has be
    relocated into gfs2_trace.c. Updates to the method used to temporary store 
the
    glock data before processing to a dynamic array instead of a pmdaCache use 
to
    increased performance (not having to worry about hash collision). Any issues
    with duplication are handled during the comparison of the locks before
    assigning a worst glock for the filesystem.
    
    - pmda.c, pmdagfs2.h
    Contains changes made reflecting the additional control metric and the
    splitting of the trace_pipe reading code to it's own files.
    
    - qa/654, qa/655, help, pmns
    Updated to reflect the additional metric for controlling the processing
    threshold regarding trace_pipe based metrics.
    
    - GNUmakefile
    Updates to reflect the additional trace files which need to be compiled.

<Prev in Thread] Current Thread [Next in Thread>
  • pcp updates: pevans merge, Nathan Scott <=