pcp
[Top] [All Lists]

pcp updates: pmlogger

To: pcp@xxxxxxxxxxx
Subject: pcp updates: pmlogger
From: Nathan Scott <nathans@xxxxxxxxxx>
Date: Thu, 23 Jan 2014 23:38:13 -0500 (EST)
Delivered-to: pcp@xxxxxxxxxxx
In-reply-to: <205882808.10945720.1390538272132.JavaMail.root@xxxxxxxxxx>
Reply-to: Nathan Scott <nathans@xxxxxxxxxx>
Thread-index: 2MJSHQPi2eKQ/53GbTWKfF46Bebm0w==
Thread-topic: pcp updates: pmlogger
Changes committed to git://oss.sgi.com/pcp/pcp.git dev

 CHANGELOG                   |    8 +
 build/rpm/fedora.spec       |    1 
 build/rpm/pcp.spec.in       |    2 
 man/man1/pmlogger.1         |   78 ----------
 qa/061                      |    1 
 qa/061.out.2                |   15 --
 qa/248                      |    3 
 qa/248.out.2                |    6 
 qa/418                      |    4 
 qa/418.out                  |    8 -
 qa/465                      |   15 +-
 qa/465.out.4                |   20 ++
 qa/466                      |   12 -
 qa/466.out.3                |   29 +++
 qa/633                      |    4 
 qa/726                      |   72 +++++++++
 qa/726.out                  |   14 +
 qa/group                    |    1 
 qa/src/GNUlocaldefs         |   18 +-
 qa/src/config.interp        |    7 
 qa/src/config1.interp       |    7 
 qa/src/config2.interp       |    7 
 src/pmlogger/src/callback.c |    5 
 src/pmlogger/src/check.c    |    9 -
 src/pmlogger/src/dopdu.c    |   66 +++-----
 src/pmlogger/src/gram.y     |  323 +++++++++++++++++++++++---------------------
 src/pmlogger/src/logger.h   |   21 +-
 src/pmlogger/src/pmlogger.c |    9 -
 src/pmlogger/src/util.c     |   17 +-
 src/pmmgr/rc_pmmgr          |    6 
 src/pmproxy/rc_pmproxy      |    6 
 31 files changed, 449 insertions(+), 345 deletions(-)

commit 1d521743a928f6abb82fd3e6d21045b877560092
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 15:35:51 2014 +1100

    Workaround pmlogger qa archive generation issue in interp logs
    
    An earlier commit (a7f30720) mentioned...
    "in reverse order to before.  This has caused one QA casualty as a
    result of different pmResult ordering causing different numbers of
    log reads (qa/465).  I've verified that changing the order of the
    two blocks in qa/src/config.interp gives the previous behaviour, "
    
    This incorrectly referenced test qa/465 - test qa/087 was intended.
    
    This commit words around the problem by flipping the configuration
    order of the logger config.interp metrics, ultimately so that they
    are logged in the same order as always.  Open to better suggestions
    for fixing this - an earlier idea using logextract turned out to add
    more problems than it fixed.

commit e8d03c15e999da4fec7e7d4e97c0b7ffe1c7c4d7
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 14:48:43 2014 +1100

    Remove mentions of long-deprecated pcplocal rcdir script in pmlogger(1)

commit 46546eab79d56723f5c6cdb22d71a3a50b2fceb8
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 14:37:15 2014 +1100

    Add one missing direct pcp-lib dep for some internal rpm checking tools

commit be6a4b2fbb976afe157a8cd3f4ea924e7652077e
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 14:36:38 2014 +1100

    Add notes to changelog on bits and pieces fixed so far in dev branch

commit 420471e2e4977efd009fe0c4710a12056e898fd9
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 14:36:05 2014 +1100

    Ensure pmproxy/pmmgr log dirs get correct permissions (as in rc_pmcd)

commit a7f307205235fbdb587a5bc8335831b4cfdd727d
Author: Nathan Scott <nathans@xxxxxxxxxx>
Date:   Fri Jan 24 14:34:08 2014 +1100

    Optimisations to the pmlogger task_t fetch groups
    
    This change builds on recent improvements and optimisations to the
    pmlogger fetch mechanism.  Earlier we tackled squishing of metrics
    specified multiple times, down to one, reducing the generated log
    size in this case (significantly!).  We now go further, working on
    producing more optimal internal data structures in pmlogger as the
    configuration is parsed.  This has the effect of also removing the
    duplicate metrics, but now adds duplicate instances, and even more
    importantly perhaps, reduces (signficantly) the number of pmFetch
    calls required to satisfy the requested configuration.  This gives
    us some on-disk size improvements, as well as reducing the work on
    the server (pmda/pmdas).
    
    Internally, the lifetime of the task_t data structure changes.  We
    used to allocate a new task for each configuration block, even if
    they specify the same interval/state, registering each immediately
    with the asynchronous fetch mechanism (each resulting in separate
    pmFetch calls).  Now, we allocate only one task_t for any config
    block that has the same interval/state specification, and we delay
    the registering of the asynchronous fetch callback until parsing
    is complete.  In other words, we delay decisions about what PMIDs
    and instances will be in each fetch until the last moment, which
    allows for optimal data structure generation at that point.
    
    The global tasklist is a singly-linked list of task_t structures,
    which is constructed by prepending new task_t's to the list head.
    One non-obvious result of these changes is that due to delaying
    the registering of asynchronous fetches, they are now registered
    in reverse order to before.  This has caused one QA casualty as a
    result of different pmResult ordering causing different numbers of
    log reads (qa/465).  I've verified that changing the order of the
    two blocks in qa/src/config.interp gives the previous behaviour,
    so this test was always accidentally relying on config file order.
    This is the only remaining QA failure - it will be resolved via a
    separate commit.
    
    Test qa/061 is updated to filter the libpcp warning message about
    the AF event queue being empty.  This is because we're collapsing
    tasks more effectively now - in those cases, the event queue used
    to have a no-op task added, which is no longer added to the queue
    at all, hence we no longer trigger the message (so filter it from
    expected .out so older pcp variants also work with the test).
    
    Test qa/248 is updated to remove the recently added debug-diags to
    reflect when metrics were being dropped.  Code redesign meant such
    a diagnostic no longer makes sense.
    
    Test qa/418 is updated to sort the metrics reported via pmdumplog,
    as the may (will) now be logged in differing order, so test output
    became non-deterministic.
    
    New version of qa/465 output demonstrating fetch optimisation (one
    pmResult logged only now!).  Similarly, new 466 output.
    
    Test qa/633 is updated to give pmlogger -s1 instead of -s2 - again
    the optimisations result in one fetch not two satisfying the given
    configuration file.
    
    Adds new test qa/726 with several of the trickier cases of instance
    and metric de-duplication that happen with the new pmlogger parsing
    logic.

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