From wwwrun@oss.sgi.com Wed Jan 1 14:00:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 0925E7F57; Wed, 1 Jan 2014 14:00:22 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1042] New: rpm pmda doesn't support multiple-version rpms Date: Wed, 01 Jan 2014 20:00:20 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: scox@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter cc classification Message-ID: Content-Type: multipart/alternative; boundary="1388606421.cf66d61.12432"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1388606421.cf66d61.12432 Date: Wed, 1 Jan 2014 14:00:21 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1042 Bug ID: 1042 Summary: rpm pmda doesn't support multiple-version rpms Product: pcp Version: unspecified Hardware: All OS: Linux Status: NEW Severity: major Priority: P5 Component: pcp Assignee: scox@redhat.com Reporter: fche@redhat.com CC: pcp@oss.sgi.com Classification: Unclassified On my f19 machine: % rpm -q kernel-devel kernel-devel-3.11.10-200.fc19.x86_64 kernel-devel-3.12.5-200.fc19.x86_64 % pminfo -f rpm.version| grep kernel-devel inst [2514 or "kernel-devel"] value "3.11.10" (note the 3.12.5 info is missing) Similarly for other RPMs of whom more than one version/release is concurrently installed. (Having multiple versions like this is normal.) The rpm pmda should not use rpm "n" (name) as its key instance-domain, but rather the whole n-v-r-a string, or (if possible) some rpmlib internal unique & persistent identifier. (It is possible, though not quite normal, for the exact same n-v-r-a rpm to be installed multiple times.) -- You are receiving this mail because: You are on the CC list for the bug. --1388606421.cf66d61.12432 Date: Wed, 1 Jan 2014 14:00:21 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"
Bug ID 1042
Summary rpm pmda doesn't support multiple-version rpms
Product pcp
Version unspecified
Hardware All
OS Linux
Status NEW
Severity major
Priority P5
Component pcp
Assignee scox@redhat.com
Reporter fche@redhat.com
CC pcp@oss.sgi.com
Classification Unclassified

On my f19 machine:

% rpm -q kernel-devel
kernel-devel-3.11.10-200.fc19.x86_64
kernel-devel-3.12.5-200.fc19.x86_64

% pminfo -f rpm.version| grep kernel-devel
    inst [2514 or "kernel-devel"] value "3.11.10"
(note the 3.12.5 info is missing)

Similarly for other RPMs of whom more than one version/release is concurrently
installed.  (Having multiple versions like this is normal.)

The rpm pmda should not use rpm "n" (name) as its key instance-domain,
but rather the whole n-v-r-a string, or (if possible) some rpmlib
internal unique & persistent identifier.  (It is possible, though not
quite normal, for the exact same n-v-r-a rpm to be installed multiple
times.)


You are receiving this mail because: --1388606421.cf66d61.12432-- From fche@redhat.com Sun Jan 5 14:16:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5DAC77F3F for ; Sun, 5 Jan 2014 14:16:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4BA078F804B for ; Sun, 5 Jan 2014 12:16:51 -0800 (PST) X-ASG-Debug-ID: 1388953007-04cbb04166bfcc30001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UC5e6HRfYzSuAhaG for ; Sun, 05 Jan 2014 12:16:47 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s05KGkh4015252 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 5 Jan 2014 15:16:46 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s05KGjr3008156; Sun, 5 Jan 2014 15:16:46 -0500 Received: by fche.csb (Postfix, from userid 2569) id 6F23F58185; Sun, 5 Jan 2014 15:16:45 -0500 (EST) Date: Sun, 5 Jan 2014 15:16:45 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Dave Brolley , PCP Mailing List Subject: Re: Discovery, pmfind, pmmgr - initial review notes Message-ID: <20140105201645.GC15448@redhat.com> X-ASG-Orig-Subj: Re: Discovery, pmfind, pmmgr - initial review notes References: <1747733941.30448124.1386913932191.JavaMail.root@redhat.com> <706995772.30452503.1386915256290.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <706995772.30452503.1386915256290.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1388953007 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Nato - nathans wrote: > ps: I'm away for 3 weeks, starting .... now. See you next > year, I hope you have a safe and enjoyable holiday season! Welcome back! > [pmmgr man page] > > No config comments allowed? Just README - someplace else though? > seems a bit harsh. *shrug* - good reasons for the rigidity I hope. It makes parsing bulletproof and absolutely trivial. > Man page style - command names usually in bold in PCP man pages. Fixed. > [build/makefiles] > pmmgr not on windows? (pmcd+pmdas & libpcp shows how it can be done) > - this would be really good to have there [...] Agreed, maybe in the not-too-far future. > [...] > [pmmgr] > > log-directory config file hard-codes /var/log/pcp ... use $PCP_LOG_DIR? > (can these config files have embedded env vars?) Dropped that. That and other .default files were there to document (redundantly with the man page) the built-in defaults. > target-discovery.avahi contains avahi? (latter seems superflous) Renamed the file. Or the existence of a target-discovery.avahi file could be intereted as a request to do the job, instead of just from lines from the target-discovery file. > misspelt pmwebd reference in rc_pmmgr still (cut&paste - patch attached) Thanks. > makefile - targets (not macros) need platform protection via ifneq - > e.g. see each of the platform PMDAs makefiles, and "build-me" (so, don't > build/install at all if not supported, but CFILES/HFILES/LSRCFILES still > needs to be set) Fixed. > (remove MINGW refs in code - makefile guarantees this for us, until > someone does a port - so its just distracting noise in there too) Fixed. > Log merging - via pmmgr_pmlogger_daemon::daemon_command_line side-effects? > This part feels a bit hacky - wonder if these helper programs could be > more "designed in", somehow, perhaps with their own helper interfaces > (that routine has got pretty big... and has all sorts of extra goodies > unrelated to daemon command lines). Yeah. I leaned toward simplicity (as is) versus power (an elaborate state machine). > Log file naming conventions - one of the issues with the current > scheme is that a host can end up with many, many archives in one > directory [...] The current code does a log-merge of all previous archives into one, doing data-aging at the same time, so thar particular type of trash doesn't pile up. > Log rewriting (pmlogrewrite) seems to be missing? (nor in the todo) Will add to the TODO. Is that urgent? > I like the host-id stuff - neat approach! :) I wonder if we should > take some steps (sort?) to attempt to ensure a given series of metrics > will always give the same host-id (for same values returned of course). That is already done. > I was half expecting this to be all threaded - especially the bits that > restart each daemon & merge logfiles and so on - we'll block in those > spots, so one slow merge/reconfig/restart slows all, and daily logger > restart gets slower with more and more hosts...? *shrug* Added per-host-id threading during the poll stage, allowing multiple pmlogconf/etc. analyses to run concurrently. > [packaging] > > What's the plan? If we want to allow people to pick and choose between > cron-based and pmmgr-based (which I imagine we do) we need to split both > styles into separate rpms which replace/conflict with each other, I think? They don't need to conflict in any mechanical sense, and they run fine (unaware of each other) side-by-side. > pcp-manager-static and pcp-manager-dynamic? (maybe Provide: pcp-manager > from both, and pcp could depend on that virtual package?) I wouldn't suggest anything that clever. They're not plug-in substitutes for one another. I'd just let people transition if they like (or want the new features). > The pmie and pmlogger rc scripts (and associated chkconfig state) are no > longer used in this scheme AIUI, right? (nice) If so, all of: > > /etc/rc.d/init.d/pmlogger > /etc/cron.d/pcp-pmlogger > /etc/pcp/pmlogger/control > /etc/pcp/pmlogger > /usr/libexec/pcp/bin/pmlogger_check > /usr/libexec/pcp/bin/pmlogger_daily (?) > > (and pmie equivalents) would move into pcp-manager-static, I think [...] Yes, that's a possible way to segregate the might-be-deprecated-eventually files, if it became urgent. I started prototyping this, but was frightened off by the way the manifest files are generated then munged into rpm spec %files lists. Is there still a need for something like that (as opposed to simple directly-specified list of files/directories)? > Also, should plan out what happens when someone switches from one approach > to the other (and back again), cos its bound to happen whether by accident > or not - we need to have thought it through (test) and make sure its safe. They don't conflict, so that should be fine. OTOH, they don't carry archives across from one another, which might be desirable. (For pmmgr, one'd just drop the archive files in the relevant /var/log/pcp/pmmgr/HOSTID subdirectory; they'd get merged/aged after that.) - FChE From wwwrun@oss.sgi.com Sun Jan 5 17:23:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 8A81F29DF8; Sun, 5 Jan 2014 17:23:12 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1040] Unable to install from source: invalid user Date: Sun, 05 Jan 2014 23:23:11 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: nathans@debian.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@kenj.com.au X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1388964192.cd2DFdc4.28761"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1388964192.cd2DFdc4.28761 Date: Sun, 5 Jan 2014 17:23:12 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1040 Nathan Scott changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nathans@debian.org --- Comment #6 from Nathan Scott --- One other thing worth mentioning - there are also configure options (--with-user and --with-group) for overriding pcp user/group if needed. It is preferable to use the default values here whenever possible though. -- You are receiving this mail because: You are on the CC list for the bug. --1388964192.cd2DFdc4.28761 Date: Sun, 5 Jan 2014 17:23:12 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1040
What Removed Added
CC   nathans@debian.org

Comment # 6 on bug 1040 from
One other thing worth mentioning - there are also configure options
(--with-user and --with-group) for overriding pcp user/group if needed.  It is
preferable to use the default values here whenever possible though.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1388964192.cd2DFdc4.28761-- From nscott@redhat.com Sun Jan 5 17:57:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AFF047F3F for ; Sun, 5 Jan 2014 17:57:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 89C95304032 for ; Sun, 5 Jan 2014 15:57:13 -0800 (PST) X-ASG-Debug-ID: 1388966229-04bdf00fdf4fc3c0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id AEEt1VF19Ud3kP7D for ; Sun, 05 Jan 2014 15:57:09 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s05Nv7k0009890; Sun, 5 Jan 2014 18:57:07 -0500 Date: Sun, 5 Jan 2014 18:57:06 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Michele Baldessari Cc: pcp@oss.sgi.com Message-ID: <2003826347.42940337.1388966226972.JavaMail.root@redhat.com> In-Reply-To: <1388326332-15379-1-git-send-email-michele@acksyn.org> References: <1388326332-15379-1-git-send-email-michele@acksyn.org> Subject: Re: [pcp] [PATCH] Man pages spelling fixes MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] [PATCH] Man pages spelling fixes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Man pages spelling fixes Thread-Index: 6ElCDemv9fqyjd946Q+Zrp0RPsLw6A== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1388966229 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143772 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Thanks! All merged in now. -- Nathan From nscott@redhat.com Sun Jan 5 18:00:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F15B57F3F for ; Sun, 5 Jan 2014 18:00:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id DA374304043 for ; Sun, 5 Jan 2014 16:00:29 -0800 (PST) X-ASG-Debug-ID: 1388966427-04cbb04166c04370001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id jFuukpUsfhEIc4o0 for ; Sun, 05 Jan 2014 16:00:27 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0600O37017707; Sun, 5 Jan 2014 19:00:24 -0500 Date: Sun, 5 Jan 2014 19:00:24 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <1292350714.42940387.1388966424919.JavaMail.root@redhat.com> In-Reply-To: <1673358504.42940342.1388966239909.JavaMail.root@redhat.com> Subject: pcp updates: kenj, fche, michele fixes MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: kenj, fche, michele fixes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: kenj, fche, michele fixes Thread-Index: phtj6OOil7IjEA4z67Zbo4V5gAPMeg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1388966427 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143772 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev INSTALL | 22 ++++-- debian/GNUmakefile | 2=20 debian/libpcp3-dev.install | 125 +++++++++++++++++----------------- debian/pcp.postinst.tail | 2=20 man/man1/collectl2pcp.1 | 2=20 man/man1/dbpmda.1 | 2=20 man/man1/pcpintro.1 | 2=20 man/man1/pmcd.1 | 2=20 man/man1/pmcollectl.1 | 2=20 man/man1/pmdabash.1 | 2=20 man/man1/pmdagfs2.1 | 2=20 man/man1/pmdagluster.1 | 2=20 man/man1/pmdahotproc.1 | 4 - man/man1/pmdaweblog.1 | 2=20 man/man1/pmie.1 | 2=20 man/man1/pmie2col.1 | 2=20 man/man1/pmproxy.1 | 2=20 man/man1/pmval.1 | 2=20 man/man3/pcpintro.3 | 4 - man/man3/pmapi.3 | 2=20 man/man3/pmatomstr.3 | 3=20 man/man3/pmda.3 | 2=20 man/man3/pmdachildren.3 | 6 - man/man3/pmdahelp.3 | 2=20 man/man3/pmdainstance.3 | 2=20 man/man3/pmdaopenlog.3 | 2=20 man/man3/pmdatrace.3 | 6 - man/man3/pmerrstr.3 | 3=20 man/man3/pmeventflagsstr.3 | 3=20 man/man3/pmfetch.3 | 2=20 man/man3/pmgetarchiveend.3 | 2=20 man/man3/pmgetarchivelabel.3 | 2=20 man/man3/pmgetchildren.3 | 4 - man/man3/pmgetchildrenstatus.3 | 4 - man/man3/pmgetconfig.3 | 2=20 man/man3/pmgetcontexthostname.3 | 2=20 man/man3/pmgetindom.3 | 2=20 man/man3/pmgetindomarchive.3 | 2=20 man/man3/pmgetpmnslocation.3 | 2=20 man/man3/pmidstr.3 | 5 - man/man3/pmindomstr.3 | 5 - man/man3/pmistart.3 | 4 - man/man3/pmiunits.3 | 4 - man/man3/pmloadasciinamespace.3 | 2=20 man/man3/pmloadnamespace.3 | 2=20 man/man3/pmnumberstr.3 | 3=20 man/man3/pmtime.3 | 8 +- man/man3/pmtraversepmns.3 | 3=20 man/man3/pmtypestr.3 | 3=20 man/man3/pmunitsstr.3 | 3=20 man/man3/pmwebapi.3 | 2=20 qa/.gitignore | 2=20 qa/003 | 1=20 qa/1045 | 5 - qa/159 | 4 - qa/282 | 21 +++-- qa/504 | 14 +++ qa/504.out | 32 -------- qa/504.out.1 | 32 ++++++++ qa/504.out.2 | 32 ++++++++ qa/512 | 4 - qa/575 | 17 +++- qa/575.out | 2=20 qa/575.out.1 | 3=20 qa/575.out.2 | 3=20 qa/640 | 2=20 qa/660 | 12 ++- qa/chk.setup | 58 ++++++++------- qa/src/GNUlocaldefs | 12 +-- qa/src/mkpermslist | 8 ++ qa/src/permslist | 9 +- src/include/pcp/impl.h | 1=20 src/libpcp/src/auxconnect.c | 112 ++++++++++++++++++------------ src/libpcp/src/exports | 1=20 src/libpcp/src/secureconnect.c | 142 ++++++++++++++++++++++++----------= ----- src/libpcp_fault/src/.gitignore | 2=20 src/libpcp_fault/src/GNUmakefile | 2=20 src/pcp/pcp.sh | 9 +- src/pmcd/pmdaproc.sh | 4 - src/pmcd/rc_pmcd | 10 +- src/pmdas/linux/interrupts.c | 4 - src/pmie/examples/GNUmakefile | 1=20 src/pmie/pmie_check.sh | 4 - src/pmie/rc_pmie | 10 +- src/pmie/src/pmie.c | 5 - src/pmlogger/pmlogger_check.sh | 4 - src/pmlogger/rc_pmlogger | 4 - src/pmns/ReplacePmnsSubtree | 2=20 src/pmproxy/rc_pmproxy | 6 - src/pmwebapi/rc_pmwebd | 4 - 90 files changed, 533 insertions(+), 351 deletions(-) commit 6efee0fdaa768fe9fabfb2342d203a46cf7e71c3 Author: Michele Baldessari Date: Mon Jan 6 10:52:29 2014 +1100 Man pages spelling fixes commit 813f4a13424840eaa662f12d7ae41afda1673ac6 Author: Nathan Scott Date: Mon Jan 6 10:24:15 2014 +1100 Update git ignore file for libpcp_fault builds commit 417e6f2c02ca89b51642234c9df052f218954508 Merge: f08713f 8b04845 Author: Nathan Scott Date: Mon Jan 6 10:16:37 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit f08713f6024c2f829ba8f7393b3142c25776f761 Author: Frank Ch. Eigler Date: Fri Dec 13 20:36:01 2013 -0500 linux pmda: plug memory leak in /proc/interrupts parsing =20 Previous code in src/pmdas/linux/interrupts.c accidentally forgot that it had already parsed the structure of /proc/interrupts into the interrupt_lines/interrupt_other realloc variables by resetting the lines_count/other_count variables every refresh. That caused an endless re-allocation growth. Hey, teacher, leave those _counts alone! =20 Reported-By: Mahmoud Hanafi commit 8b04845ff778a9b97ac01cc9b0c7e8a7bc6c8f2f Author: Ken McDonell Date: Sun Jan 5 17:35:19 2014 +1100 libpcp - tweak diags in __pmConnect =20 Need debug flags CONTEXT & DESPERATE, not just CONTEXT. commit 2e4a05a83607da058247675acfd4d3abcc05167f Author: Ken McDonell Date: Sun Jan 5 06:42:34 2014 +1100 libpcp - *connect.c - diagnostic cleanup =20 Since there are routines of the same name in these two files (build-time configuration selects one or the other), add __FILE__ as prefix to all diagnostic messages. =20 Also add more diagnostics around __pmBind() to help track down QA failures. commit 62f4986836b6ad44b4b98e6d0c238df80edb0de5 Author: Ken McDonell Date: Sat Jan 4 21:14:25 2014 +1100 libpcp - add __pmSockAddrGetPort() =20 Dual of existing routine __pmSockAddrSetPort(). commit 70c8489def5f0b6ef6271ff0b8e9e8139cee4a42 Author: Ken McDonell Date: Sat Jan 4 09:25:21 2014 +1100 pmie and pmproxy rc script tweak =20 We still has a couple of remnants of the old verbose =09Performance Co-Pilot starting ... messages in these two rc scripts. Updated to the more terse (and consistent with the other rc scripts) =09Starting pmie ... =09Starting pmproxy ... commit 3492c52fd178e53709579473dfcb03ba953ab0de Author: Ken McDonell Date: Sat Jan 4 07:00:25 2014 +1100 qa/003 - network.icmpmsg.* metrics sometimes unavailable =20 Adjust filter. commit 159bcf34b9391e0505cc31556639ce55a6ea6ad7 Author: Ken McDonell Date: Sat Jan 4 06:58:17 2014 +1100 qa/chk.setup - allow host on the command line =20 So I can check just one QA host, not all of 'em. commit c3b76c8eff6f7c07ea2886b6f7dfdb30411cb600 Author: Ken McDonell Date: Sun Dec 29 08:21:48 2013 +1100 man page rework for some NAME entries =20 When more than one command/routine per man page, start each command/routine name on a new line in the NAME section. =20 Fixes http://oss.sgi.com/bugzilla/show_bug.cgi?id=3D972 commit a4646cc362856a38ac2370bfe179cf4466b6b7aa Author: Ken McDonell Date: Sun Dec 29 06:36:13 2013 +1100 INSTALL - add notes for creating user pcp before make from source =20 In response to bug http://oss.sgi.com/bugzilla/show_bug.cgi?id=3D1040 from Tom=C3=A1=C5=A1 Dohn=C3=A1lek. commit ed6c37f1d5d3e46cdbe520ae261d416f647e613d Author: Ken McDonell Date: Sat Dec 28 21:17:46 2013 +1100 pmpost - one more bizarre name collision fixup =20 Small change to edit DISK group to include full correct pathname for pmpost commit ab4a162e58ae44ddd31b1e0dafe80ab1153fd5d4 Author: Ken McDonell Date: Sat Dec 28 15:44:42 2013 +1100 pmie - temp file directory creation change =20 First off, pmie should not try and create $PCP_TMP_DIR/pmie ... it should be done in the packaging. =20 But even if we try to do a "fixup" creation here then a failure to create the directory should not be a fatal error ... it should be just like the later failure to create the stats file, namely pmie still runs there are just no stats available to the pmcd pmda. commit 49f8a1808710526141a24e969677afd2da3fe68b Author: Ken McDonell Date: Fri Dec 27 06:47:48 2013 +1100 pmpost - bizare name collision =20 Turns out that the texlive-binaries package installs an executable in /usr/bin/pmpost (oops), but worse, it is broken as follows: =20 $ sudo -u pcp pmpost message =20 Sorry, I can't find the 'pmpost' preload file; will try 'plain'. I can't find the 'plain' preload file! =20 Since we already (many moons ago) decided to hide our pmpost in $PCP_BINADM_DIR this change replaces all references to pmpost (and punting on $PATH) in the PCP scripts with the explicit $PCP_BINADM_DIR/pmpost. commit 8e46755e48c365e44ad5d4278affc3b22be2d86e Author: Ken McDonell Date: Fri Dec 27 06:41:31 2013 +1100 qa/282 - be more careful about mode and ownership of control files =20 With recent changes to the modes and ownership of control files and directories in the pcp packaging, we need to be more careful about preserving these in the qa scripts. =20 These changes mean qa/282 is no longer one of the scripts implicated in qa/994 failing. commit 30e0cfbf05f23a74b4e0721cd5bcc9aa09695544 Author: Ken McDonell Date: Fri Dec 27 06:38:04 2013 +1100 qa/994 - update driver data =20 permslist is built by mkpermslist which in turn scans the source makefiles. =20 Update mkpermslist to reflect recent makefile changes and new exceptions (...systemtap/tapset/pmcd.stp is not always installed, so make this one optional). =20 Update permslist. commit 1d8e407c076d47504b286317b3bc8c4b811eeea0 Author: Ken McDonell Date: Thu Dec 26 09:17:12 2013 +1100 debian/pcp.postinst.tail - chown/chmod change for $PCP_LOG_DIR =20 In the top-level makefile we install $PCP_LOG_DIR with non-standard mode and ownership. =20 Added chown pcp:pcp /var/log/pcp chmod 775 /var/log/pcp here to match. =20 qa/994 passes on debian now immediately after a new install/upgrade. commit 7ffd94745ff6f6fc63c8894a000c8081bbda69ad Author: Ken McDonell Date: Thu Dec 26 09:11:37 2013 +1100 debian/GNUmakefile - fix strange build warnings =20 When making debian packages, the build was generating this concerning messages: =20 /bin/tar: rm -f pcp.postrm: Cannot stat: No such file or directory /bin/tar: cat pcp.postrm.head configversions pcp.postrm.tail > pcp.post= rm: Cannot stat: No such file or directory /bin/tar: Exiting with failure status due to previous errors =20 from the build/tar directory (we do descend there, even for debian package builds). =20 Turns out pcp.postrm was not being made early enough in the build which led to the build/deb/pcp-3.8.10/build/pcp.src control file being polluted with make noise ... =20 rm -f pcp.postrm cat pcp.postrm.head configversions pcp.postrm.tail > pcp.postrm =20 which confused the tar build when it expected the pcp.src file to contain the names of source files. commit 5d0e97a4917b538059128d8b27afd4ea9e5caa6c Author: Ken McDonell Date: Tue Dec 24 07:36:55 2013 +1100 pcp (command) - add -D command-line support commit 9f9eb94a0f05c47c524d8e26fa5e88ad36094065 Author: Ken McDonell Date: Tue Dec 24 07:33:24 2013 +1100 lipcp_fault - tweak the build =20 libpcp_fault needs support from libpcp_pmda for pmdaCache*() routines so need to link with -lpcp_pmda when building libpcp_fault. =20 All of this is outside the normal "build" so it only impacts me ... 8^)> commit d2abbf5e1c4f2348d0cf7d8bb4d6c7b15048f212 Author: Ken McDonell Date: Tue Dec 24 07:27:19 2013 +1100 qa/src/GNUlocaldefs - more libpcp_fault dodgem games =20 Need to conditionally make check_fault_injection and exercise_fault, but only ever in an "about to run QA" context and never in a package build context. =20 Wrinkle is that the condition depends on the existence of /usr/include/pcp/fault.h which was breaking the build if you had previously built and installed libpcp_fault on the build machine. commit 07990a94519cdfdd6d755c231b54d862484c8901 Author: Ken McDonell Date: Tue Dec 24 07:24:26 2013 +1100 qa/660 - more verbose diagnostics to $seq.full commit fecb704fbd310c12f85c840d535e28f1a4d22a70 Author: Ken McDonell Date: Tue Dec 24 07:19:12 2013 +1100 qa/512 - be more careful about $seq.full =20 Need $here/$seq.full after chdir. From nscott@redhat.com Mon Jan 6 00:03:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8EB527F3F for ; Mon, 6 Jan 2014 00:03:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6C786304048 for ; Sun, 5 Jan 2014 22:03:26 -0800 (PST) X-ASG-Debug-ID: 1388988202-04cbb04168c10890001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id Gl9D4whucmFU5W9H for ; Sun, 05 Jan 2014 22:03:22 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0663I8q031879; Mon, 6 Jan 2014 01:03:18 -0500 Date: Mon, 6 Jan 2014 01:03:18 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Ken McDonell Cc: PCP Mailing List Message-ID: <1679235905.43036974.1388988198177.JavaMail.root@redhat.com> In-Reply-To: <20140105201645.GC15448@redhat.com> References: <1747733941.30448124.1386913932191.JavaMail.root@redhat.com> <706995772.30452503.1386915256290.JavaMail.root@redhat.com> <20140105201645.GC15448@redhat.com> Subject: Re: Discovery, pmfind, pmmgr - initial review notes MIME-Version: 1.0 X-ASG-Orig-Subj: Re: Discovery, pmfind, pmmgr - initial review notes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Discovery, pmfind, pmmgr - initial review notes Thread-Index: Vx5efQYLCWoqwVIp72HZqzdFNrBsbA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1388988202 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143781 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > > > Log file naming conventions - one of the issues with the current > > scheme is that a host can end up with many, many archives in one > > directory [...] > > The current code does a log-merge of all previous archives into one, > doing data-aging at the same time, so thar particular type of trash > doesn't pile up. /me re-reads the code ... I'm not following what you mean by "doing data-aging"? Having a single archive for many days/months would be unsustainable (in terms of its in-core size) without *some* form of temporal data reduction, but we don't have code to do that (or have I missed that code? or did you mean its still coming / planned?). There is a pmlogreduce(1) tool - but its not used by pmmgr AFAICS. I also am not sure what state its in, but last I chatted to Ken about that, he suggested work remains (several TODO items exist in the code, I don't know how severe they are though - Ken? - it does have good QA test coverage going for it). Anyway, some people will not want to data reduce and will want to keep their original high precision data ... the YYYY/MM/DD scheme is still going to help those folks to navigate their archives (I'm assuming a single archive for high precision data over months/years is not really feasible with the current archive format - but maybe thats something we could tackle instead). wrt lots of archives - from memory, it was the pmchart "Add Archive" window that caused problems, with hundreds/ thousands of archives in one directory - becomes very user-unfriendly. > > Log rewriting (pmlogrewrite) seems to be missing? (nor in the todo) > > Will add to the TODO. Is that urgent? Not if we're comfortable with the side-by-side approach going forward (which is fine with me too). I think getting the new code into peoples hands to try out sooner rather than later will be most useful at this stage - and with the two side-by-side we can polish the new approach as we go. If we're attempting log merging to the level I later realised you may be doing (one archive to rule them all), it quickly becomes a pressing need as merging is impossible without it (when PMDA evolution occurs, as described in pmlogrewrite(1) para #2). > > [packaging] > > > > What's the plan? If we want to allow people to pick and choose between > > cron-based and pmmgr-based (which I imagine we do) we need to split both > > styles into separate rpms which replace/conflict with each other, I think? > > They don't need to conflict in any mechanical sense, and they run fine > (unaware of each other) side-by-side. OK, yep, sounds fine. > Yes, that's a possible way to segregate the might-be-deprecated-eventually > files, if it became urgent. > ... Its certainly not urgent at this stage, just wanted to mention it so that we've thought about it & are happy with which ever approach we choose now. cheers. -- Nathan From wwwrun@oss.sgi.com Mon Jan 6 00:28:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 0C1277F52; Mon, 6 Jan 2014 00:28:44 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1042] rpm pmda doesn't support multiple-version rpms Date: Mon, 06 Jan 2014 06:28:42 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: nathans@debian.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: scox@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1388989724.f1BbFbeD2.12143"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1388989724.f1BbFbeD2.12143 Date: Mon, 6 Jan 2014 00:28:43 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1042 Nathan Scott changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nathans@debian.org --- Comment #1 from Nathan Scott --- Some potentially useful discussion here, Stan: https://lists.dulug.duke.edu/pipermail/rpm-devel/2006-October/001702.html We'll need to (re)introduce the rpm.name metric I foolishly claimed was no longer needed too. :) cheers. -- You are receiving this mail because: You are on the CC list for the bug. --1388989724.f1BbFbeD2.12143 Date: Mon, 6 Jan 2014 00:28:44 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1042
What Removed Added
CC   nathans@debian.org

Comment # 1 on bug 1042 from
Some potentially useful discussion here, Stan:
https://lists.dulug.duke.edu/pipermail/rpm-devel/2006-October/001702.html
We'll need to (re)introduce the rpm.name metric I foolishly claimed was no
longer needed too.  :)

cheers.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1388989724.f1BbFbeD2.12143-- From fche@redhat.com Mon Jan 6 05:48:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4C73B7F37 for ; Mon, 6 Jan 2014 05:48:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 248E38F8037 for ; Mon, 6 Jan 2014 03:48:49 -0800 (PST) X-ASG-Debug-ID: 1389008927-04cb6c537bc24d10001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UUuy3CSBTmKI8TnW for ; Mon, 06 Jan 2014 03:48:48 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s06Bmj9i012031 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 6 Jan 2014 06:48:45 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s06BmiC0003036; Mon, 6 Jan 2014 06:48:44 -0500 Received: by fche.csb (Postfix, from userid 2569) id C233058185; Mon, 6 Jan 2014 06:48:43 -0500 (EST) Date: Mon, 6 Jan 2014 06:48:43 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Ken McDonell , PCP Mailing List Subject: Re: Discovery, pmfind, pmmgr - initial review notes Message-ID: <20140106114843.GE15448@redhat.com> X-ASG-Orig-Subj: Re: Discovery, pmfind, pmmgr - initial review notes References: <1747733941.30448124.1386913932191.JavaMail.root@redhat.com> <706995772.30452503.1386915256290.JavaMail.root@redhat.com> <20140105201645.GC15448@redhat.com> <1679235905.43036974.1388988198177.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1679235905.43036974.1388988198177.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389008928 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Nathan - > > The current code does a log-merge of all previous archives into one, > > doing data-aging at the same time, so thar particular type of trash > > doesn't pile up. > > /me re-reads the code ... I'm not following what you mean by "doing > data-aging"? I was referring to using the "-S NNN" parameter for the pmlogextract merging, ie., simply dropping data beyond a certain age. > There is a pmlogreduce(1) tool - but its not used by pmmgr AFAICS. Yes, I'd like to use that sort of gradual downsampling/aging at some point as an optional alternative to simply dropping old data. > Anyway, some people will not want to data reduce and will want to keep > their original high precision data [...] (I'm assuming a > single archive for high precision data over months/years is not really > feasible with the current archive format - but maybe thats something > we could tackle instead). I'd love to tackle that instead, definitely, if it doesn't Just Work already. At some point, when we have a log-archive server, it will be desirable to have as few input archive files to monitor as possible. > [...] If we're attempting log merging to the level I later realised > you may be doing (one archive to rule them all), [pmlogrewrite] > quickly becomes a pressing need as merging is impossible without it > (when PMDA evolution occurs, as described in pmlogrewrite(1) para > #2). Got it. - FChE From nscott@redhat.com Tue Jan 7 04:52:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7AADF7F3F for ; Tue, 7 Jan 2014 04:52:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4AD74304075 for ; Tue, 7 Jan 2014 02:52:35 -0800 (PST) X-ASG-Debug-ID: 1389091947-04bdf0568e1136c0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id X19oYdRSoltWAORr for ; Tue, 07 Jan 2014 02:52:27 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s07AqQCt006134 for ; Tue, 7 Jan 2014 05:52:27 -0500 Date: Tue, 7 Jan 2014 05:52:26 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <430888625.44740260.1389091946843.JavaMail.root@redhat.com> In-Reply-To: <1147802107.44740246.1389091937666.JavaMail.root@redhat.com> Subject: pcp updates: misc small fixes, start qa vs coverity MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: misc small fixes, start qa vs coverity Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: misc small fixes, start qa vs coverity Thread-Index: 23rJwF4Ep4s0VPCoDR5wBrArud3Mtw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389091947 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev configure | 6 +++--- configure.in | 4 ++-- man/man1/pmlogextract.1 | 2 +- qa/src/779246.c | 36 +++++++++--------------------------- qa/src/anon-sa.c | 3 --- qa/src/arch_maxfd.c | 4 ++++ qa/src/archinst.c | 6 +++--- qa/src/badpmcdpmid.c | 6 +++++- qa/src/chk_metric_types.c | 4 ++-- qa/src/chkacc4.c | 6 +++--- qa/src/chkopenlog.c | 4 ++++ qa/src/descreqX2.c | 15 +++++++-------- qa/src/dumb_pmda.c | 2 +- qa/src/exercise.c | 16 ++++++++-------- qa/src/hex2nbo.c | 4 ++-- src/libpcp/src/access.c | 27 +++++++++++++++------------ src/libpcp/src/secureconnect.c | 2 +- src/pmcd/src/config.c | 10 +++++----- 18 files changed, 75 insertions(+), 82 deletions(-) commit 4db836d604fbe2cac9452a6ac12a53357d854e91 Author: Nathan Scott Date: Tue Jan 7 16:14:45 2014 +1100 covscan: resolve benign warning re unused variable settings in qa test commit 395cb20ab81b067bfedbec72c9301dab38d6267b Author: Nathan Scott Date: Tue Jan 7 16:09:33 2014 +1100 covscan: resolve small memleak in qa test program exercise.c commit 18f1978244e3babe38504345b2e896cc78ed8f7d Author: Nathan Scott Date: Tue Jan 7 16:06:38 2014 +1100 covscan: check return code from __pmHandleToPtr in qa commit 95f4386e3ed6722fbde3354607783e2025125639 Author: Nathan Scott Date: Tue Jan 7 15:17:44 2014 +1100 covscan: use the correct reporting routine for libpcp error codes commit b3c6cab559a9e3356d6ee067653e6a21513c2cfd Author: Nathan Scott Date: Tue Jan 7 15:17:02 2014 +1100 covscan: check return codes from new context and open commit f6b613adaceb9381fba58f89c144589525bff516 Author: Nathan Scott Date: Tue Jan 7 15:16:18 2014 +1100 covscan: qa test code changes to ensure stack/vars always initd commit 054e4fccbc739a90e474078b773fafb6182731a3 Author: Nathan Scott Date: Tue Jan 7 15:10:01 2014 +1100 Specify the NSPR flag to make getaddrinfo not resolve canonical hostname (unused) commit 5127bff23841e1d7903e69d73645430377865f9c Author: Nathan Scott Date: Tue Jan 7 15:08:58 2014 +1100 Second attempt at trying harder to resolve localhost, make libpcp like pmcd commit 201dd6256a5db86e91c8352ba5a57f854928c846 Author: Nathan Scott Date: Tue Jan 7 14:24:34 2014 +1100 Revert "Try harder still to get a local host struct hostent" This reverts commit d9b54beb913016e7c989ad380cab5ee4c526ceb1. (Causes sigsegv with NSPR) commit 3d92e962ea3f66931adf16f738774ef90200f236 Author: Nathan Scott Date: Tue Jan 7 13:00:49 2014 +1100 covscan: add error handling around a failed dup(2) call commit 86d7aaa66c622064aa8677864cb7767378819d42 Author: Nathan Scott Date: Tue Jan 7 12:57:50 2014 +1100 covscan: fix issue in qa sa-sniffer tool, repeated fd close commit 2a94d70afefd8c28ec8e5310e02f3d5733440942 Author: Nathan Scott Date: Tue Jan 7 12:57:04 2014 +1100 covscan: ensure pmidlist initialised in qa src program, cleanup commit d9b54beb913016e7c989ad380cab5ee4c526ceb1 Author: Nathan Scott Date: Tue Jan 7 12:54:11 2014 +1100 Try harder still to get a local host struct hostent Will Cohen came across a failure to start pmlogger running locally [Mon Jan 6 15:13:24] pmlogger(23927) Error: __pmGetAddrInfo(santana), Unknown host [Mon Jan 6 15:13:24] pmlogger(23927) Error: Can't get host name/IP address, giving up It looks like this is another case of failure to resolve local addresses from local host names. Documentation for getaddrinfo(3) states a null can be passed in for the "node" name (first param), so we now use this in cases where we know we're dealing with local name resolution, as a fallback. Audit found a second similar-ish case over in pmcd, dealing with socket PMDA connections - make it use this same mechanism instead of hard coding "localhost". commit 4d7b85b8534014a16b4f1f343b4e78fc3acf0b25 Author: Nathan Scott Date: Tue Jan 7 09:31:16 2014 +1100 Fix the configure check for RHEL5 rpmlib commit 342215f93078f69dbbbc8dd1cab5de8281c1613e Author: Nathan Scott Date: Mon Jan 6 16:25:13 2014 +1100 Fix typo on pmlogextract man page synopsis From fche@redhat.com Tue Jan 7 19:40:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 28F3E7F3F for ; Tue, 7 Jan 2014 19:40:02 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 153428F8039 for ; Tue, 7 Jan 2014 17:40:02 -0800 (PST) X-ASG-Debug-ID: 1389145197-04cb6c537bc80b50001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VHW498UGsGE9tQyK for ; Tue, 07 Jan 2014 17:39:57 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s081dv5K009195 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 7 Jan 2014 20:39:57 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s081duEQ000499 for ; Tue, 7 Jan 2014 20:39:57 -0500 Received: by fche.csb (Postfix, from userid 2569) id 2C06958185; Tue, 7 Jan 2014 20:39:56 -0500 (EST) Date: Tue, 7 Jan 2014 20:39:56 -0500 From: "Frank Ch. Eigler" To: pcp developers Subject: braindump on unified-context / live-logging Message-ID: <20140108013956.GG15448@redhat.com> X-ASG-Orig-Subj: braindump on unified-context / live-logging Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389145197 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - Here are some notes related our earlier unified-context ideas [1][2]. As a recap, it's desirable to teach pcp clients to locate pcp data for arbitrary hosts, and then to easily seek between live & historical metrics for it. [1] http://oss.sgi.com/pipermail/pcp/2013-September/003963.html [2] http://oss.sgi.com/pipermail/pcp/2013-November/004090.html My proposed approach focuses on archive files and a new server for the archive files. It might make do without a new PM_CONTEXT_* mode, and at the PMAPI level just generalize PM_CONTEXT_ARCHIVE & _HOST a little. 1) We'd extend archive files to be usable as a source of "live" data, so that clients can sort-of-"tail -f" the files to get current info, or can seek along time with pmSetMode(). 1.1) pmlogger needs to learn to write its output with what IIRC kenj has referred to as "semantic units", ie., proper use sequencing of write(2), fdatasync(), to put interdependent data on disk correctly. 1.2) libpcp needs to learn to read archives that are being written-to. It should not freak out when the end-of-file is reached, and for PM_MODE_LIVE, just return the then-freshest measurements and/or trigger PM_ERR_PMDANOTREADY if clients are fetching faster than the logger is recording. This could be done without a PM_CONTEXT_UNIFIED extension, just permitting PM_MODE_LIVE for PM_CONTEXT_ARCHIVE, and giving clients an option (like the -f for tail) to use that flag. 2) Because these archive files may not be local to the clients, or because they may not already contain every metric a client might like, we need a network server to offer them such tasty treats. Elsewhere and elsewhen, nathans has ably argued that this shouldn't be pmcd, but a new server or an extended pmlogger/pmproxy/pmmgr. 2.1) A new server needs to be written, which would monitor some local archive files, and serve an extended pcp wire protocol for it (one that includes archive-like pmSetMode operations). It would advertise the pcp hostname (or pmmgr-style hostid) to the network, so clients can find the right host data (probably one tcp port per archive, or else multiplexed over a single tcp port and identifying the host during startup negotiation). The clients could keep using PM_CONTEXT_HOST but permit PM_MODE_BACK etc. to forward -S/-T times - ie. no requirement for a new PM_CONTEXT_UNIFIED. 2.2) Clients would be extended with enough discovery logic to find the network server that has data for the interested pcp hostname / pmmgr-hostid. Or, just rely on an extended pmfind: "pmstat -h `pmfind --hostid HOSTID`" would attach to a server that has data for that HOSTID. (A bonus complication is having multiple archives/servers for the same HOSTID, such as with different subsets of metrics, or for different times: perhaps extra pmfind filtering params.) 2.3) That server needs to be extended: merged into pmlogger, or interfaced with pmlc, so as to arrange logging of newly requested live data that wasn't already set up in the pre-configured set of metrics. It could heuristically control their logging interval and duration for multiple clients. 3) PROFIT! - FChE From nscott@redhat.com Wed Jan 8 00:31:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2FFC37F3F for ; Wed, 8 Jan 2014 00:31:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8DA4EAC001 for ; Tue, 7 Jan 2014 22:31:37 -0800 (PST) X-ASG-Debug-ID: 1389162693-04cb6c537bc885b0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id pAisMfuzKxNW6DkT for ; Tue, 07 Jan 2014 22:31:34 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s086VX5q023927 for ; Wed, 8 Jan 2014 01:31:33 -0500 Date: Wed, 8 Jan 2014 01:31:33 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <419040413.45857452.1389162693159.JavaMail.root@redhat.com> In-Reply-To: <363329545.45855712.1389162572010.JavaMail.root@redhat.com> Subject: pcp updates: pmmgr, pmfind, coverity MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: pmmgr, pmfind, coverity Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: pmmgr, pmfind, coverity Thread-Index: C5iyCu2gecdmr/du8ugKegP3VbyN7Q== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389162693 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143855 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC5_SA210e Custom Rule SA210e Changes committed to git://oss.sgi.com/pcp/pcp.git dev INSTALL | 5 aclocal.m4 | 62 build/rpm/GNUmakefile | 1 build/rpm/pcp.spec.in | 5 configure | 339 ++++ configure.in | 18 man/man1/GNUmakefile | 2 man/man1/pmmgr.1 | 338 +++- qa/src/interp_bug.c | 8 qa/src/interp_bug2.c | 9 qa/src/ipc.c | 27 qa/src/multithread5.c | 25 qa/src/multithread6.c | 23 qa/src/multithread7.c | 29 qa/src/multithread8.c | 23 qa/src/multithread9.c | 23 qa/src/pdu-server.c | 20 qa/src/pducrash.c | 425 ++--- qa/src/pmcdgone.c | 6 qa/src/pmdashutdown.c | 2 qa/src/proc_test.c | 18 qa/src/torture_pmns.c | 2 src/GNUmakefile | 4 src/dbpmda/src/dso.c | 10 src/dbpmda/src/pmda.c | 2 src/include/builddefs.in | 13 src/include/buildrules | 9 src/include/pcp.conf.in | 4 src/include/pcp/impl.h | 36 src/include/pcp/platform_header.h | 675 ++++++++ src/include/pcp/pmapi.h | 7 src/libpcp/src/GNUmakefile | 2 src/libpcp/src/access.c | 4 src/libpcp/src/auxconnect.c | 37 src/libpcp/src/auxserver.c | 72 src/libpcp/src/avahi.c | 410 ++++- src/libpcp/src/avahi.h | 12 src/libpcp/src/check-statics | 3 src/libpcp/src/context.c | 4 src/libpcp/src/discovery.c | 314 +++ src/libpcp/src/exports | 5 src/libpcp/src/internal.h | 13 src/libpcp/src/logmeta.c | 2 src/libpcp/src/pmns.c | 14 src/libpcp/src/secureconnect.c | 39 src/libpcp/src/spec.c | 35 src/libpcp/src/util.c | 84 + src/libpcp_fault/src/GNUmakefile | 2 src/pmcd/src/dopdus.c | 6 src/pmcd/src/dostore.c | 2 src/pmcd/src/pmcd.c | 2 src/pmdas/apache/apache.c | 3 src/pmdas/linux/interrupts.c | 4 src/pmdas/linux/proc_net_dev.c | 12 src/pmdas/linux/proc_scsi.c | 4 src/pmdas/linux_proc/ksym.c | 14 src/pmdas/mounts/mounts.c | 4 src/pmdas/rpm/rpm.c | 2 src/pmdas/systemd/systemd.c | 4 src/pmdas/trace/src/pmda.c | 5 src/pmdas/weblog/check_match.c | 2 src/pmfind/.gitignore | 3 src/pmfind/GNUmakefile | 31 src/pmfind/pmfind |binary src/pmfind/pmfind.c | 114 + src/pmie/src/pmie.c | 18 src/pminfo/pminfo.c | 46 src/pmlogger/pmlogger_daily.sh | 2 src/pmlogrewrite/pmlogrewrite.c | 2 src/pmlogsummary/pmlogsummary.c | 4 src/pmmgr/.gitignore | 1 src/pmmgr/GNUmakefile | 140 + src/pmmgr/TODO | 25 src/pmmgr/config/GNUmakefile | 62 src/pmmgr/config/README | 15 src/pmmgr/config/hostid-metrics.default | 2 src/pmmgr/config/log-directory.default | 2 src/pmmgr/config/pmlogmerge-retain.default | 2 src/pmmgr/config/pmlogmerge.default | 2 src/pmmgr/config/target-discover.default | 2 src/pmmgr/config/target-discovery.avahi | 2 src/pmmgr/config/target-discovery.default | 2 src/pmmgr/config/target-discovery.example-avahi | 1 src/pmmgr/config/target-host.default | 2 src/pmmgr/pmmgr.cxx | 1317 ++++++++++++++-- src/pmmgr/pmmgr.h | 159 + src/pmmgr/pmmgr.options | 32 src/pmmgr/rc_pmmgr | 298 +++ src/pmmgr/src/.gitignore | 2 src/pmmgr/src/GNUmakefile | 78 src/pmmgr/src/pmmgr.cxx | 1924 ++++++++++++------------ src/pmmgr/src/pmmgr.h | 300 +-- src/pmval/pmval.c | 9 93 files changed, 5834 insertions(+), 2051 deletions(-) commit 9ba94e34a669269b923799cfba6cd12363d78be0 Author: Nathan Scott Date: Wed Jan 8 17:23:47 2014 +1100 Remove a duplicate definition of __pmServerPresence commit e5067e1d6aea7a6b7fe032e0eaa1527774a06c67 Merge: a6ac0c8 8b7d071 Author: Nathan Scott Date: Wed Jan 8 15:38:58 2014 +1100 Merge branch 'fche/dev' of ../pcpfans into fche/dev commit a6ac0c85650bae64cb46fa0da5d2c8dca65987fd Author: Nathan Scott Date: Wed Jan 8 15:37:41 2014 +1100 covscan: additional initialisation checks for libpcp code, odd corner cases commit 00a440caca5ec4cc45ace3e5f914e7a8ff3b67f5 Author: Nathan Scott Date: Wed Jan 8 15:36:38 2014 +1100 covscan: add code to handle a fgets failure commit 2d22d21252c2e24df695fb39d1f4957da02d9dce Author: Nathan Scott Date: Wed Jan 8 15:34:54 2014 +1100 covscan: fix very-hard-to-trip memleak in context creation commit 328b1319ae085f640958e9dfab6cac79387b2611 Author: Nathan Scott Date: Wed Jan 8 15:33:09 2014 +1100 covscan: minor source cleanup in qa test code commit e55e0cedb53ae2bf88ac94fffa7d754a258f68a6 Author: Nathan Scott Date: Wed Jan 8 15:18:48 2014 +1100 covscan: fix small error path memleak in libpcp access code commit 300e4497fc84e9b4895d58aeb719a79aa5d7cd52 Author: Nathan Scott Date: Wed Jan 8 15:17:59 2014 +1100 covscan: fix minor uninitd variables in dbpmda commit 474dead15e7534dde0f8e0154774551a66df3af0 Author: Nathan Scott Date: Wed Jan 8 15:17:23 2014 +1100 covscan: fix error message reporting buglet in pmlogsummary commit c5a64fb5feb95c0c8a928cf3d8f8c475d6c9f9fc Author: Nathan Scott Date: Wed Jan 8 15:16:54 2014 +1100 covscan: fix minor uninitd variables in misc client tool commit e268e4cf157c4033c95125be607917186d7215c7 Author: Nathan Scott Date: Wed Jan 8 15:15:18 2014 +1100 covscan: fix minor uninitd variables and null checks in pmdas commit 2569e605b69fc065108bd452223123be6e09048b Author: Nathan Scott Date: Wed Jan 8 15:14:09 2014 +1100 covscan: fix couple of uninitd variable on pmcd err paths commit 7ed7b8c806995489ddb70b528b49b8c4db4a249e Author: Nathan Scott Date: Wed Jan 8 15:10:53 2014 +1100 covscan: fix uninitd variable in pmdarpm commit 23678c4c4ac7f8fad847f4149d9166e4430210f1 Author: Nathan Scott Date: Wed Jan 8 13:06:20 2014 +1100 covscan: fix harmless but wrong sizeof type to malloc in qa code commit 3abd9229df3a61dedccf37bf433faea72147ad11 Author: Nathan Scott Date: Wed Jan 8 13:05:40 2014 +1100 covscan: refactor proc_test and torture_pmns a bit for static checks commit 6395f401152ae847bd73646d98ecf0b599d9641c Author: Nathan Scott Date: Wed Jan 8 12:50:17 2014 +1100 covscan: fix memleaks in pducrash test source commit 2fe5b5853ffc25418aa9cf73eee13507fbc303e8 Author: Nathan Scott Date: Wed Jan 8 12:46:09 2014 +1100 covscan: refactor pducrash test source for static checking commit 8063f305e05c547775b35682c11b43d060c87f0e Author: Nathan Scott Date: Wed Jan 8 12:05:27 2014 +1100 covscan: fix memleaks in qa pdu-server code commit e058fb78d392f7a107e1327aa2f01f631b74da3d Author: Nathan Scott Date: Wed Jan 8 11:56:55 2014 +1100 covscan: fix multithread tests fopen/fclose use commit b05e406a7722f143cb862f2555c0e60bb1120159 Author: Nathan Scott Date: Wed Jan 8 10:56:40 2014 +1100 covscan: refactor qa ipc test to remove static scan confusion commit 18c5e7027f85eb04c965f4af0ea4ae3b2a2883a4 Author: Nathan Scott Date: Wed Jan 8 10:45:31 2014 +1100 covscan: remove useless result null checks in interp tests commit 01d3a430201deea4f07edf847c55c005203aed78 Author: Nathan Scott Date: Wed Jan 8 10:44:52 2014 +1100 covscan: fix qa pmdashutdown use of uninitd dispatch var commit 8b7d07195e25c9af250f963401b089c5ab6ccdae Author: Frank Ch. Eigler Date: Mon Jan 6 18:52:30 2014 -0500 resolve merge conflict over __pmSockAddrGetPort kenj and brolley independently added these functions. Resolve merge conflict in favour of ... coin toss ... brolley. commit 45f978b7377c6bb7384e11385bdc10f0e506eb34 Merge: 99c3bc0 4d7b85b Author: Frank Ch. Eigler Date: Mon Jan 6 18:42:00 2014 -0500 Merge remote-tracking branch 'pcp/dev' into fche/dev * pcp/dev: (26 commits) Fix the configure check for RHEL5 rpmlib Fix typo on pmlogextract man page synopsis Remove a no-longer-used qa out file for qa/575 Man pages spelling fixes Update git ignore file for libpcp_fault builds linux pmda: plug memory leak in /proc/interrupts parsing libpcp - tweak diags in __pmConnect libpcp - *connect.c - diagnostic cleanup libpcp - add __pmSockAddrGetPort() pmie and pmproxy rc script tweak qa/003 - network.icmpmsg.* metrics sometimes unavailable qa/chk.setup - allow host on the command line man page rework for some NAME entries INSTALL - add notes for creating user pcp before make from source pmpost - one more bizarre name collision fixup pmie - temp file directory creation change pmpost - bizare name collision qa/282 - be more careful about mode and ownership of control files qa/994 - update driver data debian/pcp.postinst.tail - chown/chmod change for $PCP_LOG_DIR ... Conflicts: INSTALL src/include/pcp/impl.h commit 99c3bc0607756fdfa7f150817f4ca7483fb4c7da Author: Frank Ch. Eigler Date: Mon Jan 6 15:51:23 2014 -0500 pmmgr: correct zombie handling for dead hostids & subdir gc string matching commit 817a1207997bf2ed12e4a2d52cfc539322ae9231 Author: Frank Ch. Eigler Date: Sun Jan 5 21:05:02 2014 -0500 /etc/pcp/pmmgr: make dir & contents root- instead of pcp-owned commit 1b1fe9f7c097d6d378bda1a9f81baab7966f9308 Author: Frank Ch. Eigler Date: Sun Jan 5 20:53:28 2014 -0500 pmmgr: new option for garbage-collecting ancient hostid data commit 517747212c6c650b946c86a284056f86f0f0ed89 Author: Frank Ch. Eigler Date: Sun Jan 5 19:53:37 2014 -0500 pmmgr pcp.spec.in: mark /etc/pcp/pmmgr files %config commit 1b26541664cb8f209cd225da71ac531c8a2e919f Author: Frank Ch. Eigler Date: Sun Jan 5 18:52:11 2014 -0500 pmmgr: check & overlook broken archives during pmlogmerge phase commit d5e78ff08601d77e2ac69c3e436b8adf4ce0b730 Author: Frank Ch. Eigler Date: Sun Jan 5 18:00:57 2014 -0500 pmmgr: for make-install, recurse into config/ subdirectory commit 91018d51976ceefc29ac93e0ab700367e5aa5e2c Merge: e400a72 e71374d Author: Frank Ch. Eigler Date: Sun Jan 5 15:12:44 2014 -0500 Merge remote-tracking branch 'origin/fche/dev' into fche/dev * origin/fche/dev: INSTALL: note need to create pcp/pcpqa userids if building straight from source pmlogger_daily.sh: tolerate case where no *.meta files exist for log merging pmda systemd: add sd_journal_process() to avoid inotify()-driven spinning commit e400a72f406de35a8e5f694852269607f539cc51 Author: Dave Brolley Date: Thu Dec 19 13:42:08 2013 -0500 Include the hostname in avahi service names. - Reduces service name collisions with other pmcds on the network. commit 60767c51b61bd29461762f4303bf8b31cc2ffc2e Author: Frank Ch. Eigler Date: Sun Jan 5 15:04:27 2014 -0500 pmmgr: add pmlogmerge option to /etc/pcp/pmmgr/config defaults commit ec49e95a5a9bec9bfad3d19e4ae2c3b4ce5a0a53 Author: Frank Ch. Eigler Date: Sun Jan 5 15:03:51 2014 -0500 pmmgr: add some more TODOs commit 3e3c4cee4007f1b2741afdabab52c4253178e94e Author: Frank Ch. Eigler Date: Sun Jan 5 15:03:30 2014 -0500 rc_pmmgr: include pmmgr.options support commit 75b692c683200694ed532a89c1f63d222cfa6b74 Author: Frank Ch. Eigler Date: Sun Jan 5 15:00:19 2014 -0500 pmmgr.1: use .B for pcp commands rather than .I commit e71374d017d2c6de72c1f8bce468d87fc8626e04 Author: Frank Ch. Eigler Date: Wed Dec 25 07:52:54 2013 -0500 INSTALL: note need to create pcp/pcpqa userids if building straight from source commit 1cd2e997e3ffb2ac0533449b76f12f020ea16161 Author: Frank Ch. Eigler Date: Tue Dec 24 07:46:22 2013 -0500 pmlogger_daily.sh: tolerate case where no *.meta files exist for log merging commit e626ec91e3ede0bf9ce27c594b5cbc522f6430f1 Author: Frank Ch. Eigler Date: Thu Dec 19 14:35:27 2013 -0500 pmda systemd: add sd_journal_process() to avoid inotify()-driven spinning As per systemd-journal API docs, if we use the systemd fd's for select() event-listening, we must call sd_journal_process(), so any content on those fd's is actually read. Otherwise, we get a select() returning immediately, but systemd_refresh() consuming none of the inotify data, calling select again and again ad spinfinitum. commit 480ad48bfde1bffcd093b78e751ac5320cf7d5af Author: Frank Ch. Eigler Date: Wed Dec 18 14:37:04 2013 -0500 pmmgr: make cppcheck(1) happier with little style tweaks commit b6987a62521f90d6b4f801fba7f804f2c1c8e1db Author: Frank Ch. Eigler Date: Tue Dec 17 18:02:11 2013 -0500 pmmgr: respond quicker to sudden death of inferior daemons commit dc45c7c57b6a042e2b6496e090dbdf499dd9e355 Author: Frank Ch. Eigler Date: Mon Dec 16 19:18:06 2013 -0500 pmmgr: parallelize daemon configuration/startup The logger/pmie daemon-command-line generator functions do a ton of work outside the process, invoking pm*conf etc., in sequence. Instead of invoking them serially, do each daemon X host in a separate pthread. To keep the model/logic trivially simple, we do a massive fork / join around the daemon polls only, which means that a single long-lasting daemon X host startup can delay everything else. But this is unlikely (?). commit 2d1ddd75a9c81b98a6d1f521bd3708eaefaa6dd8 Author: Frank Ch. Eigler Date: Mon Dec 16 16:05:28 2013 -0500 pmmgr: sort hostid-metric multi-instance values commit 424ee764f2fae5c00f0e25ec69359d74ff517071 Author: Frank Ch. Eigler Date: Mon Dec 16 15:17:11 2013 -0500 pmmgr build: make conditional via autoconf & build-me GNUmakefile idioms commit 693241b35239fd75e82eb687c0b16212d0b29fb5 Author: Frank Ch. Eigler Date: Mon Dec 16 11:54:14 2013 -0500 pmmgr config/ directory: drop all .default files The compiled-in defaults are mentioned in the man page already, and were confusing. commit 6f386c30a83fabfe0e568741ee4a2a6dd1804f58 Author: Frank Ch. Eigler Date: Fri Dec 13 20:36:01 2013 -0500 linux pmda: plug memory leak in /proc/interrupts parsing Previous code in src/pmdas/linux/interrupts.c accidentally forgot that it had already parsed the structure of /proc/interrupts into the interrupt_lines/interrupt_other realloc variables by resetting the lines_count/other_count variables every refresh. That caused an endless re-allocation growth. Hey, teacher, leave those _counts alone! Reported-By: Mahmoud Hanafi commit 34c9afab991ee41cb82367b85a6811cbeed9c21c Merge: ec499b2 25bfc1e Author: Frank Ch. Eigler Date: Fri Dec 13 11:09:10 2013 -0500 Merge remote-tracking branch 'pcp/dev' into fche/dev * pcp/dev: Fix a typo in the pmwebd rc script libpcp __pmNotifyErr: correct va_list usage Update development branch version info for work-in-progress commits The Mac OS X ld has a different symbol version file format to GNU ld, disable Travel the Linux path for Mac OS X dtrace static probe support Update strings in Mac OS X installer for community release Resolve issue in test qa/528 with tmpdir leftovers Resolve deb bug #729857 using dpkg-maintscript-helper(1) Limit the number of collision resolution attempts for Avahi services. commit ec499b22ba117350e87ed1bd3b656f97e0b5b2fd Merge: 6e7af04 74d8fc3 Author: Frank Ch. Eigler Date: Fri Dec 13 11:08:38 2013 -0500 Merge remote-tracking branch 'origin/brolley/dev' into fche/dev * origin/brolley/dev: (48 commits) Limit the number of collision resolution attempts for Avahi services. Add expected output for test 783 libpcp_fault/GNUmakefile - small typo fix from previous commit qa/660 - fix IPv6 localhost name discovery, add $seq.full tracing Update version/changelogs in preparation for a bugfix release Different tack toward valgrind testing of pmdarpm, using -C option now Add a missing header dependency in pmdarpm makefile linux_proc pmda: correct stack blowage during ioctl() for network interfaces Simplify and add to the QA valgrind suppressions file Correct bitfield values in PMDA cache code Testing suggests the rpm HEADERGET_MINMEM flag is safe for us Fix semantics for rpm.datasize and remove dup metrictab entry Move the pmdarpm fetch callback locking to the correct spot pmie_daily - avoid cron mail chatter qa/536 - /bin/sh is not bash libpcp_fault - make it work again qa/529 - rework stdin case Initial version of valgrind test for pmdarpm Small cleanup to rpm test qa/750 and common code qa/575 - don't remove $PCP_TMP_DIR/pmie ... commit 6e7af04e9d1fd230fae60e444817358fde6984f3 Author: Frank Ch. Eigler Date: Thu Dec 12 16:32:19 2013 -0500 pmmgr: tweak rc options to match available pmmgr parameters commit aae2c5b8478a02fa33f0d2a1b667017ffaf72685 Author: Frank Ch. Eigler Date: Thu Dec 12 16:28:59 2013 -0500 pmmgr: standardize cout/cerr log messages commit dddc393412ea7c57c340e7ad6693f5ef12aa9b16 Author: Frank Ch. Eigler Date: Thu Dec 12 15:06:53 2013 -0500 libpcp __pmNotifyErr: correct va_list usage In the do_syslog case, a va_list parameter was being passed to snprintf, and never reset for subsequent use by vpmprintf(). Use the correct varargs operations. commit 1c7d1ad9be52c4a3e06be6f149dea7207bca17c4 Author: Frank Ch. Eigler Date: Thu Dec 12 13:28:25 2013 -0500 pmmgr: interpret configured log-directory relative to cfg-directory if necessary commit 3d36ae79762b0a46fd26728f42c3ae01a7ce10a2 Author: Frank Ch. Eigler Date: Thu Dec 12 13:27:58 2013 -0500 pmmgr: add sample config ditty for avahi-based pmcd autodiscovery commit a78ff4713fc0064703f2a94d6f40950a81710d5b Author: Frank Ch. Eigler Date: Thu Dec 12 13:19:14 2013 -0500 pmmgr: move pmmgr/src/* into pmmgr/* The code base is small enough. commit 7f51c662c2ab392c7a4c45531075b3f30e19cfca Author: Frank Ch. Eigler Date: Thu Dec 12 12:15:06 2013 -0500 pmmgr: add pmmgr.options, cargo-culted from pmwebd commit 74d8fc37195df0e9a66da95656445b5799b70f07 Merge: 8301d0d b1c3a47 Author: Dave Brolley Date: Wed Dec 11 12:27:12 2013 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev Conflicts: src/libpcp_fault/src/GNUmakefile commit 8301d0d2ee1a83302f66701847009f0dfa5a02e8 Author: Dave Brolley Date: Wed Dec 11 12:23:56 2013 -0500 Limit the number of collision resolution attempts for Avahi services. commit 00d6cf7797b8c328aae536f88707a9c2f4d88fc7 Author: Nathan Scott Date: Tue Dec 10 22:01:55 2013 -0500 linux_proc pmda: correct stack blowage during ioctl() for network interfaces We finally isolated the cause of the peculiar stack-segment supergrowth seen occasionally for pmcd on linux, wherein multi-gigabyte stacks sometimes briefly appeared on x86-64 hosts. Some analysis with systemtap [1] helped pinpoint the linux_proc network ioctl()s as causing the problem. The problem appears to be the corruption of the ioctl-argument ifr->ecmd pointer between consecutive ioctl()s. This is now corrected by reinitializing before each ioctl(). [1] # stap -e ' probe kernel.function("acct_stack_growth") { if (execname()=="pmcd") { println (pn(), " ", $$parms) print_backtrace() print_ubacktrace() } }' -d /usr/libexec/pcp/bin/pmcd -d /var/lib/pcp/pmdas/linux/pmda_linux.so --ldd Which reported, inter alia, kernel.function("acct_stack_growth@mm/mmap.c:2035") grow=0x17d92 size=0x17db4000 vma=0xffff88009d80b000 0xffffffff8116c560 : expand_downwards+0xb0/0x240 [kernel] 0xffffffff8116c714 : expand_stack+0x24/0x40 [kernel] 0xffffffff8165207f : __do_page_fault+0x43f/0x510 [kernel] 0xffffffff8165215e : do_page_fault+0xe/0x10 [kernel] 0xffffffff8164e6d8 : page_fault+0x28/0x30 [kernel] 0xffffffff81306ae5 : copy_user_generic_string+0x35/0x40 [kernel] 0xffff88009d8bfe18 0xffffffff812a72ec : sidtab_context_to_sid+0x30c/0x480 [kernel] (inexact) 0xffffffff8154a399 : dev_get_by_name_rcu+0x69/0x90 [kernel] (inexact) 0xffffffff8155f56b : dev_ioctl+0x1ab/0x560 [kernel] (inexact) 0xffffffff81634d02 : netlbl_domhsh_hash+0x12/0x50 [kernel] (inexact) 0xffffffff8129e7fc : selinux_file_alloc_security+0x3c/0x60 [kernel] (inexact) 0xffffffff81531195 : sock_do_ioctl+0x45/0x50 [kernel] (inexact) 0xffffffff815315e0 : sock_ioctl+0x1f0/0x2c0 [kernel] (inexact) 0xffffffff811b9fdd : do_vfs_ioctl+0x2dd/0x4b0 [kernel] (inexact) 0xffffffffa0ecba01 [stap_ee080e3c411678e5f019bf218d63791_23997] (inexact) 0xffffffff811ba231 : SyS_ioctl+0x81/0xa0 [kernel] (inexact) 0xffffffff81656aa7 : tracesys+0xdd/0xe2 [kernel] (inexact) 0x2ba833548eb7 : ioctl+0x7/0x30 [/usr/lib64/libc-2.17.so] 0x2ba8368cfee6 : refresh_proc_net_dev+0x256/0x590 [/var/lib/pcp/pmdas/linux/pmda_linux.so] 0x2ba8368c9e2b : linux_refresh+0x39b/0x450 [/var/lib/pcp/pmdas/linux/pmda_linux.so] 0x2ba8368c9fe8 : linux_fetch+0x108/0x170 [/var/lib/pcp/pmdas/linux/pmda_linux.so] 0x2ba832bbcdf5 : DoFetch+0x585/0x1460 [/usr/libexec/pcp/bin/pmcd] 0x2ba832bb6a8b : HandleClientInput+0x28b/0x510 [/usr/libexec/pcp/bin/pmcd] 0x2ba832bb6f03 : ClientLoop+0x1f3/0x6b0 [/usr/libexec/pcp/bin/pmcd] 0x2ba832bb5a2b : main+0x5db/0x7c0 [/usr/libexec/pcp/bin/pmcd] 0x2ba83347db45 : __libc_start_main+0xf5/0x1c0 [/usr/lib64/libc-2.17.so] 0x2ba832bb5c39 : _start+0x29/0x30 [/usr/libexec/pcp/bin/pmcd] commit 4f371507a86640b6a43f8468b9a8b791ccd52b2d Author: Frank Ch. Eigler Date: Tue Dec 10 16:49:15 2013 -0500 pmmgr: add sh_quote() quoting for sh -c arguments as they're being constructed commit 47cc22debe39b172d3407288dac93aec4dd59666 Author: Frank Ch. Eigler Date: Mon Dec 9 18:35:57 2013 -0500 pmmgr docs: fix typo in config/target-discovery commit ca8dd672b12a01fefd6a05f177aac40e94a50886 Author: Frank Ch. Eigler Date: Mon Dec 9 18:17:06 2013 -0500 pmmgr: add rc file commit e07d949fbd979b836a77ce7098add1363215d703 Author: Frank Ch. Eigler Date: Mon Dec 9 17:10:37 2013 -0500 pmmgr: avahi adaptation commit 433e94411f2220b0ec559f31531e6b9a7d28f391 Merge: ed556d4 74cce0f Author: Frank Ch. Eigler Date: Mon Dec 9 16:56:53 2013 -0500 Merge remote-tracking branch 'origin/brolley/dev' into fche/dev * origin/brolley/dev: Remove the 'numUrls' parameter from pmDiscoverServices(). Rename SERVER_SERVICE_SPEC to PM_SERVER_SERVICE_SPEC and move it from impl.h to pmapi.h. commit ed556d4eaa35fd5fa61c39eb69d7027b6d951227 Author: Frank Ch. Eigler Date: Mon Dec 9 16:56:34 2013 -0500 pmmgr: adopt pmDiscoverServices api commit 74cce0f0aed73a3bdf20a16c2783916f08376d32 Author: Dave Brolley Date: Mon Dec 9 16:45:41 2013 -0500 Remove the 'numUrls' parameter from pmDiscoverServices(). Each call will allocate a new list of results. commit 2cb397485cf4c204aceb4ff54e298f20f3b171c6 Author: Dave Brolley Date: Mon Dec 9 16:10:01 2013 -0500 Rename SERVER_SERVICE_SPEC to PM_SERVER_SERVICE_SPEC and move it from impl.h to pmapi.h. commit f3b53b78c749751eb311d5e995c5a747e5b1cc1d Merge: 8824714 e8551fa Author: Frank Ch. Eigler Date: Mon Dec 9 15:39:47 2013 -0500 Merge remote-tracking branch 'origin/brolley/dev' into fche/dev * origin/brolley/dev: Change pmfind/.gitignore to ignore pmfind, not pminfo. New client -- pmfind Discovery for clients rework. pmlogextract - small fixup qa/151 - change after fix for pmlogextract bug with dynamic indoms qa/532 - change after fix for pmlogextract bug with dynamic indoms qa/261 - change after fix for pmlogextract bug with dynamic indoms pmlogextract - dynamic indom botch with -S and -T pmlogextract/GNUmakefile - add header dependencies qa/node_archive archive - needed for qa/768 qa/768 [new] - pmlogextract bug - reported by Tom Yearke pmie/grammar.y - reconcile Ken's and Nathan's overlapping change Allow the host part of the host spec to be enclosed in brackets []. pmie/grammar.y - add header Allow the host part of the host spec to be enclosed in brackets []. Service discovery for PCP clients. commit e8551fafbd0df44174d640ced30c121129047ca8 Merge: 6e20b33 48db577 Author: Dave Brolley Date: Mon Dec 9 15:33:12 2013 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev Conflicts: src/include/pcp/impl.h commit 6e20b3389846f3ab6fdc5600b266f5886622bcfe Author: Dave Brolley Date: Mon Dec 9 15:12:07 2013 -0500 Change pmfind/.gitignore to ignore pmfind, not pminfo. commit b18dfe357333d31ec8f67a4a0619812e2d3ba1da Author: Dave Brolley Date: Mon Dec 9 15:10:00 2013 -0500 New client -- pmfind Skeletal implementation searches for PMCDs on the local network. commit 10452856f33c9414989b5ca4d2f393c1c730ed97 Author: Dave Brolley Date: Mon Dec 9 15:08:01 2013 -0500 Discovery for clients rework. - __pmDiscoverServices() - Renamed to pmDiscoverServices() - Moved from impl.h to pmapi.h - discovery_domain is now checked for validity. - currently accepted values are NULL and "avahi". - Now returns a single freeable buffer - Managed by __pmStringListAdd and __pmStringListFind - new in internal.h, util.c - Output parameter now last - Stub now returns -EOPNOTSUPP and ignores urls. - pmAvahiDiscoverServices() - Timeout after 0.5 seconds. - This is different than a connection timeout. It's actually the length of time that the avahi-client will run before reporting. 0.5 seconds is a reasonable default. This can now be changed by setting AVAHI_DISCOVERY_TIMEOUT in the environment to the desired number of seconds. Fractions of seconds, down to the millisecond level are accepted. e.g. AVAHI_DISCOVERY_TIMEOUT=1.175 - Output parameter now last - avahi-client callbacks no longer issue messages. Error code is passed back in the context object. - __pmServiceInfoAlloc(), __pmServiceInfoFree(): removed - __pmServiceInfo, __pmAddDiscoveredService(): - Moved from impl.h to internal.h - Now within HAVE_SERVICE_DISCOVERY block - __pmServerAdvertisePresence() and __pmServerUnadvertisePresence() - Moved to discovery.c from auxserver.c - temporary -p option removed from pminfo commit 88247149a3e8e7a2661b691d2ad14fa6c7994718 Author: Frank Ch. Eigler Date: Sun Dec 8 18:31:10 2013 -0500 pmmgr: add a TODO entry commit fb21fa92dbc207a0cdd2ac855c317b158b54f799 Author: Frank Ch. Eigler Date: Sun Dec 8 13:00:54 2013 -0500 pmmgr: enable Makepkgs commit 07880888f9e6b2e9b8c68dd64f1427b1a0a861ca Author: Frank Ch. Eigler Date: Sun Dec 8 12:21:02 2013 -0500 pmmgr: add -r to pmlogger command line options commit adb4ad75a9f86e87ad62cda8ba16dbc419a93b68 Author: Frank Ch. Eigler Date: Sun Dec 8 12:20:30 2013 -0500 pmmgr: add a default configuration directory under $(PCP_SYSCONF_DIR)/pmmgr commit e3e1ef8c678a5df2b2ed97100bd7626e3ffeb67c Author: Frank Ch. Eigler Date: Sun Dec 8 00:38:57 2013 -0500 pmmgr man page: chek spelinng commit d0c294f36f2ecf6d000209f65cc671d8452c72a5 Author: Frank Ch. Eigler Date: Sun Dec 8 00:05:54 2013 -0500 pmmgr: man/GNUmakefile: install new man page commit 0769e9963af65265fbd0b3716de5758c3a8af5bc Author: Frank Ch. Eigler Date: Sun Dec 8 00:05:15 2013 -0500 pmmgr: add man page commit 4e9bf9b535e9cc1baf36d8192befe6734b452c59 Author: Frank Ch. Eigler Date: Sat Dec 7 14:26:05 2013 -0500 pmmgr: make all configuration changeable at run time commit fd418205f9736ac4a3765283957600b61f725769 Author: Frank Ch. Eigler Date: Sat Dec 7 14:25:49 2013 -0500 pmmgr: add TODO file commit 12ee84e01bbb9e7df57d3b6d0ba4c150453cd348 Author: Frank Ch. Eigler Date: Sat Dec 7 08:59:29 2013 -0500 pmmgr: add pmlogmerge-* capability commit da570f5eb293eb2cca5204615db8b5a9ad7ee729 Author: Frank Ch. Eigler Date: Mon Dec 2 20:53:04 2013 -0500 pmmgr prototype snapshot commit bef7cdd469d772bba91ffae1703da396fa43e61f Merge: 9f1b25c dd40ff7 Author: Dave Brolley Date: Thu Dec 5 13:25:48 2013 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev Conflicts: src/libpcp/src/auxserver.c src/libpcp/src/avahi.c src/libpcp/src/avahi.h commit 9f1b25c8f8971d8e38d488e1b651575d24d9a957 Merge: 032b7ab b4941e6 Author: Dave Brolley Date: Thu Nov 21 14:25:16 2013 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 032b7ab23e85f3dad35f03e169ef536a78b01511 Author: Dave Brolley Date: Thu Nov 21 14:21:04 2013 -0500 Allow the host part of the host spec to be enclosed in brackets []. Needed for IPv6 addresses in order to separate the address from the port. e.g. pcp://[fe80::5eff:35ff:fe07:55ca]:44321. For simplicity, the implementation allows the brackets around the host part of any spec, as it does no harm. e.g. pcp://[10.15.16.212]:44321 or pcp://[some.host]:44321. commit 31805e25ff278f340179032219a9fbd35d469589 Merge: eaeb067 75db10c Author: Dave Brolley Date: Tue Nov 19 12:06:07 2013 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit eaeb0678cf4e06c77a54cc7cd38401bc9bb250b2 Author: Dave Brolley Date: Tue Nov 19 12:04:14 2013 -0500 Service discovery for PCP clients. - New libpcp API function __pmDiscoverServices() - Discovers services as requested. - Currently, only discovery of PMCD via Avahi is supported. - Related new API type: __pmServiceInfo. - Related new API functions: __pmServiceInfoAlloc(), __pmServiceInfoFree(). - Related new API functions: __pmAddDisccoveredService(), __pmServiceListFree(). - New __pmSockAddr API function: __pmSockAddrGetPort(). - Added -p option to pminfo for prototype/testing purposes - not intended to be permanent, but can be, if wanted. - Instruct pminfo to use __pmDiscoverServices() to search for local PMCD servers. From kenj@internode.on.net Wed Jan 8 14:33:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0A1FA7F3F for ; Wed, 8 Jan 2014 14:33:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 72722AC007 for ; Wed, 8 Jan 2014 12:33:34 -0800 (PST) X-ASG-Debug-ID: 1389213208-04cb6c537bc9f850001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id MVXXNWVCxayXe4oQ for ; Wed, 08 Jan 2014 12:33:28 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlkTAMe1zVJ20aX3PGdsb2JhbAANTINDuzwDAQEBATiDEwEUMTANFhgDAgECATEnBgIBAYgNqG2FBZZWjjQBAYUNBJlHlCaBXQ Received: from ppp118-209-165-247.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.165.247]) by ipmail05.adl6.internode.on.net with ESMTP; 09 Jan 2014 07:03:23 +1030 Message-ID: <52CDB659.6040307@internode.on.net> Date: Thu, 09 Jan 2014 07:34:33 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - assorted Content-Type: text/plain; charset=windows-1252 X-ASG-Orig-Subj: pcp updates - assorted Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1389213208 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Nathan has already pulled all of these except the most recent 3 commits ... I was just a bit slack sending pcp mail over the silly season. Changes committed to git://oss.sgi.com/kenj/pcp.git dev INSTALL | 22 ++++-- debian/libpcp3-dev.install | 125 ++++++++++++++++++------------------ man/man3/pmatomstr.3 | 3 man/man3/pmdahelp.3 | 2 man/man3/pmerrstr.3 | 3 man/man3/pmeventflagsstr.3 | 3 man/man3/pmidstr.3 | 3 man/man3/pmindomstr.3 | 3 man/man3/pmiunits.3 | 4 - man/man3/pmnumberstr.3 | 3 man/man3/pmtime.3 | 8 +- man/man3/pmtraversepmns.3 | 3 man/man3/pmtypestr.3 | 3 man/man3/pmunitsstr.3 | 3 qa/.gitignore | 2 qa/003 | 1 qa/504 | 14 ++++ qa/504.out | 32 --------- qa/504.out.1 | 32 +++++++++ qa/504.out.2 | 32 +++++++++ qa/533 | 6 + qa/575 | 17 +++- qa/575.out | 2 qa/575.out.1 | 3 qa/575.out.2 | 3 qa/chk.setup | 58 ++++++++-------- src/include/pcp/impl.h | 1 src/libpcp/src/auxconnect.c | 114 +++++++++++++++++++------------- src/libpcp/src/exports | 1 src/libpcp/src/secureconnect.c | 142 +++++++++++++++++++++++++---------------- src/pmie/examples/GNUmakefile | 1 src/pmie/rc_pmie | 2 src/pmie/src/pmie.c | 5 - src/pmlogger/pmnewlog.sh | 23 ++---- src/pmproxy/rc_pmproxy | 2 35 files changed, 417 insertions(+), 264 deletions(-) commit be5b89099801f1013b8bf42e06e3932fabc93bd6 Author: Ken McDonell Date: Thu Jan 9 07:25:09 2014 +1100 qa/533 - more diags to 533.full commit aa17507b0469014b7a1a567ec64b24af9ec80010 Author: Ken McDonell Date: Thu Jan 9 07:23:31 2014 +1100 libpcp/auxconnect.c - fix diag botch in printf Got this wrong in my last commit in this area. commit f2d0d82359da4506ee31706156398946ce8c6d37 Author: Ken McDonell Date: Thu Jan 9 07:21:32 2014 +1100 pmnewlog - minor changes (diags and collect config) With -V still need to determine host name. When trying to rebuild pmlogger configuration from the currently running pmlogger, pminfo needs -h to talk to the pmlogger's pmcd not the local pmcd (if there is one). commit 8b04845ff778a9b97ac01cc9b0c7e8a7bc6c8f2f Author: Ken McDonell Date: Sun Jan 5 17:35:19 2014 +1100 libpcp - tweak diags in __pmConnect Need debug flags CONTEXT & DESPERATE, not just CONTEXT. commit 2e4a05a83607da058247675acfd4d3abcc05167f Author: Ken McDonell Date: Sun Jan 5 06:42:34 2014 +1100 libpcp - *connect.c - diagnostic cleanup Since there are routines of the same name in these two files (build-time configuration selects one or the other), add __FILE__ as prefix to all diagnostic messages. Also add more diagnostics around __pmBind() to help track down QA failures. commit 62f4986836b6ad44b4b98e6d0c238df80edb0de5 Author: Ken McDonell Date: Sat Jan 4 21:14:25 2014 +1100 libpcp - add __pmSockAddrGetPort() Dual of existing routine __pmSockAddrSetPort(). commit 70c8489def5f0b6ef6271ff0b8e9e8139cee4a42 Author: Ken McDonell Date: Sat Jan 4 09:25:21 2014 +1100 pmie and pmproxy rc script tweak We still has a couple of remnants of the old verbose Performance Co-Pilot starting ... messages in these two rc scripts. Updated to the more terse (and consistent with the other rc scripts) Starting pmie ... Starting pmproxy ... commit 3492c52fd178e53709579473dfcb03ba953ab0de Author: Ken McDonell Date: Sat Jan 4 07:00:25 2014 +1100 qa/003 - network.icmpmsg.* metrics sometimes unavailable Adjust filter. commit 159bcf34b9391e0505cc31556639ce55a6ea6ad7 Author: Ken McDonell Date: Sat Jan 4 06:58:17 2014 +1100 qa/chk.setup - allow host on the command line So I can check just one QA host, not all of 'em. commit c3b76c8eff6f7c07ea2886b6f7dfdb30411cb600 Author: Ken McDonell Date: Sun Dec 29 08:21:48 2013 +1100 man page rework for some NAME entries When more than one command/routine per man page, start each command/routine name on a new line in the NAME section. Fixes http://oss.sgi.com/bugzilla/show_bug.cgi?id=972 commit a4646cc362856a38ac2370bfe179cf4466b6b7aa Author: Ken McDonell Date: Sun Dec 29 06:36:13 2013 +1100 INSTALL - add notes for creating user pcp before make from source In response to bug http://oss.sgi.com/bugzilla/show_bug.cgi?id=1040 from Tomáš Dohnálek. commit ed6c37f1d5d3e46cdbe520ae261d416f647e613d Author: Ken McDonell Date: Sat Dec 28 21:17:46 2013 +1100 pmpost - one more bizarre name collision fixup Small change to edit DISK group to include full correct pathname for pmpost commit ab4a162e58ae44ddd31b1e0dafe80ab1153fd5d4 Author: Ken McDonell Date: Sat Dec 28 15:44:42 2013 +1100 pmie - temp file directory creation change First off, pmie should not try and create $PCP_TMP_DIR/pmie ... it should be done in the packaging. But even if we try to do a "fixup" creation here then a failure to create the directory should not be a fatal error ... it should be just like the later failure to create the stats file, namely pmie still runs there are just no stats available to the pmcd pmda. From kenj@internode.on.net Wed Jan 8 14:39:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6B7DA7F3F for ; Wed, 8 Jan 2014 14:39:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 41BAA8F8035 for ; Wed, 8 Jan 2014 12:39:53 -0800 (PST) X-ASG-Debug-ID: 1389213588-04cbb04168c9a420001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id hda0lFBQZ9WE9ZYV for ; Wed, 08 Jan 2014 12:39:48 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiYeANu2zVJ20aX3PGdsb2JhbAANTINDiA6zLgMBAQEBOIMZQDANFhgDAgECATEnBgIBAbB6m0QXjyKEIQStbQ Received: from ppp118-209-165-247.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.165.247]) by ipmail05.adl6.internode.on.net with ESMTP; 09 Jan 2014 07:09:47 +1030 Message-ID: <52CDB7D8.9020900@internode.on.net> Date: Thu, 09 Jan 2014 07:40:56 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - merge fix up Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - merge fix up Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1389213588 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Need this one with the last batch I sent. Changes committed to git://oss.sgi.com/kenj/pcp.git dev src/libpcp/src/auxconnect.c | 2 +- 1 files changed, 2 insertions(+), 2 deletions(-) commit ed63cb4d85b35f9d35b711f2ce2b2695e046c327 Merge: be5b890 04eb96d Author: Ken McDonell Date: Thu Jan 9 07:37:12 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev Conflicts: src/libpcp/src/auxconnect.c My version wins this time. From brolley@redhat.com Wed Jan 8 15:15:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5D5397F3F for ; Wed, 8 Jan 2014 15:15:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3515D8F8033 for ; Wed, 8 Jan 2014 13:15:07 -0800 (PST) X-ASG-Debug-ID: 1389215706-04cbb04169c9b710001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id O2P8B9tW4bqqGxc4 for ; Wed, 08 Jan 2014 13:15:06 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s08LF5Xp029428 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 8 Jan 2014 16:15:05 -0500 Received: from [10.10.54.109] (vpn-54-109.rdu2.redhat.com [10.10.54.109]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s08LF4ZL003147 for ; Wed, 8 Jan 2014 16:15:05 -0500 Message-ID: <52CDBFD8.2000101@redhat.com> Date: Wed, 08 Jan 2014 16:15:04 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: PCP Subject: pcp updates - avahi service names Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - avahi service names Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389215706 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Avahi service names must be less than AVAHI_LABEL_MAX in length. -------------------------------------------------------------------------- commit 61de57e2e116a4a62ecfa750622e87a381b925f4 Author: Dave Brolley Date: Wed Jan 8 16:11:40 2014 -0500 Ensure that the Avahi service name is valid. From t-bounce-c7182814-78b8-11e3-8080-808080808080-pcp=oss.sgi.com@nl.business-romania.net Wed Jan 8 17:01:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.2 required=5.0 tests=DEAR_SOMETHING, HTML_IMAGE_ONLY_32,HTML_MESSAGE,T_DKIM_INVALID,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 603C47F4E for ; Wed, 8 Jan 2014 17:01:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3CD948F8035 for ; Wed, 8 Jan 2014 15:01:35 -0800 (PST) X-ASG-Debug-ID: 1389222083-04cb6c537cca4be0001-S8gJnT Received: from send1.nl.business-romania.net (send1.nl.business-romania.net [50.115.174.103]) by cuda.sgi.com with ESMTP id sOZNv6Y8DjgEfEQV for ; Wed, 08 Jan 2014 15:01:23 -0800 (PST) X-Barracuda-Envelope-From: t-bounce-c7182814-78b8-11e3-8080-808080808080-pcp=oss.sgi.com@nl.business-romania.net X-Barracuda-Apparent-Source-IP: 50.115.174.103 Received: from business-romania (sarin.newsmanapp.com [144.76.203.142]) by send1.nl.business-romania.net (Postfix) with ESMTP id 7A86C175DD2 for ; Wed, 8 Jan 2014 23:04:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nl.business-romania.net; s=default; t=1389222289; bh=G+Ae33axhSSw8JTxJ2x+bSC7RfPoxMexXQa53On0I6M=; h=Subject:List-Unsubscribe:From:Reply-To:To:Date:From; b=nDNC4nPVS9jqWG0L0Cq8iCK6WInMuOSArBOdr9mzmeDk5XzLIwEJuHTlnuFN78r3q nGhn3Tbg8DjdUSmA7/Zkl8zsCjKXTMr2be3m215a5zLclMeAmA1i/yMWE9akNhziy+ +EujtOuPewayZG2CSPG0igjHX+12BLcox7x+3FKY= Subject: Offices & Showroom Building for sale in IASI, Romania X-Priority: 3 X-ASG-Orig-Subj: Offices & Showroom Building for sale in IASI, Romania Content-Type: multipart/alternative; boundary="===============6041847534779772538==" MIME-Version: 1.0 Message-Id: <20140108230116.82488.c7182814-78b8-11e3-8080-808080808080.crbrmail@nl.business-romania.net> List-Unsubscribe: From: office@allforprintmarket.com Reply-To: office@allforprintmarket.com To: pcp@oss.sgi.com Date: Wed, 08 Jan 2014 23:01:16 -0000 X-Barracuda-Connect: send1.nl.business-romania.net[50.115.174.103] X-Barracuda-Start-Time: 1389222083 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b, DKIM_SIGNED, DKIM_VERIFIED, HTML_IMAGE_ONLY_32, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143881 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_IMAGE_ONLY_32 BODY: HTML: images with 2800-3200 bytes of words 0.00 HTML_MESSAGE BODY: HTML included in message 0.40 BSF_SC0_SA085b Custom Rule SA085b --===============6041847534779772538== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [1]: http://www.allforprintmarket.com/ # Offices & Showroom Building for sale in IASI, Romania Dear Sirs, We have on sale an Offices & Showroom Building, a former auto service, in the center of IASI city, the 4th biggest city in Romania, with a population of more than 300000 inhabitans. The assets consist of: 1/ BUILDING built in 2007 - 2 levels: 818 sqm ground floor + 641 sqm first floor - heights: 4 m ground floor + 3 m first floor - construction of reinforced concrete, brick exterior walls, thermo-plated,= exterior curtain wall joinery, fitted with double glazing secure layer (li= nk) and reflective exterior shutters, double pedestrian door automatic 3-do= or electric freight access, simple wicket, Terrace circulating Granuflex co= ated, 4 skylights wide area - equipped with automatic smoke vents, 3 stairc= ases, 1 elevator, 5 bathrooms, air conditioning GEA, with fan, heating gas = boiler Buderus, installations for card access at the administrative area; 2/ LAND: - 1068 sqm - owner property - 34 sqm - possession undocumented - 122 sqm - concesioned from the City Hall - 20 parking places IASI city is the capital of IASI county, the biggest county in Romania, with a population of 772000 inhabitans. Price: On Request Looking forward to your answer. Best Regards, Catalin Rusu Rusu E Catalin PFA Sos Nicolina nr 40, 700687 - IASI ROMANIA VAT 30548758 F22/2172/14.08.2012 Mobile: +40 735 886 201 Fax: +40 372 877 165 office@business-romania.net www.business-romania.net This is an informing email and it shouldn\' t be spam. If you don\' t want to receive emails from business-romania.net send a reply to this email with the message DELETE --===============6041847534779772538== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Offices &= Showroom Building for sale in IASI, Romania


Dear Sirs,



We have on sale an Offices & Showroom Building, a former auto service, = in the center of IASI city, the 4th biggest city in Romania, with a popula= tion of more than 300000 inhabitans.

The assets consist of:

1/ BUILDING built in 2007
- 2 levels: 818 sqm ground floor + 641 sqm first floor
- heights: 4 m ground floor + 3 m first floor
- construction of reinforced concrete, brick exterior walls, thermo-plated,= exterior curtain wall joinery, fitted with double glazing secure layer (li= nk) and reflective exterior shutters, double pedestrian door automatic 3-do= or electric freight access, simple wicket, Terrace circulating Granuflex co= ated, 4 skylights wide area - equipped with automatic smoke vents, 3 stairc= ases, 1 elevator, 5 bathrooms, air conditioning GEA, with fan, heating gas = boiler Buderus, installations for card access at the administrative area;
2/ LAND:
- 1068 sqm - owner property
- 34 sqm - possession undocumented
- 122 sqm - concesioned from the City Hall
- 20 parking places


IASI city is the capital of IASI county, the biggest county in Romania, wit= h a population of 772000 inhabitans.

Price: On Request

Looking forward to your answer.




Best Regards,
Catalin Rusu


Rusu E Catalin PFA
Sos Nicolina nr 40, 700687 - IASI
ROMANIA
VAT 30548758
F22/2172/14.08.2012

Mobile: +40 735 886 201
Fax: +40 372 877 165
office@business-romania.net
www.business-romania.net



This is an informing email and it shouldn\' t be spam. If you don\' t want = to receive emails from business-romania.net send a reply to this email with= the message DELETE


=C2=A0
--===============6041847534779772538==-- From nscott@redhat.com Wed Jan 8 19:46:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 747B87F3F for ; Wed, 8 Jan 2014 19:46:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4E1A78F8039 for ; Wed, 8 Jan 2014 17:46:46 -0800 (PST) X-ASG-Debug-ID: 1389232004-04cbb04166ca7550001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id N5ALmZRQT5emZiyI for ; Wed, 08 Jan 2014 17:46:45 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s091kiwC022676 for ; Wed, 8 Jan 2014 20:46:44 -0500 Date: Wed, 8 Jan 2014 20:46:44 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <785821202.46992636.1389232004456.JavaMail.root@redhat.com> In-Reply-To: <1443305367.46991861.1389231829403.JavaMail.root@redhat.com> Subject: pcp updates: packaging MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: packaging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: packaging Thread-Index: /okwalAaUQ90b2XcrdszH8hr8SQmvw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389232005 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143888 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev CHANGELOG | 21 +++++++++++++++++++-- VERSION.pcp | 2 +- build/rpm/fedora.spec | 15 ++++++++++----- build/rpm/pcp.spec.in | 17 ++++++++++------- debian/changelog | 4 ++-- debian/pcp.postinst.tail | 17 ++++++++++------- debian/pcp.postrm.tail | 1 + src/pmmgr/GNUmakefile | 2 ++ src/pmns/GNUmakefile | 6 ++++-- 9 files changed, 59 insertions(+), 26 deletions(-) commit c311f5a619c68e74ccfd44a089921a351769d8ae Author: Nathan Scott Date: Thu Jan 9 12:41:04 2014 +1100 Updates to packaging - pmmgr goodness, NeedRebuild jiggery-pokery Add in pmmgr chkconfig bits and pieces to spec and deb files. Install the logs directory for pmmgr too. Another tilt at the NeedRebuild saga - this is a temp flag file, which will be removed, as such it should not be in the RPM package filelist. commit d1c3c27b32a8354eaddcf7fa5c12ea09020ff1e7 Author: Nathan Scott Date: Thu Jan 9 10:28:22 2014 +1100 Tweak debian packaging tmpfile move slightly, for safety commit 607b017428fc0c9aaa2cb93a0efa819249d58f61 Author: Nathan Scott Date: Thu Jan 9 10:26:14 2014 +1100 Reset VERSION file back to how it should look at this stage commit 6b5c4782a1f62bab46fd2c508e5a61b7f8e646cb Author: Nathan Scott Date: Thu Jan 9 09:46:13 2014 +1100 Update changelog details prepping for a future point release From mgoodwin@redhat.com Wed Jan 8 20:45:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 251837F3F for ; Wed, 8 Jan 2014 20:45:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id CE969304066 for ; Wed, 8 Jan 2014 18:45:41 -0800 (PST) X-ASG-Debug-ID: 1389235540-04bdf00fe05a4d90001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ffDShd8l3AohAfeH for ; Wed, 08 Jan 2014 18:45:41 -0800 (PST) X-Barracuda-Envelope-From: mgoodwin@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s092jelv031905 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 8 Jan 2014 21:45:40 -0500 Received: from [10.64.50.251] (vpn1-50-251.bne.redhat.com [10.64.50.251]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s092jcXx001218 for ; Wed, 8 Jan 2014 21:45:40 -0500 Message-ID: <52CE0D52.3080407@redhat.com> Date: Thu, 09 Jan 2014 13:45:38 +1100 From: Mark Goodwin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] pcp updates: packaging References: <785821202.46992636.1389232004456.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pcp updates: packaging In-Reply-To: <785821202.46992636.1389232004456.JavaMail.root@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389235541 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 01/09/2014 12:46 PM, Nathan Scott wrote: > Another tilt at the NeedRebuild saga - this is a temp flag file, which > will be removed, as such it should not be in the RPM package filelist. just a nit: should it still be present but prefixed with a %ghost directive? e.g. so rpm -e will correctly erase it? (and to keep rpmlint happy too). From nscott@redhat.com Wed Jan 8 22:28:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BB2277F3F for ; Wed, 8 Jan 2014 22:28:43 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2F226AC008 for ; Wed, 8 Jan 2014 20:28:33 -0800 (PST) X-ASG-Debug-ID: 1389239517-04cbb04166cad860001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id CBKfkBPIPPtwg2ox for ; Wed, 08 Jan 2014 19:51:57 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s093pvS1018447; Wed, 8 Jan 2014 22:51:57 -0500 Date: Wed, 8 Jan 2014 22:51:56 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Mark Goodwin Cc: pcp@oss.sgi.com Message-ID: <1987012526.47030979.1389239516970.JavaMail.root@redhat.com> In-Reply-To: <52CE0D52.3080407@redhat.com> References: <785821202.46992636.1389232004456.JavaMail.root@redhat.com> <52CE0D52.3080407@redhat.com> Subject: Re: [pcp] pcp updates: packaging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates: packaging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: packaging Thread-Index: 9wBrysqa7ufxVRBNDEhwu51Z3fMCkg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389239517 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143892 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Mark, ----- Original Message ----- > On 01/09/2014 12:46 PM, Nathan Scott wrote: > > Another tilt at the NeedRebuild saga - this is a temp flag file, which > > will be removed, as such it should not be in the RPM package filelist. > > just a nit: should it still be present but prefixed with a %ghost directive? I don't really know - what advantages would that give? Just these two... ? > e.g. so rpm -e will correctly erase it? (and to keep rpmlint happy too). We can remove it in the %preun ourselves - Frank mentioned this too, and this is now in place - tho manually done, *shrug*. rpmlint doesn't know about the file at all, so I'd think it wouldn't complain. I don't have a preference really, just keen to stop the stream of niggly rpm install complaints that come in ... feel free to tackle it different/better! cheers. -- Nathan From nscott@redhat.com Thu Jan 9 00:15:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E39467F3F for ; Thu, 9 Jan 2014 00:15:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BD1068F8035 for ; Wed, 8 Jan 2014 22:14:56 -0800 (PST) X-ASG-Debug-ID: 1389248094-04cb6c537ecb50b0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id iKB6FYuNnUli9cWC for ; Wed, 08 Jan 2014 22:14:55 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s096EsxM007624; Thu, 9 Jan 2014 01:14:54 -0500 Date: Thu, 9 Jan 2014 01:14:54 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: pcp developers Message-ID: <457196255.47058472.1389248094132.JavaMail.root@redhat.com> In-Reply-To: <20140108013956.GG15448@redhat.com> References: <20140108013956.GG15448@redhat.com> Subject: Re: [pcp] braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: hguezRWFICEp8/6XwSHpQcaNTWgaoA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389248094 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143894 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Frank, Thanks for coming back to this - good to have others pondering it too! ----- Original Message ----- > Hi - > > Here are some notes related our earlier unified-context ideas [1][2]. > As a recap, it's desirable to teach pcp clients to locate pcp data for > arbitrary hosts, and then to easily seek between live & historical > metrics for it. > > [1] http://oss.sgi.com/pipermail/pcp/2013-September/003963.html > [2] http://oss.sgi.com/pipermail/pcp/2013-November/004090.html > > My proposed approach focuses on archive files and a new server for the > archive files. It might make do without a new PM_CONTEXT_* mode, and > at the PMAPI level just generalize PM_CONTEXT_ARCHIVE & _HOST a little. Its not really clear what the reasons for not liking a new context type are. The description starts out here with "just" & "a little" ... so I'm thinking perhaps it is perceived as overly complex? By the end here though, we have a new protocol rev, new server, a fair bit of new code in pmlogger, libpcp, and all the clients - quickly this has become quite complex too. Its a hard problem. An approach that requires a server is not ideal too - often times we will be working with only archives, on systems removed from the recorded production systems. It is ideal if client tools continue to operate in this isolated way also. Not 100% sure if a server was *required* with this new approach, but kinda sounded like it - I'm not a fan if so. Having said that, there's areas of overlap ... > > 1) We'd extend archive files to be usable as a source of "live" data, > so that clients can sort-of-"tail -f" the files to get current info, > or can seek along time with pmSetMode(). ...like this bit; this is something that both approaches benefit from. Its also something that could be more deeply investigated right away, to determine the extent of the problem. Mark mentioned that the old pmchart (original SGI version) was able to do this - via handling the PM_ERR_EOL return code from pmFetch and dealing with it (somehow). A solution with more help from libpcp would be good, if thats possible; needs further investigation though. See bullet point #3 from reference [1] above. Same same. > 1.1) pmlogger needs to learn to write its output with what IIRC kenj > has referred to as "semantic units", ie., proper use sequencing of > write(2), fdatasync(), to put interdependent data on disk correctly. Its more complicated than this though, I think. IIUC, one of the big differences between what you're describing & the grand-unified-context theory is that there is no transition-to-live-mode here - everything has to be read from the log (possibly by an intermediary daemon rather than directly from the file, but still read-from-log). Is that right? As an aside, not sure fdatasync will help us here (unless we're also becoming more concerned with on-disk integrity, but we'd need to do a whole lot of unrelated work - journalling etc, ondisk format change). Both pmlogger (writing) and PMAPI clients (reading) are accessing the data from the page cache. So file locking might be needed, and some kind of mechanism where the client can *tell* pmlogger it needs to flush its buffers, but thats different to fsync. > 1.2) libpcp needs to learn to read archives that are being written-to. As above, it can ... perhaps it needs to learn more. Needs analysis, we're guessing a bit as to what state its in now. > It should not freak out when the end-of-file is reached, and for "freak out" == PM_ERR_EOL from pmFetch, I think, but maybe its more freaky than that - we don't know, but Marks anecdotal evidence is suggesting it is perhaps not as bad as earlier thought. > PM_MODE_LIVE, just return the then-freshest measurements and/or > trigger PM_ERR_PMDANOTREADY if clients are fetching faster than the > logger is recording. That doesn't sound much different from what it does now? What the clients do next, and whether that can be done in libpcp rather than individually in each tool is an open question I think. > This could be done without a PM_CONTEXT_UNIFIED > extension, just permitting PM_MODE_LIVE for PM_CONTEXT_ARCHIVE, and > giving clients an option (like the -f for tail) to use that flag. This doesn't seem to consider two aspects that grand-unified-contexts are attempting to address: - the historical data will usually span many archives not just one; - the pmNewContext(PM_CONTEXT_ARCHIVE) API semantics require a file path to be passed in specifying the (one) archive to use, and not a host specifier - I guess we would have to use the hostname from that archive, then do pmfind-style discovery for servers that know about that host? (how to authenticate though, which will be needed for sure if we're talking about modifying the logged set too?) These do seem to be things that must be solved by whatever approach we take too, so perhaps expand on these aspects more for us? > 2) Because these archive files may not be local to the clients, or > because they may not already contain every metric a client might like, > we need a network server to offer them such tasty treats. Elsewhere > and elsewhen, nathans has ably argued that this shouldn't be pmcd, but > a new server or an extended pmlogger/pmproxy/pmmgr. Whatever we decide to do, I'd like to avoid new daemons if we can - we have six (!) init scripts now, its getting out of hand. So a pmproxy extension/rewrite gets my vote if we must talk to a daemon for remote archive data. We already need to add authentication to pmproxy, and proxying archives doesn't seem a huge stretch beyond the host proxying that it already does. > 2.1) A new server needs to be written, which would monitor some local > archive files, and serve an extended pcp wire protocol for it (one > that includes archive-like pmSetMode operations). It would advertise > the pcp hostname (or pmmgr-style hostid) to the network, so clients > can find the right host data (probably one tcp port per archive, or > else multiplexed over a single tcp port and identifying the host > during startup negotiation). The clients could keep using > PM_CONTEXT_HOST but permit PM_MODE_BACK etc. to forward -S/-T times - > ie. no requirement for a new PM_CONTEXT_UNIFIED. We also need to add discovery to pmproxy (already). We may need to rework pmproxy to deal with slower I/O needs of serving logs (maybe thread it, and make it follow a request-callback-completion style); that will benefit the existing multiple-hosts-proxying as well. > 2.2) Clients would be extended with enough discovery logic to find the > network server that has data for the interested pcp hostname / > pmmgr-hostid. Or, just rely on an extended pmfind: > "pmstat -h `pmfind --hostid HOSTID`" would attach to a server that > has data for that HOSTID. (A bonus complication is having multiple > archives/servers for the same HOSTID, such as with different subsets > of metrics, or for different times: perhaps extra pmfind filtering > params.) > > 2.3) That server needs to be extended: merged into pmlogger, or > interfaced with pmlc, so as to arrange logging of newly requested live > data that wasn't already set up in the pre-configured set of metrics. > It could heuristically control their logging interval and duration for > multiple clients. This bit sounds quite complex - AIUI it'll need to manage multiple users requests (authenticated) which may request the system pmlogger(s) to log arbitrary metrics at arbitrary frequencies. I think the unified context approach dealt with this more simply where different users archives were kept in their own home directories, managed by separate pmloggers, with no extra magic needed (no new auth issues, and issues around users over- loading the system logger / reserved filesystem space). Having said that, its good to have different ideas and more options, cos this is all going to be quite tricky to implement. :) There are several aspects to both the above and that earlier grand-unified-context mail that were vague or glossed over. At this stage it feels like some early, basic, maybe even throw-away kind of coding might help flesh out some of those unknowns for us & better inform the designs we come up with. cheers. -- Nathan From mgoodwin@redhat.com Thu Jan 9 01:03:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E822A29DF8 for ; Thu, 9 Jan 2014 01:03:30 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D14BF304075 for ; Wed, 8 Jan 2014 23:03:27 -0800 (PST) X-ASG-Debug-ID: 1389250997-04cbb04169cb9a20001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id iCCIMpc64Vz9JwmR for ; Wed, 08 Jan 2014 23:03:18 -0800 (PST) X-Barracuda-Envelope-From: mgoodwin@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0973H0f019057 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 9 Jan 2014 02:03:17 -0500 Received: from [10.64.51.18] (vpn1-51-18.bne.redhat.com [10.64.51.18]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0973Fue000639 for ; Thu, 9 Jan 2014 02:03:16 -0500 Message-ID: <52CE49B3.4050604@redhat.com> Date: Thu, 09 Jan 2014 18:03:15 +1100 From: Mark Goodwin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging In-Reply-To: <20140108013956.GG15448@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389250997 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Some comments in-line below - I think this is evolving in all the right directions, if I'm any judge :) On 01/08/2014 12:39 PM, Frank Ch. Eigler wrote: > Hi - > > Here are some notes related our earlier unified-context ideas [1][2]. > As a recap, it's desirable to teach pcp clients to locate pcp data for > arbitrary hosts, and then to easily seek between live & historical > metrics for it. > > [1] http://oss.sgi.com/pipermail/pcp/2013-September/003963.html > [2] http://oss.sgi.com/pipermail/pcp/2013-November/004090.html > > My proposed approach focuses on archive files and a new server for the > archive files. It might make do without a new PM_CONTEXT_* mode, and > at the PMAPI level just generalize PM_CONTEXT_ARCHIVE & _HOST a little. > > > 1) We'd extend archive files to be usable as a source of "live" data, > so that clients can sort-of-"tail -f" the files to get current info, > or can seek along time with pmSetMode(). > > 1.1) pmlogger needs to learn to write its output with what IIRC kenj > has referred to as "semantic units", ie., proper use sequencing of > write(2), fdatasync(), to put interdependent data on disk correctly. the old pmchart used to be able to replay from the tail of a growing archive - I think pmlogger was modified to update and sync() the archive label with new time bounds whenever new data was available (and had been sync'd). By polling the archive label the tool never tried to read partial records and if it tried to get ahead of real-time it would just stop. > 1.2) libpcp needs to learn to read archives that are being written-to. > It should not freak out when the end-of-file is reached, and for > PM_MODE_LIVE, just return the then-freshest measurements and/or > trigger PM_ERR_PMDANOTREADY if clients are fetching faster than the > logger is recording. This could be done without a PM_CONTEXT_UNIFIED > extension, just permitting PM_MODE_LIVE for PM_CONTEXT_ARCHIVE, and > giving clients an option (like the -f for tail) to use that flag. yes agree CONTEXT_UNIFIED isn't needed if CONTEXT_ARCHIVE and CONTEXT_HOST can be made synonymous. > 2) Because these archive files may not be local to the clients, or > because they may not already contain every metric a client might like, > we need a network server to offer them such tasty treats. Elsewhere > and elsewhen, nathans has ably argued that this shouldn't be pmcd, but > a new server or an extended pmlogger/pmproxy/pmmgr. > 2.1) A new server needs to be written, which would monitor some local > archive files, and serve an extended pcp wire protocol for it (one > that includes archive-like pmSetMode operations). It would advertise > the pcp hostname (or pmmgr-style hostid) to the network, so clients > can find the right host data (probably one tcp port per archive, or > else multiplexed over a single tcp port and identifying the host > during startup negotiation). The clients could keep using > PM_CONTEXT_HOST but permit PM_MODE_BACK etc. to forward -S/-T times - > ie. no requirement for a new PM_CONTEXT_UNIFIED. Or alternatively, PM_CONTEXT_ARCHIVE that supports live mode with -S 'now' or whatever.. This might be less work since archive contexts already support all of the PM_MODE_* options, etc. I guess we could end up with -a and -h options being synonyms. > 2.2) Clients would be extended with enough discovery logic to find the > network server that has data for the interested pcp hostname / > pmmgr-hostid. Or, just rely on an extended pmfind: > "pmstat -h `pmfind --hostid HOSTID`" would attach to a server that > has data for that HOSTID. (A bonus complication is having multiple > archives/servers for the same HOSTID, such as with different subsets > of metrics, or for different times: perhaps extra pmfind filtering > params.) OK, so "pmsometool -a hostname" should invoke the mentioned discovery mechanism to find the relevant archive(s) containing the metrics for the requested host and timestamps, without the user or client having to do anything special. That data may be spread across multiple archives (for the same host but for different timestamps and/or metrics), but this can and should be completely transparent. It's a configuration task to nominate the set of directories and/or ports to search, perhaps aided by a $PCP_ARCHIVE_SEARCH_PATH envar or something. For live monitoring, it's up to the PMAPI infrastructure whether it gets the data from the tail of one or more archives or from pmcd on the named host, or the proposed new server .., or a combination depending on what's being logged and where - the client tool shouldn't care. For back-compat, an explicit archive path/file can still be named and -h hostname is just synonymous with "-a hostname -S live" (or whatever designates 'now'). > > 2.3) That server needs to be extended: merged into pmlogger, or > interfaced with pmlc, so as to arrange logging of newly requested live > data that wasn't already set up in the pre-configured set of metrics. > It could heuristically control their logging interval and duration for > multiple clients. This clearly doesn't work for the case where a client decides to rewind and replay metrics from befoe the time they started being logged when they were first requested. ENOTIMEMACHINE :) But it should be ok for the common use cases and would be quite innovative. Cheers -- Mark From makc@iinet.net.au Thu Jan 9 06:38:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C86617F3F for ; Thu, 9 Jan 2014 06:38:40 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 99EC68F8037 for ; Thu, 9 Jan 2014 04:38:34 -0800 (PST) X-ASG-Debug-ID: 1389270219-04cbb04169cc25e0001-S8gJnT Received: from icp-osb-irony-out9.external.iinet.net.au (icp-osb-irony-out9.external.iinet.net.au [203.59.1.226]) by cuda.sgi.com with ESMTP id t6LxF0IY9M5uLmef for ; Thu, 09 Jan 2014 04:23:40 -0800 (PST) X-Barracuda-Envelope-From: makc@iinet.net.au X-Barracuda-Apparent-Source-IP: 203.59.1.226 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiEFAL+TzlLL2Rwk/2dsb2JhbABZgwuDOrQRhBgWdIImAQEEOj8QCw0nEiwrBogCARPEeBeTQwSYF4ZsiymDQSg X-IronPort-AV: E=Sophos;i="4.95,630,1384272000"; d="scan'208";a="169185556" Received: from unknown (HELO emma.crabbed.net) ([203.217.28.36]) by icp-osb-irony-out9.iinet.net.au with ESMTP; 09 Jan 2014 20:23:38 +0800 Received: by emma.crabbed.net (Postfix, from userid 16314) id 3503D32EAE3; Thu, 9 Jan 2014 23:23:38 +1100 (EST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <21198.38090.179929.552608@iinet.net.au> Date: Thu, 9 Jan 2014 23:23:38 +1100 From: Max Matveev To: "Frank Ch. Eigler" Cc: pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging In-Reply-To: <20140108013956.GG15448@redhat.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> X-Mailer: VM 7.17 under 21.4 (patch 19) "Constant Variable" XEmacs Lucid X-Barracuda-Connect: icp-osb-irony-out9.external.iinet.net.au[203.59.1.226] X-Barracuda-Start-Time: 1389270219 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143903 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Tue, 7 Jan 2014 20:39:56 -0500, Frank Ch Eigler wrote: fche> 1.1) pmlogger needs to learn to write its output with what IIRC kenj fche> has referred to as "semantic units", ie., proper use sequencing of fche> write(2), fdatasync(), to put interdependent data on disk correctly. This was the biggest bugbear of NAS Manager (for those who remember) which tried to provide historical and live data using archives as main source of information. I'd imagine this could be solved given more then .33 of engineer available to work on PCP. Still, the nightmares are still with me and I wasn't the .33 at the time. fche> 2.1) A new server needs to be written, which would monitor some local fche> archive files, and serve an extended pcp wire protocol for it (one fche> that includes archive-like pmSetMode operations). It would advertise fche> the pcp hostname (or pmmgr-style hostid) to the network, so clients fche> can find the right host data (probably one tcp port per archive, or fche> else multiplexed over a single tcp port and identifying the host fche> during startup negotiation). The clients could keep using fche> PM_CONTEXT_HOST but permit PM_MODE_BACK etc. to forward -S/-T times - fche> ie. no requirement for a new PM_CONTEXT_UNIFIED. What would happen if pcp client is using PM_CONTEXT_HOST with new protocol? Will it be banned or will it be silently dropped back to current "live" sematic? max From t-bounce-eaa3696e-794f-11e3-8080-808080808080-pcp=oss.sgi.com@nl.business-romania.net Thu Jan 9 11:03:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.2 required=5.0 tests=DEAR_SOMETHING, HTML_IMAGE_ONLY_32,HTML_MESSAGE,T_DKIM_INVALID,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1A58C7F3F for ; Thu, 9 Jan 2014 11:03:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E272B8F8054 for ; Thu, 9 Jan 2014 09:03:18 -0800 (PST) X-ASG-Debug-ID: 1389286996-04bdf00fdf5cc930001-S8gJnT Received: from send2.nl.business-romania.net (send2.nl.business-romania.net [50.115.174.104]) by cuda.sgi.com with ESMTP id RuPGihwUBdU2TGab for ; Thu, 09 Jan 2014 09:03:17 -0800 (PST) X-Barracuda-Envelope-From: t-bounce-eaa3696e-794f-11e3-8080-808080808080-pcp=oss.sgi.com@nl.business-romania.net X-Barracuda-Apparent-Source-IP: 50.115.174.104 Received: from business-romania (sarin.newsmanapp.com [144.76.203.142]) by send2.nl.business-romania.net (Postfix) with ESMTP id 605061757FB for ; Thu, 9 Jan 2014 17:06:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nl.business-romania.net; s=default; t=1389287205; bh=xiEuI/o2xMt0dzVaSCwZGAh7Q/KOTnL5+9vCA9TIOQM=; h=Subject:List-Unsubscribe:From:Reply-To:To:Date:From; b=MSDg3Drr3385b4SHm9VymaRCsNh+2/p4f42TrUBEOuZG0HYvalTRhNqabaS4TvyRG ZgRGwZ182Rtpk+QV/WceO5GX8biqJnnQRXCZg0d9Vt19t1RWE/JPTJc1zjoGayfmgi 3vg6gE/PNxOP5US5I5zPWMLbBqvWpsmhMt3OazhQ= Subject: Offices & Showroom Building for sale in IASI, Romania X-Priority: 3 X-ASG-Orig-Subj: Offices & Showroom Building for sale in IASI, Romania Content-Type: multipart/alternative; boundary="===============8542203037482081872==" MIME-Version: 1.0 Message-Id: <20140109170309.3235.eaa3696e-794f-11e3-8080-808080808080.crbrmail@nl.business-romania.net> List-Unsubscribe: From: office@business-romania.net Reply-To: office@business-romania.net To: pcp@oss.sgi.com Date: Thu, 09 Jan 2014 17:03:09 -0000 X-Barracuda-Connect: send2.nl.business-romania.net[50.115.174.104] X-Barracuda-Start-Time: 1389286996 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b, DKIM_SIGNED, DKIM_VERIFIED, HTML_IMAGE_ONLY_32, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143909 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_IMAGE_ONLY_32 BODY: HTML: images with 2800-3200 bytes of words 0.00 HTML_MESSAGE BODY: HTML included in message 0.40 BSF_SC0_SA085b Custom Rule SA085b --===============8542203037482081872== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [1]: http://www.business-romania.net/ # Offices & Showroom Building for sale in IASI, Romania Dear Sirs, We have on sale an Offices & Showroom Building, a former auto service, in the center of IASI city, the 4th biggest city in Romania, with a population of more than 300000 inhabitans. The assets consist of: 1/ BUILDING built in 2007 - 2 levels: 818 sqm ground floor + 641 sqm first floor - heights: 4 m ground floor + 3 m first floor - construction of reinforced concrete, brick exterior walls, thermo-plated,= exterior curtain wall joinery, fitted with double glazing secure layer (li= nk) and reflective exterior shutters, double pedestrian door automatic 3-do= or electric freight access, simple wicket, Terrace circulating Granuflex co= ated, 4 skylights wide area - equipped with automatic smoke vents, 3 stairc= ases, 1 elevator, 5 bathrooms, air conditioning GEA, with fan, heating gas = boiler Buderus, installations for card access at the administrative area; 2/ LAND: - 1068 sqm - owner property - 34 sqm - possession undocumented - 122 sqm - concesioned from the City Hall - 20 parking places IASI city is the capital of IASI county, the biggest county in Romania, with a population of 772000 inhabitans. Price: On Request Looking forward to your answer. Best Regards, Catalin Rusu Rusu E Catalin PFA Sos Nicolina nr 40, 700687 - IASI ROMANIA VAT 30548758 F22/2172/14.08.2012 Mobile: +40 735 886 201 Fax: +40 372 877 165 office@business-romania.net www.business-romania.net This is an informing email and it shouldn\' t be spam. If you don\' t want to receive emails from business-romania.net send a reply to this email with the message DELETE --===============8542203037482081872== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Offices &a= mp; Showroom Building for sale in IASI, Romania


Dear Sirs,



We have on sale an Offices & Showroom Building, a former auto service, = in the center of IASI city, the 4th biggest city in Romania, with a popula= tion of more than 300000 inhabitans.

The assets consist of:

1/ BUILDING built in 2007
- 2 levels: 818 sqm ground floor + 641 sqm first floor
- heights: 4 m ground floor + 3 m first floor
- construction of reinforced concrete, brick exterior walls, thermo-plated,= exterior curtain wall joinery, fitted with double glazing secure layer (li= nk) and reflective exterior shutters, double pedestrian door automatic 3-do= or electric freight access, simple wicket, Terrace circulating Granuflex co= ated, 4 skylights wide area - equipped with automatic smoke vents, 3 stairc= ases, 1 elevator, 5 bathrooms, air conditioning GEA, with fan, heating gas = boiler Buderus, installations for card access at the administrative area;
2/ LAND:
- 1068 sqm - owner property
- 34 sqm - possession undocumented
- 122 sqm - concesioned from the City Hall
- 20 parking places


IASI city is the capital of IASI county, the biggest county in Romania, wit= h a population of 772000 inhabitans.

Price: On Request

Looking forward to your answer.




Best Regards,
Catalin Rusu


Rusu E Catalin PFA
Sos Nicolina nr 40, 700687 - IASI
ROMANIA
VAT 30548758
F22/2172/14.08.2012

Mobile: +40 735 886 201
Fax: +40 372 877 165
office@business-romania.net
www.business-romania.net



This is an informing email and it shouldn\' t be spam. If you don\' t want = to receive emails from business-romania.net send a reply to this email with= the message DELETE


=C2=A0
--===============8542203037482081872==-- From brolley@redhat.com Thu Jan 9 15:44:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1AC9529DF8 for ; Thu, 9 Jan 2014 15:44:00 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93B75AC002 for ; Thu, 9 Jan 2014 13:43:56 -0800 (PST) X-ASG-Debug-ID: 1389303835-04cbb04169cdb340001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FFpfelhOBReOPwj5 for ; Thu, 09 Jan 2014 13:43:55 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s09Lhti5028337 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 9 Jan 2014 16:43:55 -0500 Received: from [10.15.16.117] (dhcp-10-15-16-117.yyz.redhat.com [10.15.16.117]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s09Lhsun017635 for ; Thu, 9 Jan 2014 16:43:54 -0500 Message-ID: <52CF181A.2080705@redhat.com> Date: Thu, 09 Jan 2014 16:43:54 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: PCP Subject: pcp updates - man pages for pmDiscoverServices(3) and pmFind(1) Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - man pages for pmDiscoverServices(3) and pmFind(1) Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389303835 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 In the brolley/dev/branch of pcpfans. commit 958776756d8349cdedbbbdf356503e94791c5f9d Author: Dave Brolley Date: Thu Jan 9 16:27:46 2014 -0500 New man pages for pmDiscoverServices(3) and pmFind(1). From fche@redhat.com Thu Jan 9 17:02:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 36DB329DF8 for ; Thu, 9 Jan 2014 17:02:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9F96EAC002 for ; Thu, 9 Jan 2014 15:02:49 -0800 (PST) X-ASG-Debug-ID: 1389308565-04cb6c537dcd92f0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id maG1VjNxDCQtB8Y4 for ; Thu, 09 Jan 2014 15:02:45 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s09N2iYs019719 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 9 Jan 2014 18:02:44 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s09N2i8Y022091; Thu, 9 Jan 2014 18:02:44 -0500 Received: by fche.csb (Postfix, from userid 2569) id 7754A5817B; Thu, 9 Jan 2014 18:02:43 -0500 (EST) To: Nathan Scott Cc: pcp@oss.sgi.com Subject: Re: braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <457196255.47058472.1389248094132.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging From: fche@redhat.com (Frank Ch. Eigler) Date: Thu, 09 Jan 2014 18:02:43 -0500 In-Reply-To: <457196255.47058472.1389248094132.JavaMail.root@redhat.com> (Nathan Scott's message of "Thu, 9 Jan 2014 01:14:54 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389308565 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 nathans wrote: > [...] > An approach that requires a server is not ideal too - often times > we will be working with only archives, on systems removed from the > recorded production systems. It is ideal if client tools continue > to operate in this isolated way also. Not 100% sure if a server > was *required* with this new approach, but kinda sounded like it - > I'm not a fan if so. The idea was to break the overall problem into two overall parts: (1) for a pcp client to be able to use any archive as a liveish data source and (2) have a server control and return data from remote archives. (1) sounds like what you are referring to here. Note that for (2), I did not mean to suggest that this needs to be a system server - it could just as easily be unprivileged & per-user. > [...] >> 1.1) pmlogger needs to learn to write its output with what IIRC kenj >> has referred to as "semantic units", ie., proper use sequencing of >> write(2), fdatasync(), to put interdependent data on disk correctly. > > Its more complicated than this though, I think. IIUC, one of the big > differences between what you're describing & the grand-unified-context > theory is that there is no transition-to-live-mode here - everything > has to be read from the log (possibly by an intermediary daemon rather > than directly from the file, but still read-from-log). Is that right? Yes, but transition to "liveness" is sort of orthogonal: both -a and -h would support pmSetMode(PM_MODE_LIVE), clients would just need to ask for it. > As an aside, not sure fdatasync will help us here [...] So file > locking might be needed, and some kind of mechanism where the client > can *tell* pmlogger it needs to flush its buffers, but thats > different to fsync. (Right; mgoodwin's idea to have pmlogger frequently update the log-label would be another option.) > This [step 1, live-read archives] doesn't seem to consider two > aspects that grand-unified-contexts are attempting to address: > > - the historical data will usually span many archives not just one; > - the pmNewContext(PM_CONTEXT_ARCHIVE) API semantics require a file > path to be passed in specifying the (one) archive to use [...] Yes, this is why part (1), the generalized PM_CONTEXT_ARCHIVE, would only be an intermediate step to the overall plan. Onto part (2), the generalized PM_CONTEXT_HOST. >> 2) Because these archive files may not be local to the clients, or >> because they may not already contain every metric a client might like, >> we need a network server to offer them such tasty treats. Elsewhere >> and elsewhen, nathans has ably argued that this shouldn't be pmcd, but >> a new server or an extended pmlogger/pmproxy/pmmgr. > > Whatever we decide to do, I'd like to avoid new daemons if we can - we > have six (!) init scripts now, its getting out of hand. (Daemons don't have to be system-wide, nor have lifetimes/existence independent from the others.) > So a pmproxy extension/rewrite gets my vote if we must talk to a > daemon for remote archive data. [...] Yes, that's one possible spot, which has the head-start of already speaking PMAPI-across-the-wire. > [...] This bit sounds quite complex - AIUI it'll need to manage > multiple users requests (authenticated) which may request the system > pmlogger(s) to log arbitrary metrics at arbitrary frequencies. I > think the unified context approach dealt with this more simply where > different users archives were kept in their own home directories, > managed by separate pmloggers, with no extra magic needed (no new > auth issues, and issues around users over- loading the system logger > / reserved filesystem space). The scenarios can differ only in terms of configuration, not architecture/mechanism! *some* pmlogger would be controlled by the pmproxy (sp?) to gather more or less data, as per PMAPI clients' requests. It does not have to be *the* system pmlogger; it could be some random personal one run by some personal pmmgr. The files don't have to be under system dirs. The idea is to glue together a few orthogonal facilities: 1) the ability to serve archive data via PMAPI-across-the-wire 2) the ability to advertise/virtually-join multiple archives 3) the ability to supervise an archiver to influence future logging activity in response to PMAPI-across-the-wire > [...] At this stage it feels like some early, basic, maybe even > throw-away kind of coding might help flesh out some of those > unknowns for us & better inform the designs we come up with. Could well be! - FChE From nscott@redhat.com Thu Jan 9 18:28:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 969FB7F3F for ; Thu, 9 Jan 2014 18:28:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 371C6AC004 for ; Thu, 9 Jan 2014 16:28:49 -0800 (PST) X-ASG-Debug-ID: 1389313724-04bdf00fe05de840001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id mAdAlSAoImyy0OGz for ; Thu, 09 Jan 2014 16:28:45 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0A0SiKr000840 for ; Thu, 9 Jan 2014 19:28:44 -0500 Date: Thu, 9 Jan 2014 19:28:44 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <1255120228.47872361.1389313724795.JavaMail.root@redhat.com> In-Reply-To: <70922946.47872306.1389313688893.JavaMail.root@redhat.com> Subject: pcp updates: man pages, pmfind tweaks MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: man pages, pmfind tweaks Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: man pages, pmfind tweaks Thread-Index: t2eUgtgTUXxqPqLlgr3Qax8ztkx9jA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389313725 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev man/man1/GNUmakefile | 4 - man/man1/pmfind.1 | 110 +++++++++++++++++++++++++++---- man/man3/GNUmakefile | 5 - man/man3/pmdiscoverservices.3 | 146 +++++++++++++++++++++++++++++++++++++----- src/libpcp/src/discovery.c | 14 ++-- src/pmfind/pmfind.c | 127 ++++++++++++++++++++---------------- 6 files changed, 309 insertions(+), 97 deletions(-) commit da30db03e720d58c6f2f0ebd5189991ec2cdcaa7 Author: Nathan Scott Date: Fri Jan 10 11:26:55 2014 +1100 Updates to pmfind after further review and discussion Reading through Daves recent man page additions, a few things cropped up related to the pmfind tool. The -d ("domain") option was not yet documented, nor used in the tool, so added those in. Then realised the term "domain" was fairly ambiguous (networking domains and PMDA domains); so changed it to "mechanism", as used in the pmDiscoverServices man page already. And -d become -m as a result. Added in the -q option to pmfind (quiet mode), and added error handling to the pmDiscoverServices call. Allow alternate service names to be given, preparing for future. Added -D (debug flags) support into pmfind too, while I was in the neighbourhood. commit 1dbef4dafde49415be2473756cb967c37bbe9abc Merge: 9587767 77eefd4 Author: Dave Brolley Date: Thu Jan 9 16:28:53 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 958776756d8349cdedbbbdf356503e94791c5f9d Author: Dave Brolley Date: Thu Jan 9 16:27:46 2014 -0500 New man pages for pmDiscoverServices(3) and pmFind(1). From nscott@redhat.com Thu Jan 9 23:25:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 77BB37F3F for ; Thu, 9 Jan 2014 23:25:39 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5B3BF304087 for ; Thu, 9 Jan 2014 21:25:39 -0800 (PST) X-ASG-Debug-ID: 1389331534-04cbb04167cebc70001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id OohTPRyD9zI2lE6D for ; Thu, 09 Jan 2014 21:25:34 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0A5PYJd023522 for ; Fri, 10 Jan 2014 00:25:34 -0500 Date: Fri, 10 Jan 2014 00:25:34 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <2013930361.47977779.1389331534020.JavaMail.root@redhat.com> In-Reply-To: <1111999996.47977755.1389331527536.JavaMail.root@redhat.com> Subject: pcp-gui updates: books, gadgets (wip, slow-n-steady) MIME-Version: 1.0 X-ASG-Orig-Subj: pcp-gui updates: books, gadgets (wip, slow-n-steady) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp-gui updates: books, gadgets (wip, slow-n-steady) Thread-Index: nga5azRBe16HIpEUS0s1E53Y8BY1oA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389331534 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143927 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp-gui.git gadgets books/PCP_UAG/pcp-users-and-administrators-guide.pdf | 1 books/PCP_UAG/pcp-users-and-administrators-guide.xml | 11 -- dev/null |binary src/gadgets/main.cpp | 2 src/gadgets/parse.cpp | 96 ++++++++++++------- src/gadgets/pmgadgets.pro.in | 2 src/libqed/libqed.pro.in | 22 +++- src/libqed/qed_actionlist.cpp | 52 ++++++++++ src/libqed/qed_actionlist.h | 14 +- src/libqed/qed_bar.cpp | 78 +++++++++++++++ src/libqed/qed_bar.h | 2 src/libqed/qed_colorlist.cpp | 38 +++++++ src/libqed/qed_colorlist.h | 13 +- src/libqed/qed_gadget.cpp | 26 +++++ src/libqed/qed_gadget.h | 4 src/libqed/qed_label.cpp | 24 ++++ src/libqed/qed_led.cpp | 7 + src/libqed/qed_led.h | 7 - src/libqed/qed_legend.cpp | 29 +++++ src/libqed/qed_legend.h | 17 +-- src/libqed/qed_line.cpp | 10 + src/libqed/qed_line.h | 1 22 files changed, 380 insertions(+), 76 deletions(-) commit 6c5f1dc79baa595ee784f6e0e77855bff2ca5db6 Author: Nathan Scott Date: Fri Jan 10 16:21:31 2014 +1100 Initial pmgadgets binary now links (lots todo still of course). commit db830a93feb6bb63628b5b611a7930196fd05f7c Author: Nathan Scott Date: Fri Jan 10 13:42:32 2014 +1100 More stub routines in libqed, moving toward initial link commit ac103c7de76a35a22b08c8ac62c3a6d537e8b36e Merge: 84104f9 005c5b2 Author: Nathan Scott Date: Tue Jan 7 09:47:24 2014 +1100 Merge branch 'dev' into gadgets commit 005c5b2f250b1bf5a0e65cbc932ee5f81cbbc837 Author: Nathan Scott Date: Tue Jan 7 07:50:12 2014 +1100 Correct the filenames for pmie/pmlogger crontabs commit 84104f9e3ce11f076e8dc483b89289a3bb71db2d Author: Nathan Scott Date: Tue Nov 26 17:04:33 2013 +1100 Next batch of updates (linker-related) towards a pmgadgets binary commit b5663e8bd5deb9427e30c8c618da38b2be52d164 Author: Nathan Scott Date: Tue Nov 26 12:04:10 2013 +1100 Next set of pmgadgets updates towards a buildable binary From brolley@redhat.com Fri Jan 10 10:46:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9399E7F3F for ; Fri, 10 Jan 2014 10:46:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7F837304082 for ; Fri, 10 Jan 2014 08:46:46 -0800 (PST) X-ASG-Debug-ID: 1389372405-04cbb04166d02080001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id DjJO7pK8dpUaT4xF for ; Fri, 10 Jan 2014 08:46:45 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0AGkiWf031734 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 10 Jan 2014 11:46:45 -0500 Received: from [10.10.59.189] (vpn-59-189.rdu2.redhat.com [10.10.59.189]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0AGkhkZ020480 for ; Fri, 10 Jan 2014 11:46:44 -0500 Message-ID: <52D023F3.9010108@redhat.com> Date: Fri, 10 Jan 2014 11:46:43 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: PCP Subject: pcp updates: typo in pcp.spec.in Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates: typo in pcp.spec.in Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389372405 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 In the brolley/dev branch of pcpfans: diff --git a/build/rpm/pcp.spec.in b/build/rpm/pcp.spec.in index 418c18e..57fb60d 100644 --- a/build/rpm/pcp.spec.in +++ b/build/rpm/pcp.spec.in @@ -511,7 +511,7 @@ then # cleanup namespace state/flag, may still exist PCP_PMNS_DIR=@pcp_var_dir@/pmns - rm -f "$PCP_PMNS_DIR/.NeedRebuild" >/dev/null 2>& + rm -f "$PCP_PMNS_DIR/.NeedRebuild" >/dev/null 2>&1 fi %post --------------------------------------------------------------------- commit a689d318cfe732fb3285cc57bdbf51436ca32c18 Author: Dave Brolley Date: Fri Jan 10 11:43:49 2014 -0500 Fix typo in pcp.spec.in From renatapaes@cmmacae.rj.gov.br Fri Jan 10 10:47:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=EMAIL_URI_PHISH autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3CCC47F3F for ; Fri, 10 Jan 2014 10:47:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2660030407F for ; Fri, 10 Jan 2014 08:47:51 -0800 (PST) X-ASG-Debug-ID: 1389372466-04cb6c537ecfd1a0001-S8gJnT Received: from mail.mof.gov.bt (host220.mof.gov.bt [202.144.158.220]) by cuda.sgi.com with ESMTP id DcabXAu4txPbRjCj for ; Fri, 10 Jan 2014 08:47:48 -0800 (PST) X-Barracuda-Envelope-From: renatapaes@cmmacae.rj.gov.br X-Barracuda-Apparent-Source-IP: 202.144.158.220 X-CheckPoint: {52D021F9-16-FE19140A-1FFFF} Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.mof.gov.bt (Postfix) with ESMTP id 3E67930D7A6 for ; Fri, 10 Jan 2014 22:21:09 +0600 (BTT) X-Virus-Scanned: amavisd-new at mail.mof.gov.bt Received: from mail.mof.gov.bt ([127.0.0.1]) by localhost (mail.mof.gov.bt [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0ipXmxE+Bmgc for ; Fri, 10 Jan 2014 22:21:09 +0600 (BTT) Received: from [10.53.229.56] (unknown [196.46.245.52]) by mail.mof.gov.bt (Postfix) with ESMTPSA id 04A8C3139E9 for ; Fri, 10 Jan 2014 22:17:13 +0600 (BTT) Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: Dear: Account User To: pcp@oss.sgi.com X-ASG-Orig-Subj: Dear: Account User From: Mr Stewart Swaffield Date: Fri, 10 Jan 2014 17:18:07 +0100 Message-Id: <20140110161714.04A8C3139E9@mail.mof.gov.bt> X-Barracuda-Connect: host220.mof.gov.bt[202.144.158.220] X-Barracuda-Start-Time: 1389372467 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143942 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Dear: Account User: Your Account Quota has exceeded the storage Set Quota/Limit which is 20GB a= s set by your administrator, you are currently running on 20.9GB, you may n= ot be able to send or receive new mail until you re-validate your mailbox. = To Perform your upgrade now and continue using our online services Click or= Copy the link below to url and validate account http://webmail-verificatio= n-update.jimdo.com/ Failure To fill in your account details on the link, To Make your update.Ma= y Result In Loss Of Important Information In Your Mailbox/Or Cause Limited = Access To It. Your Account will be upgraded and activated as soon as possible. We apologize for any inconvenience. Thanks & Regards, Webmail Helpdesk Support Email secured by Check Point Security Software From brolley@redhat.com Fri Jan 10 12:22:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1BEA07F3F for ; Fri, 10 Jan 2014 12:22:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9FBA4AC003 for ; Fri, 10 Jan 2014 10:22:38 -0800 (PST) X-ASG-Debug-ID: 1389378157-04bdf00fe2605110001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FdLdGfH3kblT49Wb for ; Fri, 10 Jan 2014 10:22:38 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0AIMbdj007231 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 10 Jan 2014 13:22:37 -0500 Received: from [10.10.59.189] (vpn-59-189.rdu2.redhat.com [10.10.59.189]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0AIMbaI030512 for ; Fri, 10 Jan 2014 13:22:37 -0500 Message-ID: <52D03A6C.1090006@redhat.com> Date: Fri, 10 Jan 2014 13:22:36 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: PCP Subject: pcp update: new qa tests for pmfind Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp update: new qa tests for pmfind Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389378158 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On the brolley/dev branch in pcpfans. This commit also contains a fix for a typo in pmfind.c that I for about when I committed it. Dave ------------------------------------------------------------------------------------------ commit 69e2f395fee1d2048d9f39fc4cfd0a1c4a33e176 Author: Dave Brolley Date: Fri Jan 10 13:20:04 2014 -0500 New qa tests for pmfind: 724, 775 and 946. From fche@redhat.com Fri Jan 10 13:05:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 25DC87F3F for ; Fri, 10 Jan 2014 13:05:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 15E0A8F8033 for ; Fri, 10 Jan 2014 11:05:36 -0800 (PST) X-ASG-Debug-ID: 1389380732-04cb6c537bd02680001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8GhGretLFCqxRfM8 for ; Fri, 10 Jan 2014 11:05:32 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0AJ5Qt9024776 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 10 Jan 2014 14:05:27 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0AJ5QfH027756; Fri, 10 Jan 2014 14:05:26 -0500 Received: by fche.csb (Postfix, from userid 2569) id D1CE158185; Fri, 10 Jan 2014 14:05:25 -0500 (EST) Date: Fri, 10 Jan 2014 14:05:25 -0500 From: "Frank Ch. Eigler" To: Max Matveev Cc: pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging Message-ID: <20140110190525.GA28062@redhat.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <21198.38090.179929.552608@iinet.net.au> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389380732 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Max - > fche> 1.1) pmlogger needs to learn to write its output with what IIRC kenj > fche> has referred to as "semantic units", ie., proper use sequencing of > fche> write(2), fdatasync(), to put interdependent data on disk correctly. > > This was the biggest bugbear of NAS Manager (for those who remember) > which tried to provide historical and live data using archives as main > source of information. [...] (A little more of the history would be great.) > What would happen if pcp client is using PM_CONTEXT_HOST with new > protocol? Will it be banned or will it be silently dropped back to > current "live" sematic? Certainly. The new protocol would just carry across the optional pmSetMode bits, which for PM_CONTEXT_HOST would still default to PM_MODE_LIVE. No visible change in behavior. - FChE From brolley@redhat.com Fri Jan 10 14:01:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 38F0D7F3F for ; Fri, 10 Jan 2014 14:01:30 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 299258F8035 for ; Fri, 10 Jan 2014 12:01:27 -0800 (PST) X-ASG-Debug-ID: 1389384086-04cbb04169d09ea0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FxalktgfixQYbmVC for ; Fri, 10 Jan 2014 12:01:26 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0AK1P8f004466 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 10 Jan 2014 15:01:26 -0500 Received: from [10.10.59.189] (vpn-59-189.rdu2.redhat.com [10.10.59.189]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0AK1PaJ011433 for ; Fri, 10 Jan 2014 15:01:25 -0500 Message-ID: <52D05194.5060500@redhat.com> Date: Fri, 10 Jan 2014 15:01:24 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: PCP Subject: pcp updates: more qa for pmfind Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates: more qa for pmfind Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389384086 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 In the usual place ... commit 9be0095ac0e2a5ccd40e7ac2dc289e2eea375263 Author: Dave Brolley Date: Fri Jan 10 14:59:16 2014 -0500 Add test of "-m all" to qa test 775 (pmfind). From poracano-libros@info.com Sat Jan 11 02:18:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=FREEMAIL_REPLYTO, HTML_FONT_FACE_BAD,HTML_FONT_SIZE_LARGE,HTML_MESSAGE,MIME_QP_LONG_LINE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E16297F3F for ; Sat, 11 Jan 2014 02:18:57 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id D3E938F8050 for ; Sat, 11 Jan 2014 00:18:57 -0800 (PST) X-ASG-Debug-ID: 1389428331-04cb6c537cd18e00001-S8gJnT Received: from muniprimavera.cl (mail.muniprimavera.cl [200.72.167.254]) by cuda.sgi.com with ESMTP id 5ckFgl5tCnelJAVx for ; Sat, 11 Jan 2014 00:18:51 -0800 (PST) X-Barracuda-Envelope-From: poracano-libros@info.com X-Barracuda-Apparent-Source-IP: 200.72.167.254 Received: from Hello (156-110-231-201.fibertel.com.ar [201.231.110.156]) by muniprimavera.cl (Postfix) with ESMTP id E8C8C12E82F5 for ; Sat, 11 Jan 2014 05:17:25 -0300 (CLST) Message-ID: <41485-2201416118192772@Hello> Return-Receipt-To: spamassassin2@gmail.com Errors-To: info@nuevaescuela.net Reply-To: "# PACK DE LIBROS #" Disposition-Notification-To: spamassassin2@gmail.com From: "# PACK DE LIBROS #" To: "pcp@oss.sgi.com" Subject: Solicitados PACK DE LIBROS Date: Sat, 11 Jan 2014 05:19:27 -0300 X-ASG-Orig-Subj: Solicitados PACK DE LIBROS MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_84815C5ABAF209EF376268C8" X-Barracuda-Connect: mail.muniprimavera.cl[200.72.167.254] X-Barracuda-Start-Time: 1389428331 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.93 X-Barracuda-Spam-Status: No, SCORE=1.93 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC7_SA578_CH, HTML_FONT_FACE_BAD, HTML_FONT_SIZE_LARGE, HTML_MESSAGE, MIME_QP_LONG_LINE, MIME_QP_LONG_LINE_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.143965 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_FONT_SIZE_LARGE BODY: HTML font size is large 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 HTML_FONT_FACE_BAD BODY: HTML font face is not a word 0.00 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars 0.82 MIME_QP_LONG_LINE_2 RAW: Quoted-printable line longer than 76 chars 0.50 BSF_SC7_SA578_CH Custom Rule SA578_CH ------=_NextPart_84815C5ABAF209EF376268C8 Content-type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable * DVD Biblioteca Espa=F1ol Libros * Mas de 10=2E000 Libros digitales en espa=F1ol!!!! 9=2E300 Libros Digitales en Espa=F1ol!!!! Los 600 Mejores Best-Sellers de la Historia Los Mejores Diccionarios en Espa=F1ol Los Mejores Cursos de Aprendizaje sobre todas las Ciencias Actuales Mas de 300 Libros de Filosofia en Espa=F1ol!!! LIBROS COMPLETOS EN FORMATO PDF SE PUEDE LEER POR COMPUTADORA, NETBOOK, NOTEBOOK, PALM, IPOD, IPHONE, E-BO= OK, ETC=2E=2E PACK COMPLETO $199 CLICK AQUI para ver todos los detalles Pedidos por mail a: packlibros@mixmail=2Ecom __________________________________________________________________________= __________________________________________________________________________= ___________________________________________________________ Gracias y disculpe las molestias que pudi=E9ramos haberle ocasionado en ca= so de que =E9sta informaci=F3n no sea de su inter=E9s o le haya llegado du= plicada=2E Decreto 1158/01- Art 27=2E: =93En toda comunicaci=F3n con fines de publici= dad que se realice por correo, tel=E9fono, correo electr=F3nico, Internet = u otro medio a distancia, se deber=E1 indicar, en forma expresa y destacad= a, la posibilidad del titular del dato de solicitar el retiro o bloqueo, t= otal o parcial, de su nombre de la base de datos=2E A pedido del interesad= o, se deber=E1 informar el nombre del responsable o usuario del banco de d= atos que provey=F3 la informaci=F3n=2E=94=2E La libre distribucion de este= email esta enmarcada por la ley 26=2E032 por tratarse depropositos de inf= ormacion Este correo electr=F3nico no podr=E1 ser considerado como SPAM mi= entras incluya una forma de ser removido seg=FAn la legislaci=F3n sobre co= rreo electr=F3nico=2E (Ley N° 25326)=2E Si no desea recibir nuestras ofertas PULSE AQUI! ------=_NextPart_84815C5ABAF209EF376268C8 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable HTML Message
* DVD Bibli= oteca Espa=F1ol Libros *

Mas de= 10=2E000 Libros digitales en espa=F1ol!!!!

9=2E300<= font face=3D'Arial' size=3D'4'> Libros Digitales en Espa=F1ol!!!!
Lo= s
600<= /font> Mejores Best-Sellers de la Histo= ria
Los Mejores
Diccionarios en Esp= a=F1ol
Los Mejores
Cursos de Aprendizaje sobre todas las Ciencias Actuales
Mas de
300 Libros de Filosofia en Espa=F1ol!!!
LIBROS COMPLETOS EN FORMATO PDF
<= /font>
SE PUEDE LEER POR COMPUTADORA, NETBOOK, NOTEB= OOK, PALM, IPOD, IPHONE, E-BOOK, ETC=2E=2E

PACK C= OMPLETO $199

<= font face=3D'Segoe UI' color=3D'#800080'>
CLICK AQUI para ver todos los detalles

P= edidos por mail a: <= font face=3D'Segoe UI' size=3D'4' color=3D'#008080'>packlibros@mixmail=2E= com

________________________________= __________________________________________________________________________= __________________________________________________________________________= ___________________________<= br>
Gracias y disculpe las molestias que pudi=E9ramos haberle ocasionad= o en caso de que =E9sta informaci=F3n no sea de su inter=E9s o le haya lle= gado duplicada=2E

Decreto 1158/01- Art 27=2E: “En toda comunic= aci=F3n con fines de publicidad que se realice por correo, tel=E9fono, cor= reo electr=F3nico, Internet u otro medio a distancia, se deber=E1 indicar,= en forma expresa y destacada, la posibilidad del titular del dato de soli= citar el retiro o bloqueo, total o parcial, de su nombre de la base de dat= os=2E A pedido del interesado, se deber=E1 informar el nombre del responsa= ble o usuario del banco de datos que provey=F3 la informaci=F3n=2E”=2E= La libre distribucion de este email esta enmarcada por la ley 26=2E032 po= r tratarse depropositos de informacion Este correo electr=F3nico no podr=E1= ser considerado como SPAM mientras incluya una forma de ser removido seg=FA= n la legislaci=F3n sobre correo electr=F3nico=2E (Ley N° 25326)=2E
=
Si no desea recibir nuestras ofertas
PULSE AQUI!=
------=_NextPart_84815C5ABAF209EF376268C8-- From pevans@redhat.com Sun Jan 12 11:10:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E41CA7F3F for ; Sun, 12 Jan 2014 11:10:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A8D618F8064 for ; Sun, 12 Jan 2014 09:09:59 -0800 (PST) X-ASG-Debug-ID: 1389546595-04bdf00fe26619c0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id CdzVRxM7BXDPc5JL for ; Sun, 12 Jan 2014 09:09:55 -0800 (PST) X-Barracuda-Envelope-From: pevans@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0CH9tHI011763 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 12 Jan 2014 12:09:55 -0500 Received: from [10.36.7.22] (vpn1-7-22.ams2.redhat.com [10.36.7.22]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0CH9rC1010789; Sun, 12 Jan 2014 12:09:54 -0500 Message-ID: <52D2CC61.90509@redhat.com> Date: Sun, 12 Jan 2014 17:09:53 +0000 From: Paul Evans User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: pmdagfs2: Add complete set of GFS2 tracepoint metrics Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pmdagfs2: Add complete set of GFS2 tracepoint metrics Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389546595 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Changes committed to git://github.com/pauljevans/pcp.git dev qa/654 | 4 +- qa/654.out | 2 +- qa/655 | 17 +- qa/655.out | 415 ++++++++++++++++++++++++++++++++--- qa/common.gfs2 | 8 +- src/pmdas/gfs2/GNUmakefile | 6 +- src/pmdas/gfs2/README | 4 +- src/pmdas/gfs2/control.c | 76 ++++--- src/pmdas/gfs2/control.h | 23 +- src/pmdas/gfs2/ftrace.c | 507 +++++++++++++++++++++++++++++++++++++++---- src/pmdas/gfs2/ftrace.h | 117 +++++++++- src/pmdas/gfs2/glocks.c | 2 + src/pmdas/gfs2/glstats.c | 2 +- src/pmdas/gfs2/help | 380 +++++++++++++++++++++++++++++++- src/pmdas/gfs2/lock_time.c | 220 ------------------- src/pmdas/gfs2/lock_time.h | 68 ------ src/pmdas/gfs2/pmda.c | 450 +++++++++++++++++++++++++++++++++++--- src/pmdas/gfs2/pmdagfs2.h | 18 +- src/pmdas/gfs2/pmns | 209 ++++++++++++++++-- src/pmdas/gfs2/sbstats.c | 2 + src/pmdas/gfs2/worst_glock.c | 267 +++++++++++++++++++++++ src/pmdas/gfs2/worst_glock.h | 69 ++++++ 22 files changed, 2394 insertions(+), 472 deletions(-) commit d26b227ad2382a75f69d154124611ed23259e9a5 Author: Paul Evans Date: Sun Jan 12 16:50:03 2014 +0000 pmdagfs2: Add complete set of GFS2 tracepoint metrics Added the complete list of GFS2 tracepoints as found at: /sys/kernel/ debug/tracing/events/gfs2/ 82 new metrics have been added along with 14 new control metrics (96 total new metrics). The metrics for the following GFS2 tracepoints have been added: - gfs2_glock_state_change - gfs2_glock_put - gfs2_demote_rq - gfs2_promote - gfs2_glock_queue - gfs2_glock_lock_time - gfs2_pin - gfs2_log_flush - gfs2_log_blocks - gfs2_ail_flush - gfs2_block_alloc - gfs2_bmap - gfs2_rs The glock_lock_time metric has been renamed to worst_glock as this more closely represents the stats that the metric provides (and so there are not two metrics with similar names). The new tracepoint metrics are handled in the ftrace.* files and the newly renamed worst_glock.* separately handles the worst_glock metrics. With these changes there has been slight tweaks to the update the readability of some comments and the removal of some unneeded includes. Help, QA (654, 655 and common.gfs2)and the Readme have all been updated to reflect the changes in number of metrics and the name change for the worst_glock metric. QA tests and Covscan has also been run upon the code changes. Let me know if there are any issues and as always any feeback is welcome :). Cheers, Paul From nscott@redhat.com Sun Jan 12 20:31:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AB7AE29DF8 for ; Sun, 12 Jan 2014 20:31:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5A0E0304053 for ; Sun, 12 Jan 2014 18:31:12 -0800 (PST) X-ASG-Debug-ID: 1389580266-04bdf00fe06767d0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id Dr2mhATNEunLDDBv for ; Sun, 12 Jan 2014 18:31:07 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0D2V6iH015346 for ; Sun, 12 Jan 2014 21:31:06 -0500 Date: Sun, 12 Jan 2014 21:31:06 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <1992119896.394486.1389580266582.JavaMail.root@redhat.com> In-Reply-To: <244646993.394366.1389580223956.JavaMail.root@redhat.com> Subject: pcp updates: fche + pevans merges MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: fche + pevans merges Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: fche + pevans merges Thread-Index: R7nVgCOA6tfZFqKT9e5LGRQaHeVCvg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389580267 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144025 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev CHANGELOG | 2 build/rpm/fedora.spec | 2 debian/changelog | 2 qa/.gitignore | 1 qa/466 | 9 qa/466.out | 57 ---- qa/466.out.1 | 47 +++ qa/466.out.2 | 41 +++ qa/654 | 4 qa/654.out | 2 qa/655 | 17 - qa/655.out | 415 ++++++++++++++++++++++++++++++++--- qa/common.gfs2 | 8 qa/group | 1 src/pmdas/gfs2/GNUmakefile | 6 src/pmdas/gfs2/README | 4 src/pmdas/gfs2/control.c | 76 ++++-- src/pmdas/gfs2/control.h | 23 + src/pmdas/gfs2/ftrace.c | 507 +++++++++++++++++++++++++++++++++++++++---- src/pmdas/gfs2/ftrace.h | 117 +++++++++ src/pmdas/gfs2/glocks.c | 2 src/pmdas/gfs2/glstats.c | 2 src/pmdas/gfs2/help | 380 +++++++++++++++++++++++++++++++- src/pmdas/gfs2/lock_time.c | 220 ------------------ src/pmdas/gfs2/lock_time.h | 68 ----- src/pmdas/gfs2/pmda.c | 450 +++++++++++++++++++++++++++++++++++--- src/pmdas/gfs2/pmdagfs2.h | 18 - src/pmdas/gfs2/pmns | 209 ++++++++++++++++- src/pmdas/gfs2/sbstats.c | 2 src/pmdas/gfs2/worst_glock.c | 267 ++++++++++++++++++++++ src/pmdas/gfs2/worst_glock.h | 69 +++++ src/pmlogger/src/callback.c | 40 +-- src/pmmgr/TODO | 3 33 files changed, 2525 insertions(+), 546 deletions(-) commit fa62568fee5d921e1b26b3836985091322d21002 Author: Nathan Scott Date: Mon Jan 13 13:29:23 2014 +1100 Add generated 466 out file link to gitignore commit 664791e08c2a4ed3d831528266957980a5343891 Merge: 177a4ab 1221003 Author: Nathan Scott Date: Mon Jan 13 13:27:28 2014 +1100 Merge branch 'fche/dev' of ../pcpfans into dev commit 12210033c870e9875959e163c37907cb06eb6f30 Author: Frank Ch. Eigler Date: Sun Jan 12 19:46:48 2014 -0500 pmlogger qa 466: support .out for previous versions commit 177a4ab138ccf5ebadcd2e80c5c228a922c0fa3c Author: Nathan Scott Date: Mon Jan 13 11:07:03 2014 +1100 Reset clock for expected 3.8.10 release date; tick, tick... commit 87fb3a93c9b677761608cd0096ed8945143da552 Author: Frank Ch. Eigler Date: Sun Jan 12 17:55:47 2014 -0500 pmlogger: for -r logging data-intensity report, enumerate all metrics Drop the "..." abbreviation for >2-metric groups and list all, to help show duplication. commit 3f2c27237f390640460a442b7e15cca46a2ad4f3 Author: Frank Ch. Eigler Date: Sun Jan 12 17:03:24 2014 -0500 pmmgr TODO: add a few commit d26b227ad2382a75f69d154124611ed23259e9a5 Author: Paul Evans Date: Sun Jan 12 16:50:03 2014 +0000 pmdagfs2: Add complete set of GFS2 tracepoint metrics Added the complete list of GFS2 tracepoints as found at: /sys/kernel/ debug/tracing/events/gfs2/ 82 new metrics have been added along with 14 new control metrics (96 total new metrics). The metrics for the following GFS2 tracepoints have been added: - gfs2_glock_state_change - gfs2_glock_put - gfs2_demote_rq - gfs2_promote - gfs2_glock_queue - gfs2_glock_lock_time - gfs2_pin - gfs2_log_flush - gfs2_log_blocks - gfs2_ail_flush - gfs2_block_alloc - gfs2_bmap - gfs2_rs The glock_lock_time metric has been renamed to worst_glock as this more closely represents the stats that the metric provides (and so there are not two metrics with similar names). The new tracepoint metrics are handled in the ftrace.* files and the newly renamed worst_glock.* separately handles the worst_glock metrics. With these changes there has been slight tweaks to the update the readability of some comments and the removal of some unneeded includes. Help, QA (654, 655 and common.gfs2)and the Readme have all been updated to reflect the changes in number of metrics and the name change for the worst_glock metric. QA tests and Covscan has also been run upon the code changes. commit cf9cd2e9eccef782848bb8457f514ac00e71e774 Author: Frank Ch. Eigler Date: Fri Jan 10 13:12:58 2014 -0500 pcpqa: clarify that sanity group tests may _notrun From makc@iinet.net.au Sun Jan 12 22:53:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9E46729DF8 for ; Sun, 12 Jan 2014 22:53:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2F17EAC001 for ; Sun, 12 Jan 2014 20:53:46 -0800 (PST) X-ASG-Debug-ID: 1389588820-04cbb04169d77010001-S8gJnT Received: from icp-osb-irony-out6.external.iinet.net.au (icp-osb-irony-out6.external.iinet.net.au [203.59.1.222]) by cuda.sgi.com with ESMTP id O69tz7HIGZ6R8D5n for ; Sun, 12 Jan 2014 20:53:41 -0800 (PST) X-Barracuda-Envelope-From: makc@iinet.net.au X-Barracuda-Apparent-Source-IP: 203.59.1.222 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AicFALtw01LL2Rwk/2dsb2JhbABagwuDOrQ0hBAWdIImAQEEOj8QCw0nEiwrBogCARPENReTRQEDmBeGbIspg0Eo X-IronPort-AV: E=Sophos;i="4.95,650,1384272000"; d="scan'208";a="172756913" Received: from unknown (HELO emma.crabbed.net) ([203.217.28.36]) by icp-osb-irony-out6.iinet.net.au with ESMTP; 13 Jan 2014 12:53:39 +0800 Received: by emma.crabbed.net (Postfix, from userid 16314) id 1F4A0335023; Mon, 13 Jan 2014 15:53:39 +1100 (EST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <21203.29011.86164.604393@iinet.net.au> Date: Mon, 13 Jan 2014 15:53:39 +1100 From: Max Matveev To: "Frank Ch. Eigler" Cc: pcp developers Cc: gnb@sgi.com Subject: Re: [pcp] braindump on unified-context / live-logging In-Reply-To: <20140110190525.GA28062@redhat.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> X-Mailer: VM 7.17 under 21.4 (patch 19) "Constant Variable" XEmacs Lucid X-Barracuda-Connect: icp-osb-irony-out6.external.iinet.net.au[203.59.1.222] X-Barracuda-Start-Time: 1389588821 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144028 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Fri, 10 Jan 2014 14:05:25 -0500, Frank Ch Eigler wrote: fche> 1.1) pmlogger needs to learn to write its output with what IIRC kenj fche> has referred to as "semantic units", ie., proper use sequencing of fche> write(2), fdatasync(), to put interdependent data on disk correctly. >> >> This was the biggest bugbear of NAS Manager (for those who remember) >> which tried to provide historical and live data using archives as main >> source of information. [...] fche> (A little more of the history would be great.) NAS Manager had to provide "historical" data for IO performance aggregated over time invervals, e.g. number of IO requests for each hour during last 24 hours. And it had to be "true averages", not decaying averages. And it had to be displayed on a web page which meant single-shot requests (AJAX wasn't an option for various non-technical reasons). We wrote a daemon which was generating graphs (static images) based on the information which has been scrapped from the PCP archives. It was working OK for historical data but doing the equivalent of "tail -f" with libpcp and growing archives didn't work. After few attempts the idea has been canned and we switched to a PMDA which provided historical data based on the time intervals encoded in instance names. The PMDA would pre-load the data from historical archives" and then switch to polling pmcd for the data it needed (it was known as HUTA mode - Head Up The ...). The whole thing may even exists assuming NAS Manager exists (hi, gnb). max From wwwrun@oss.sgi.com Mon Jan 13 14:50:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id B854529E04; Mon, 13 Jan 2014 14:50:40 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1041] pmlogger lacks duplicate-elimination on metric-groups in config file Date: Mon, 13 Jan 2014 20:50:40 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@kenj.com.au X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1389646240.AdC7C1.10553"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1389646240.AdC7C1.10553 Date: Mon, 13 Jan 2014 14:50:40 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1041 --- Comment #1 from Frank Ch. Eigler --- See pcpfans.git fche/dev for a possible fix: https://www.sourceware.org/git/gitweb.cgi?p=pcpfans.git;a=commitdiff;h=e2301eb9c6b3e89fabd8697cff81bafd76b27fe5 -- You are receiving this mail because: You are on the CC list for the bug. --1389646240.AdC7C1.10553 Date: Mon, 13 Jan 2014 14:50:40 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"


You are receiving this mail because:
  • You are on the CC list for the bug.
--1389646240.AdC7C1.10553-- From gbanks@sgi.com Mon Jan 13 16:19:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7DB0229DF8 for ; Mon, 13 Jan 2014 16:19:32 -0600 (CST) Received: from xmail.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.106.7]) by relay3.corp.sgi.com (Postfix) with ESMTP id CD38CAC004; Mon, 13 Jan 2014 14:19:28 -0800 (PST) Received: from [134.15.0.181] (134.15.0.181) by xmail.sgi.com (137.38.106.6) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 13 Jan 2014 16:19:28 -0600 Message-ID: <52D4666E.7030601@sgi.com> Date: Mon, 13 Jan 2014 14:19:26 -0800 From: Greg Banks User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 MIME-Version: 1.0 To: Max Matveev CC: "Frank Ch. Eigler" , pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> In-Reply-To: <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [134.15.0.181] On 13/01/14 13:19, Max Matveev wrote: > On Fri, 10 Jan 2014 14:05:25 -0500, Frank Ch Eigler wrote: > > fche> 1.1) pmlogger needs to learn to write its output with what IIRC kenj > fche> has referred to as "semantic units", ie., proper use sequencing of > fche> write(2), fdatasync(), to put interdependent data on disk correctly. > >> > >> This was the biggest bugbear of NAS Manager (for those who remember) > >> which tried to provide historical and live data using archives as main > >> source of information. [...] > > fche> (A little more of the history would be great.) > > NAS Manager had to provide "historical" data for IO performance > aggregated over time invervals, e.g. number of IO requests for each > hour during last 24 hours. And it had to be "true averages", not > decaying averages. And it had to be displayed on a web page which > meant single-shot requests (AJAX wasn't an option for various > non-technical reasons). You're conflating two different data paths, see below. > > We wrote a daemon which was generating graphs (static images) > based on the information which has been scrapped from the PCP > archives. It was working OK for historical data but doing the > equivalent of "tail -f" with libpcp and growing archives didn't work. > After few attempts the idea has been canned and we switched to a PMDA > which provided historical data based on the time intervals encoded > in instance names. The PMDA would pre-load the data from historical > archives" and then switch to polling pmcd for the data it needed (it > was known as HUTA mode - Head Up The ...). > > The whole thing may even exists assuming NAS Manager exists (hi, gnb). Yes, this thing still exists and is shipping today (although NAS Manager itself is in the dustbin of history). While I designed and wrote the thing, I was never happy with any of the iterations of the architecture and I wouldn't recommend to anyone that they copy it. Some of the problems were: * it was both a client of pmcd and a PMDA, which led to interesting deadlocks with the single-threaded pmcd * configuration (time periods, and which metrics were available in each) was entirely static, in a config file, which was ok for specific use case but not very general * it was never good at handling instance domains which changed frequently * because of the silly requirement to have rolling averages rather than decaying ones, memory usage was often extreme * the only way to query this thing was via a normal pmFetch() which meant we had to encode all the parameters into the namespace and instances, which exploded the visible namespace * another effect was that the namespace was more dynamic than pmcd expected, which resulted in the code having to do a bulk replace of a PMNS subtree, including sending a signal to pmcd If I were designing something like this again, I would look seriously at adding a "time machine" feature to pmcd, with a configurable timed fetch loop and new PDUs and new APIs to explore the time dimension for the existing namespace. However, this thing only ever calculated averages over one of a small number of predefined periods where each period ends at "now". It was used to provide textual numbers and indicators on graphs. The "number of IO operations for each hour over the last 24 hours" Max refers to was actually calculated separately by trawling the archives directly, even if that information was already in memory. -- Greg. From makc@iinet.net.au Mon Jan 13 18:07:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 58FC27F3F for ; Mon, 13 Jan 2014 18:07:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 37A708F8054 for ; Mon, 13 Jan 2014 16:07:07 -0800 (PST) X-ASG-Debug-ID: 1389658021-04cbb04167d9a5e0001-S8gJnT Received: from icp-osb-irony-out2.external.iinet.net.au (icp-osb-irony-out2.external.iinet.net.au [203.59.1.218]) by cuda.sgi.com with ESMTP id 46mfrz6KNn6Y0OPN for ; Mon, 13 Jan 2014 16:07:02 -0800 (PST) X-Barracuda-Envelope-From: makc@iinet.net.au X-Barracuda-Apparent-Source-IP: 203.59.1.218 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AicFAMF+1FLL2Rwk/2dsb2JhbABagwuDOrRDhB0WdIImAQEEOj8QCw0BBCISLB0OBogCARPFMReTRQEDmBeGbIspg0Eo X-IronPort-AV: E=Sophos;i="4.95,656,1384272000"; d="scan'208";a="173487059" Received: from unknown (HELO emma.crabbed.net) ([203.217.28.36]) by icp-osb-irony-out2.iinet.net.au with ESMTP; 14 Jan 2014 08:07:01 +0800 Received: by emma.crabbed.net (Postfix, from userid 16314) id 3174C336912; Tue, 14 Jan 2014 11:07:00 +1100 (EST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <21204.32676.163457.438142@iinet.net.au> Date: Tue, 14 Jan 2014 11:07:00 +1100 From: Max Matveev To: Greg Banks Cc: "Frank Ch. Eigler" , pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging In-Reply-To: <52D4666E.7030601@sgi.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> <52D4666E.7030601@sgi.com> X-Mailer: VM 7.17 under 21.4 (patch 19) "Constant Variable" XEmacs Lucid X-Barracuda-Connect: icp-osb-irony-out2.external.iinet.net.au[203.59.1.218] X-Barracuda-Start-Time: 1389658022 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144058 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 13 Jan 2014 14:19:26 -0800, Greg Banks wrote: gnb> While I designed and wrote the thing, I was never happy with any gnb> of the iterations of the architecture and I wouldn't recommend gnb> to anyone that they copy it. Some of the problems were: gnb> * it was both a client of pmcd and a PMDA, which led to interesting gnb> deadlocks with the single-threaded pmcd That was the "second" pass with nasavg pmda. I thought there was a first version which only used archives but it had to be abandoned because tailing of archive being written wasn't working reliably. max From gbanks@sgi.com Mon Jan 13 19:30:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E68EC7F3F for ; Mon, 13 Jan 2014 19:30:07 -0600 (CST) Received: from xmail.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.106.7]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7FE4F304051; Mon, 13 Jan 2014 17:30:04 -0800 (PST) Received: from [134.15.0.181] (134.15.0.181) by xmail.sgi.com (137.38.106.6) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 13 Jan 2014 19:29:39 -0600 Message-ID: <52D49301.2000403@sgi.com> Date: Mon, 13 Jan 2014 17:29:37 -0800 From: Greg Banks User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 MIME-Version: 1.0 To: Max Matveev CC: "Frank Ch. Eigler" , pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> <52D4666E.7030601@sgi.com> <21204.32676.163457.438142@iinet.net.au> In-Reply-To: <21204.32676.163457.438142@iinet.net.au> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [134.15.0.181] On 13/01/14 16:07, Max Matveev wrote: > On Mon, 13 Jan 2014 14:19:26 -0800, Greg Banks wrote: > > gnb> While I designed and wrote the thing, I was never happy with any > gnb> of the iterations of the architecture and I wouldn't recommend > gnb> to anyone that they copy it. Some of the problems were: > > gnb> * it was both a client of pmcd and a PMDA, which led to interesting > gnb> deadlocks with the single-threaded pmcd > > That was the "second" pass with nasavg pmda. I thought there was a > first version which only used archives but it had to be abandoned > because tailing of archive being written wasn't working reliably. > Yes, the first design iteration tailed archives and was horribly unreliable. Pmarchive was writing to the various files of an archive in such a way that there was a race window where the archive reading code in libpcp would see an inconsistent archive and barf. Plus, there was an inconvenient amount of lag, up to 30 seconds, in pmarchive and in the tailer. -- Greg. From nscott@redhat.com Mon Jan 13 20:45:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5DDDD7F3F for ; Mon, 13 Jan 2014 20:45:14 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 085CE8F8052 for ; Mon, 13 Jan 2014 18:45:10 -0800 (PST) X-ASG-Debug-ID: 1389667506-04bdf00fe06a22e0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id uH92uUddoSSzJbDI for ; Mon, 13 Jan 2014 18:45:06 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0E2j624003322; Mon, 13 Jan 2014 21:45:06 -0500 Date: Mon, 13 Jan 2014 21:45:05 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Paul Evans Cc: pcp developers Message-ID: <181087668.1273305.1389667505957.JavaMail.root@redhat.com> In-Reply-To: <1992119896.394486.1389580266582.JavaMail.root@redhat.com> References: <1992119896.394486.1389580266582.JavaMail.root@redhat.com> Subject: Re: pcp updates: fche + pevans merges MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pcp updates: fche + pevans merges Content-Type: multipart/mixed; boundary="----=_Part_1273303_1420330025.1389667505955" X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: fche + pevans merges Thread-Index: R7nVgCOA6tfZFqKT9e5LGRQaHeVCvoGF/B5B X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389667506 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144062 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ------=_Part_1273303_1420330025.1389667505955 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Paul, ----- Original Message ----- > Changes committed to git://oss.sgi.com/pcp/pcp.git dev > I'm seeing a test failure for qa/655 on RHEL6 (2.6.32-279.39.1) which will have a much older GFS2 kernel module than yours, I'm punting? (this was previously passing pre-latest-merge though) The output produced here is attached - could you take a look? Many thanks! -- Nathan ------=_Part_1273303_1420330025.1389667505955 Content-Type: application/octet-stream; name=655.out.bad Content-Disposition: attachment; filename=655.out.bad Content-Transfer-Encoding: base64 UUEgb3V0cHV0IGNyZWF0ZWQgYnkgNjU1CmVuYWJsaW5nIGdmczIgdHJhY2Vwb2ludHMKWW91IHdp bGwgbmVlZCB0byBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBmb3IgaW5zdGFs bGF0aW9uIG9mCnRoZSAiZ2ZzMiIgUGVyZm9ybWFuY2UgTWV0cmljcyBEb21haW4gQWdlbnQgKFBN REEpLgoKICBjb2xsZWN0b3IJY29sbGVjdCBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIG9uIHRoaXMg c3lzdGVtCiAgbW9uaXRvcglhbGxvdyB0aGlzIHN5c3RlbSB0byBtb25pdG9yIGxvY2FsIGFuZC9v ciByZW1vdGUgc3lzdGVtcwogIGJvdGgJCWNvbGxlY3RvciBhbmQgbW9uaXRvciBjb25maWd1cmF0 aW9uIGZvciB0aGlzIHN5c3RlbQoKUGxlYXNlIGVudGVyIGMob2xsZWN0b3IpIG9yIG0ob25pdG9y KSBvciBiKG90aCkgW2JdIFVwZGF0aW5nIHRoZSBQZXJmb3JtYW5jZSBNZXRyaWNzIE5hbWUgU3Bh Y2UgKFBNTlMpIC4uLgpUZXJtaW5hdGUgUE1EQSBpZiBhbHJlYWR5IGluc3RhbGxlZCAuLi4KWy4u Lmluc3RhbGwgZmlsZXMsIG1ha2Ugb3V0cHV0Li4uXQpVcGRhdGluZyB0aGUgUE1DRCBjb250cm9s IGZpbGUsIGFuZCBub3RpZnlpbmcgUE1DRCAuLi4KQ2hlY2sgZ2ZzMiBtZXRyaWNzIGhhdmUgYXBw ZWFyZWQgLi4uIDIwMyBtZXRyaWNzIGFuZCBOIHZhbHVlcwplbmFibGluZyBnZnMyIHRyYWNlcG9p bnRzCgo9PT0gVHVybmluZyBvZmYgd29yc3RfZ2xvY2sgbWV0cmljcyA9PT0KcG1zdG9yZSBnZnMy LmNvbnRyb2wud29yc3RfZ2xvY2sgMAoKPT09IENoZWNrIGZvciBzdWNjZXNzZnVsIGluc3RhbGwg b2YgcG1kYSA9PT0KCj09PSBDaGVjayBnZnMyLnRyYWNlcG9pbnRzIG1ldHJpY3MgZm9yIGFsbCBm aWxlc3lzdGVtcyA9PT0KCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfc3RhdGVfY2hhbmdlLnRvdGFs IFBNSUQ6IDExNS4zLjAKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206 IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5v IHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfc3RhdGVfY2hhbmdl Lm51bGxfbG9jayBQTUlEOiAxMTUuMy4xCiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBp bnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRz OiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3N0 YXRlX2NoYW5nZS5jb25jdXJyZW50X3JlYWQgUE1JRDogMTE1LjMuMgogICAgRGF0YSBUeXBlOiA2 NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNz OiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFj ZXBvaW50cy5nbG9ja19zdGF0ZV9jaGFuZ2UuY29uY3VycmVudF93cml0ZSBQTUlEOiAxMTUuMy4z CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAw MDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFp bGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3N0YXRlX2NoYW5nZS5wcm90ZWN0ZWRfcmVh ZCBQTUlEOiAxMTUuMy40CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9t OiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApO byB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3N0YXRlX2NoYW5n ZS5wcm90ZWN0ZWRfd3JpdGUgUE1JRDogMTE1LjMuNQogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5z aWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50 ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5n bG9ja19zdGF0ZV9jaGFuZ2UuZXhjbHVzaXZlIFBNSUQ6IDExNS4zLjYKICAgIERhdGEgVHlwZTog NjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGlj czogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJh Y2Vwb2ludHMuZ2xvY2tfc3RhdGVfY2hhbmdlLmdsb2Nrcy5jaGFuZ2VkX3RhcmdldCBQTUlEOiAx MTUuMy43CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAw eDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShz KSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3N0YXRlX2NoYW5nZS5nbG9ja3Mu bWlzc2VkX3RhcmdldCBQTUlEOiAxMTUuMy44CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25l ZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVu aXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2Nr X3B1dC50b3RhbCBQTUlEOiAxMTUuMy45CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBp bnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRz OiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3B1 dC5udWxsX2xvY2sgUE1JRDogMTE1LjMuMTAKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVk IGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5p dHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tf cHV0LmNvbmN1cnJlbnRfcmVhZCBQTUlEOiAxMTUuMy4xMQogICAgRGF0YSBUeXBlOiA2NC1iaXQg dW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0 YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50 cy5nbG9ja19wdXQuY29uY3VycmVudF93cml0ZSBQTUlEOiAxMTUuMy4xMgogICAgRGF0YSBUeXBl OiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50 aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50 cmFjZXBvaW50cy5nbG9ja19wdXQucHJvdGVjdGVkX3JlYWQgUE1JRDogMTE1LjMuMTMKICAgIERh dGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAg IFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEK CmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfcHV0LnByb3RlY3RlZF93cml0ZSBQTUlEOiAxMTUuMy4x NAogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2Mw MDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZh aWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19wdXQuZXhjbHVzaXZlIFBNSUQ6IDExNS4z LjE1CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFj YzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBh dmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmRlbW90ZV9ycS50b3RhbCBQTUlEOiAxMTUuMy4x NgogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2Mw MDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZh aWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5kZW1vdGVfcnEubnVsbF9sb2NrIFBNSUQ6IDExNS4z LjE3CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFj YzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBh dmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmRlbW90ZV9ycS5jb25jdXJyZW50X3JlYWQgUE1J RDogMTE1LjMuMTgKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDEx NS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZh bHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZGVtb3RlX3JxLmNvbmN1cnJlbnRf d3JpdGUgUE1JRDogMTE1LjMuMTkKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAg SW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNv dW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZGVtb3RlX3JxLnBy b3RlY3RlZF9yZWFkIFBNSUQ6IDExNS4zLjIwCiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25l ZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVu aXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmRlbW90 ZV9ycS5wcm90ZWN0ZWRfd3JpdGUgUE1JRDogMTE1LjMuMjEKICAgIERhdGEgVHlwZTogNjQtYml0 IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5z dGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2lu dHMuZGVtb3RlX3JxLmV4Y2x1c2l2ZSBQTUlEOiAxMTUuMy4yMgogICAgRGF0YSBUeXBlOiA2NC1i aXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBp bnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBv aW50cy5kZW1vdGVfcnEucmVxdWVzdGVkLnJlbW90ZSBQTUlEOiAxMTUuMy4yMwogICAgRGF0YSBU eXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2Vt YW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2Zz Mi50cmFjZXBvaW50cy5kZW1vdGVfcnEucmVxdWVzdGVkLmxvY2FsIFBNSUQ6IDExNS4zLjI0CiAg ICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAw CiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFi bGUhCgpnZnMyLnRyYWNlcG9pbnRzLnByb21vdGUudG90YWwgUE1JRDogMTE1LjMuMjUKICAgIERh dGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAg IFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEK CmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5maXJzdC5udWxsX2xvY2sgUE1JRDogMTE1LjMuMjYK ICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAw MDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWls YWJsZSEKCmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5maXJzdC5jb25jdXJyZW50X3JlYWQgUE1J RDogMTE1LjMuMjcKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDEx NS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZh bHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5maXJzdC5jb25jdXJy ZW50X3dyaXRlIFBNSUQ6IDExNS4zLjI4CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBp bnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRz OiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLnByb21vdGUu Zmlyc3QucHJvdGVjdGVkX3JlYWQgUE1JRDogMTE1LjMuMjkKICAgIERhdGEgVHlwZTogNjQtYml0 IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5z dGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2lu dHMucHJvbW90ZS5maXJzdC5wcm90ZWN0ZWRfd3JpdGUgUE1JRDogMTE1LjMuMzAKICAgIERhdGEg VHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNl bWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdm czIudHJhY2Vwb2ludHMucHJvbW90ZS5maXJzdC5leGNsdXNpdmUgUE1JRDogMTE1LjMuMzEKICAg IERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAK ICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJs ZSEKCmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5vdGhlci5udWxsX2xvY2sgUE1JRDogMTE1LjMu MzIKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNj MDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2 YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5vdGhlci5jb25jdXJyZW50X3JlYWQg UE1JRDogMTE1LjMuMzMKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206 IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5v IHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5vdGhlci5jb25j dXJyZW50X3dyaXRlIFBNSUQ6IDExNS4zLjM0CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25l ZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVu aXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLnByb21v dGUub3RoZXIucHJvdGVjdGVkX3JlYWQgUE1JRDogMTE1LjMuMzUKICAgIERhdGEgVHlwZTogNjQt Yml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczog aW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vw b2ludHMucHJvbW90ZS5vdGhlci5wcm90ZWN0ZWRfd3JpdGUgUE1JRDogMTE1LjMuMzYKICAgIERh dGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAg IFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEK CmdmczIudHJhY2Vwb2ludHMucHJvbW90ZS5vdGhlci5leGNsdXNpdmUgUE1JRDogMTE1LjMuMzcK ICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAw MDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWls YWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfcXVldWUudG90YWwgUE1JRDogMTE1LjMuMzgK ICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAw MDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWls YWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfcXVldWUucXVldWUudG90YWwgUE1JRDogMTE1 LjMuMzkKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4 MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMp IGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tfcXVldWUucXVldWUubnVsbF9sb2Nr IFBNSUQ6IDExNS4zLjQwCiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9t OiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApO byB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3F1ZXVlLnF1ZXVl LmNvbmN1cnJlbnRfcmVhZCBQTUlEOiAxMTUuMy40MQogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5z aWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50 ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5n bG9ja19xdWV1ZS5xdWV1ZS5jb25jdXJyZW50X3dyaXRlIFBNSUQ6IDExNS4zLjQyCiAgICBEYXRh IFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBT ZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpn ZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3F1ZXVlLnF1ZXVlLnByb3RlY3RlZF9yZWFkIFBNSUQ6IDEx NS4zLjQzCiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAw eDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShz KSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmdsb2NrX3F1ZXVlLnF1ZXVlLnByb3RlY3Rl ZF93cml0ZSBQTUlEOiAxMTUuMy40NAogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50 ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czog Y291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19xdWV1 ZS5xdWV1ZS5leGNsdXNpdmUgUE1JRDogMTE1LjMuNDUKICAgIERhdGEgVHlwZTogNjQtYml0IHVu c2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFu dCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMu Z2xvY2tfcXVldWUuZGVxdWV1ZS50b3RhbCBQTUlEOiAxMTUuMy40NgogICAgRGF0YSBUeXBlOiA2 NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNz OiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFj ZXBvaW50cy5nbG9ja19xdWV1ZS5kZXF1ZXVlLm51bGxfbG9jayBQTUlEOiAxMTUuMy40NwogICAg RGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAog ICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxl IQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19xdWV1ZS5kZXF1ZXVlLmNvbmN1cnJlbnRfcmVhZCBQ TUlEOiAxMTUuMy40OAogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTog MTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8g dmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19xdWV1ZS5kZXF1ZXVl LmNvbmN1cnJlbnRfd3JpdGUgUE1JRDogMTE1LjMuNDkKICAgIERhdGEgVHlwZTogNjQtYml0IHVu c2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFu dCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMu Z2xvY2tfcXVldWUuZGVxdWV1ZS5wcm90ZWN0ZWRfcmVhZCBQTUlEOiAxMTUuMy41MAogICAgRGF0 YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAg U2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoK Z2ZzMi50cmFjZXBvaW50cy5nbG9ja19xdWV1ZS5kZXF1ZXVlLnByb3RlY3RlZF93cml0ZSBQTUlE OiAxMTUuMy41MQogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1 LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFs dWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19xdWV1ZS5kZXF1ZXVlLmV4 Y2x1c2l2ZSBQTUlEOiAxMTUuMy41MgogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50 ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czog Y291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19sb2Nr X3RpbWUudG90YWwgUE1JRDogMTE1LjMuNTMKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2lnbmVk IGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAgVW5p dHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vwb2ludHMuZ2xvY2tf bG9ja190aW1lLnRyYW5zIFBNSUQ6IDExNS4zLjU0CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNp Z25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQg IFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLmds b2NrX2xvY2tfdGltZS5pbm9kZSBQTUlEOiAxMTUuMy41NQogICAgRGF0YSBUeXBlOiA2NC1iaXQg dW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0 YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50 cy5nbG9ja19sb2NrX3RpbWUucmdycCBQTUlEOiAxMTUuMy41NgogICAgRGF0YSBUeXBlOiA2NC1i aXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBp bnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBv aW50cy5nbG9ja19sb2NrX3RpbWUubWV0YSBQTUlEOiAxMTUuMy41NwogICAgRGF0YSBUeXBlOiA2 NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNz OiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFj ZXBvaW50cy5nbG9ja19sb2NrX3RpbWUuaW9wZW4gUE1JRDogMTE1LjMuNTgKICAgIERhdGEgVHlw ZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFu dGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIu dHJhY2Vwb2ludHMuZ2xvY2tfbG9ja190aW1lLmZsb2NrIFBNSUQ6IDExNS4zLjU5CiAgICBEYXRh IFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBT ZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpn ZnMyLnRyYWNlcG9pbnRzLmdsb2NrX2xvY2tfdGltZS5xdW90YSBQTUlEOiAxMTUuMy42MAogICAg RGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAog ICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxl IQoKZ2ZzMi50cmFjZXBvaW50cy5nbG9ja19sb2NrX3RpbWUuam91cm5hbCBQTUlEOiAxMTUuMy42 MQogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2Mw MDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZh aWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5waW4udG90YWwgUE1JRDogMTE1LjMuNjIKICAgIERh dGEgVHlwZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAg IFNlbWFudGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEK CmdmczIudHJhY2Vwb2ludHMucGluLnBpbl90b3RhbCBQTUlEOiAxMTUuMy42MwogICAgRGF0YSBU eXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2Vt YW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2Zz Mi50cmFjZXBvaW50cy5waW4udW5waW5fdG90YWwgUE1JRDogMTE1LjMuNjQKICAgIERhdGEgVHlw ZTogNjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFu dGljczogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIu dHJhY2Vwb2ludHMucGluLmxvbmdlc3RfcGlubmVkIFBNSUQ6IDExNS4zLjY1CiAgICBEYXRhIFR5 cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1h bnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMy LnRyYWNlcG9pbnRzLmxvZ19mbHVzaC50b3RhbCBQTUlEOiAxMTUuMy42NgogICAgRGF0YSBUeXBl OiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50 aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50 cmFjZXBvaW50cy5sb2dfYmxvY2sudG90YWwgUE1JRDogMTE1LjMuNjcKICAgIERhdGEgVHlwZTog NjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGlj czogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJh Y2Vwb2ludHMuYWlsX2ZsdXNoLnRvdGFsIFBNSUQ6IDExNS4zLjY4CiAgICBEYXRhIFR5cGU6IDY0 LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6 IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNl cG9pbnRzLmJsb2NrX2FsbG9jLnRvdGFsIFBNSUQ6IDExNS4zLjY5CiAgICBEYXRhIFR5cGU6IDY0 LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6 IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNl cG9pbnRzLmJsb2NrX2FsbG9jLmZyZWUgUE1JRDogMTE1LjMuNzAKICAgIERhdGEgVHlwZTogNjQt Yml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczog aW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vw b2ludHMuYmxvY2tfYWxsb2MudXNlZCBQTUlEOiAxMTUuMy43MQogICAgRGF0YSBUeXBlOiA2NC1i aXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBp bnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBv aW50cy5ibG9ja19hbGxvYy5kaW5vZGUgUE1JRDogMTE1LjMuNzIKICAgIERhdGEgVHlwZTogNjQt Yml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczog aW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJhY2Vw b2ludHMuYmxvY2tfYWxsb2MudW5saW5rZWQgUE1JRDogMTE1LjMuNzMKICAgIERhdGEgVHlwZTog NjQtYml0IHVuc2lnbmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGlj czogaW5zdGFudCAgVW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCmdmczIudHJh Y2Vwb2ludHMuYm1hcC50b3RhbCBQTUlEOiAxMTUuMy43NAogICAgRGF0YSBUeXBlOiA2NC1iaXQg dW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0 YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50 cy5ibWFwLmNyZWF0ZSBQTUlEOiAxMTUuMy43NQogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWdu ZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBV bml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5ibWFw Lm5vY3JlYXRlIFBNSUQ6IDExNS4zLjc2CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBp bnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRz OiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLnJzLnRvdGFs IFBNSUQ6IDExNS4zLjc3CiAgICBEYXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9t OiAxMTUuMCAweDFjYzAwMDAwCiAgICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApO byB2YWx1ZShzKSBhdmFpbGFibGUhCgpnZnMyLnRyYWNlcG9pbnRzLnJzLmRlbCBQTUlEOiAxMTUu My43OAogICAgRGF0YSBUeXBlOiA2NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgx Y2MwMDAwMAogICAgU2VtYW50aWNzOiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykg YXZhaWxhYmxlIQoKZ2ZzMi50cmFjZXBvaW50cy5ycy50ZGVsIFBNSUQ6IDExNS4zLjc5CiAgICBE YXRhIFR5cGU6IDY0LWJpdCB1bnNpZ25lZCBpbnQgIEluRG9tOiAxMTUuMCAweDFjYzAwMDAwCiAg ICBTZW1hbnRpY3M6IGluc3RhbnQgIFVuaXRzOiBjb3VudApObyB2YWx1ZShzKSBhdmFpbGFibGUh CgpnZnMyLnRyYWNlcG9pbnRzLnJzLmlucyBQTUlEOiAxMTUuMy44MAogICAgRGF0YSBUeXBlOiA2 NC1iaXQgdW5zaWduZWQgaW50ICBJbkRvbTogMTE1LjAgMHgxY2MwMDAwMAogICAgU2VtYW50aWNz OiBpbnN0YW50ICBVbml0czogY291bnQKTm8gdmFsdWUocykgYXZhaWxhYmxlIQoKZ2ZzMi50cmFj ZXBvaW50cy5ycy5jbG0gUE1JRDogMTE1LjMuODEKICAgIERhdGEgVHlwZTogNjQtYml0IHVuc2ln bmVkIGludCAgSW5Eb206IDExNS4wIDB4MWNjMDAwMDAKICAgIFNlbWFudGljczogaW5zdGFudCAg VW5pdHM6IGNvdW50Ck5vIHZhbHVlKHMpIGF2YWlsYWJsZSEKCj09PSBjaGVjayBmdW5jdGlvbmFs aXR5IG9mIHBtc3RvcmUgKG9mZikgPT09CmdmczIuY29udHJvbC50cmFjZXBvaW50cy5hbGwgT0xE IFZBTFVFIG5ldyB2YWx1ZT0wCgo9PT0gY2hlY2sgZnVuY3Rpb25hbGl0eSBvZiBwbXN0b3JlIChv bikgPT09IApnZnMyLmNvbnRyb2wudHJhY2Vwb2ludHMuYWxsIE9MRCBWQUxVRSBuZXcgdmFsdWU9 MQoKPT09IFJlbW92aW5nIHRoZSBHRlMyIFBNREEgPT09Cg== ------=_Part_1273303_1420330025.1389667505955-- From nscott@redhat.com Mon Jan 13 21:48:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 636717F3F for ; Mon, 13 Jan 2014 21:48:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 07119304043 for ; Mon, 13 Jan 2014 19:48:08 -0800 (PST) X-ASG-Debug-ID: 1389671286-04bdf0568e2617e0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 2OXImFIq2Pi8MEQc for ; Mon, 13 Jan 2014 19:48:07 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0E3m4u7013625; Mon, 13 Jan 2014 22:48:04 -0500 Date: Mon, 13 Jan 2014 22:48:04 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp developers Message-ID: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> In-Reply-To: <1254987112.1276988.1389668304268.JavaMail.root@redhat.com> Subject: pmlogger(1) task_t optimisations MIME-Version: 1.0 X-ASG-Orig-Subj: pmlogger(1) task_t optimisations Content-Type: multipart/mixed; boundary="----=_Part_1292164_1934077356.1389671284560" X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmlogger(1) task_t optimisations Thread-Index: 68o/cEjHQBAL6E3AiBXtI6EL4O7b8Q== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389671286 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144063 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ------=_Part_1292164_1934077356.1389671284560 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Ken, As Frank discovered, reported and worked-around in oss bugzilla #1041 there are pathological configurations for pmlogger (coming out of pmlogconf thanks to me! *cough*) which blow out the size of the generated archives. [ http://oss.sgi.com/bugzilla/show_bug.cgi?id=1041 ] This resulted from pmlogger logging the same metrics more than once per sample interval, if they're presented in different configuration blocks - even if those blocks use the same interval and permission states as each other. Franks workaround is simple and effective (which is good, as we're due for a release), but I wanted to check in and see if you think we should continue to hack in this area, as I think we (collectively) probably should. I'd like to make pmlogger set up metric logging tasks more independently, irrespective of the separate configuration file blocks and the order in which they are presented - it seems this can have a big impact currently on how much is logged, today, which is wrong IMO. Any blocks which have common interval/state could be merged into a single task_t (dup's removed) and allow the optfetch code to further optimise the fetches for each group. But, at the moment this is not possible due to the way pmlogger forces each config-file-chunk to be a separate task_t. I started going down the path of attempting to assign each metric into common tasks, during parsing - using find_task() which is used when pmlc adds metrics. It's complicated by global state and the need to delay task_t completion (and fetch group setup, log_callback registering, etc) until the entire config file has been parsed. A WIP patch is attached - lots to do, but it shows the general direction. Any thoughts? Is there are reason why this wasn't tackled originally - seems logical to go this way, but it doesn't; so my spidey-sense is telling me there's some subtle issues lurking here... :) thanks! -- Nathan ------=_Part_1292164_1934077356.1389671284560 Content-Type: text/x-patch; name=start-of-pmlogger-task-optimisation.patch Content-Disposition: attachment; filename=start-of-pmlogger-task-optimisation.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9wbWxvZ2dlci9zcmMvZG9wZHUuYyBiL3NyYy9wbWxvZ2dlci9zcmMv ZG9wZHUuYwppbmRleCAyNThhMWFiLi44YmFiOGJjIDEwMDY0NAotLS0gYS9zcmMvcG1sb2dnZXIv c3JjL2RvcGR1LmMKKysrIGIvc3JjL3BtbG9nZ2VyL3NyYy9kb3BkdS5jCkBAIC04MCwxMSArODAs OCBAQCByZWFsaXR5X2NoZWNrKHZvaWQpCiAJICAgIH0KIAl9CiAgICAgfQotCi0gICAgCiB9CiAK LS8qIENhbGwgdGhpcyBpbiBkYnggdG8gZHVtcCB0aGUgdGFzayBsaXN0IChkYnggZG9lc24ndCBr bm93IGFib3V0IHN0ZG91dCkgKi8KIHZvaWQKIGR1bXBpdCh2b2lkKQogewpAQCAtMTgwLDcgKzE3 Nyw3IEBAIGZpbmRvcHRyZXEocG1JRCBwbWlkLCBpbnQgaW5zdCkKICAgICAgKiBzdHJ1Y3R1cmVz IGx5aW5nIGFib3V0LCBpLmUuIE1BWUJFIChtYW5kYXRvcnkpIGlzIHRoZSBkZWZhdWx0LAogICAg ICAqIGFuZCBkb2VzIG5vdCBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgc3RvcmVkLCB3aGlsZSBPRkYg KGFkdmlzb3J5KQogICAgICAqIHJldmVydHMgdG8gTUFZQkUgKG1hbmRhdG9yeSkuCi0gICAgICog VGhlcmUgaXMgb25lIGV4ZWNwdGlvbiB0byB0aGUgYWJvdmUgYXNzdW1wdGlvbiwgbmFtZWx5IGZv cgorICAgICAqIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8gdGhlIGFib3ZlIGFzc3VtcHRpb24s IG5hbWVseSBmb3IKICAgICAgKiBjYXNlcyB3aGVyZSB0aGUgaW5pdGlhbCBzcGVjaWZpY2F0aW9u IGluY2x1ZGVzICJhbGwiIGluc3RhbmNlcywKICAgICAgKiB0aGVuIHNvbWUgbGF0ZXIgY29uY3Vy cmVudCBzcGVjaWZpY2F0aW9uIG1heSByZWZlciB0byBzcGVjaWZpYwogICAgICAqIGluc3RhbmNl cyAuLi4gaW4gdGhpcyBjYXNlLCB0aGUgc3BlY2lmaWMgb3B0cmVxX3Qgc3RydWN0dXJlIGlzCkBA IC03NDYsMzEgKzc0Myw2IEBAIHVwZGF0ZV9tZXRyaWMocG1WYWx1ZVNldCAqdnNwLCBpbnQgcmVx c3RhdGUsIGludCBtZmxhZ3MsIHRhc2tfdCAqKnJlc3VsdCkKICAgICByZXR1cm4gMDsKIH0KIAot LyogR2l2ZW4gYSBzdGF0ZSBhbmQgYSBkZWx0YSwgcmV0dXJuIGluIHJlc3VsdCB0aGUgZmlyc3Qg bWF0Y2hpbmcgdGFzay4KLSAqIFJldHVybiB0cnVlIGlmIGEgbWF0Y2hpbmcgdGFzayB3YXMgZm91 bmQKLSAqLwotc3RhdGljIGludAotZmluZF90YXNrKGludCBzdGF0ZSwgaW50IGRlbHRhLCB0YXNr X3QgKipyZXN1bHQpCi17Ci0gICAgdGFza190CSp0cDsKLSAgICBpbnQJCXRkZWx0YTsKLQotICAg IC8qIE5ldmVyIHJldHVybiBhICJvbmNlIG9ubHkiIHRhc2ssIGl0IG1heSBoYXZlIGdvbmUgb2Zm IGFscmVhZHkgYW5kIGp1c3QKLSAgICAgKiBiZSBoYW5naW5nIGFyb3VuZAotICAgICAqIFRPRE86 IGNsZWFudXAgb25jZSBvbmx5IHRhc2tzIGFmdGVyIGNhbGxiYWNrIGludm9rZWQKLSAgICAgKi8K LSAgICBpZiAoZGVsdGEgPT0gMCkKLQlyZXR1cm4gMDsKLQotICAgIGZvciAodHAgPSB0YXNrbGlz dDsgdHAgIT0gTlVMTDsgdHAgPSB0cC0+dF9uZXh0KSB7Ci0JdGRlbHRhID0gdHAtPnRfZGVsdGEu dHZfc2VjICogMTAwMCArICh0cC0+dF9kZWx0YS50dl91c2VjIC8gMTAwMCk7Ci0JaWYgKHN0YXRl ID09ICh0cC0+dF9zdGF0ZSAmIDB4MykgJiYgZGVsdGEgPT0gdGRlbHRhKQotCSAgICBicmVhazsK LSAgICB9Ci0gICAgKnJlc3VsdCA9IHRwOwotICAgIHJldHVybiB0cCAhPSBOVUxMOwotfQotCiAv KiBSZXR1cm4gYSBtYXNrIGNvbnRhaW5pbmcgdGhlIGhpc3RvcnkgZmxhZ3MgZm9yIGEgZ2l2ZW4g bWV0cmljL2luc3RhbmNlLgogICogdGhlIGhpc3RvcnkgZmxhZ3MgaW5kaWNhdGUgd2hldGhlciB0 aGUgbWV0cmljL2luc3RhbmNlIGlzIGluIHRoZSBsb2cgYXQgYWxsCiAgKiBhbmQgd2hldGhlciB0 aGUgbGFzdCBmZXRjaCBvZiB0aGUgbWV0cmljL2luc3RhbmNlIHdhcyBzdWNjZXNzZnVsLgpAQCAt MTA1MSw3ICsxMDIzLDggQEAgZG9fY29udHJvbChfX3BtUERVICpwYikKIAkvKiB1cGRhdGUgdGhl IGxvZ2dpbmcgc3RhdHVzIG9mIG1ldHJpY3MgKi8KIAogCXRhc2tfdAkJKm5ld3RwID0gTlVMTDsg LyogdGFzayBmb3IgbWV0cmljcy9pbnN0cyBpbiByZXF1ZXN0ICovCi0JaW50CQluZXd0YXNrOwor CXN0cnVjdCB0aW1ldmFsCXRkZWx0YSA9IHsgMCB9OworCWludAkJbmV3dGFzayA9IDA7CiAJaW50 CQltZmxhZ3M7CiAKIAkvKiBjb252ZXJ0IHN0YXRlIGFuZCBjb250cm9sIHRvIHRoZSBiaXRtYXNr IHVzZWQgaW4gcG1sb2dnZXIgYW5kIHZhbHVlcwpAQCAtMTA2OSw4ICsxMDQyLDE2IEBAIGRvX2Nv bnRyb2woX19wbVBEVSAqcGIpCiAJCVBNTENfU0VUX01BTkQocmVxc3RhdGUsIDEpOwogCX0KIAot CS8qIHRyeSB0byBmaW5kIGFuIGV4aXN0aW5nIHRhc2sgZm9yIHRoZSByZXF1ZXN0ICovCi0JbmV3 dGFzayA9ICFmaW5kX3Rhc2socmVxc3RhdGUsIGRlbHRhLCAmbmV3dHApOworCS8qIHRyeSB0byBm aW5kIGFuIGV4aXN0aW5nIHRhc2sgZm9yIHRoZSByZXF1ZXN0CisJICogTmV2ZXIgcmV0dXJuIGEg Im9uY2Ugb25seSIgdGFzaywgaXQgbWF5IGhhdmUgZ29uZSBvZmYgYWxyZWFkeSBhbmQganVzdAor CSAqIGJlIGhhbmdpbmcgYXJvdW5kCisJICogVE9ETzogY2xlYW51cCBvbmNlIG9ubHkgdGFza3Mg YWZ0ZXIgY2FsbGJhY2sgaW52b2tlZAorCSAqLworCWlmIChkZWx0YSAhPSAwKSB7CisJICAgIHRk ZWx0YS50dl9zZWMgPSBkZWx0YSAvIDEwMDA7CisJICAgIHRkZWx0YS50dl91c2VjID0gKGRlbHRh ICUgMTAwMCkgKiAxMDAwOworCSAgICBuZXd0YXNrID0gIWZpbmRfdGFzayhyZXFzdGF0ZSwgJnRk ZWx0YSwgJm5ld3RwKTsKKwl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgcmVxdWVzdC0+bnVtcG1pZDsg aSsrKSB7CiAJICAgIHZzcCA9IHJlcXVlc3QtPnZzZXRbaV07CkBAIC0xMTEwLDE2ICsxMDkxLDE1 IEBAIGRvX2NvbnRyb2woX19wbVBEVSAqcGIpCiAJCXRhc2tsaXN0ID0gbmV3dHA7CiAKIAkJLyog dXNlIG9ubHkgdGhlIE1BTkQvQURWIGFuZCBPTi9PRkYgYml0cyBvZiByZXFzdGF0ZSAqLwotCQlu ZXd0cC0+dF9zdGF0ZSA9IHJlcXN0YXRlICYgMHgzOworCQluZXd0cC0+dF9zdGF0ZSA9IG5ld3Rw LT50X2ZpcnN0c3RhdGUgPSByZXFzdGF0ZSAmIDB4MzsKIAkJaWYgKFBNTENfR0VUX09OKHJlcXN0 YXRlKSkgewotCQkgICAgbmV3dHAtPnRfZGVsdGEudHZfc2VjID0gZGVsdGEgLyAxMDAwOwotCQkg ICAgbmV3dHAtPnRfZGVsdGEudHZfdXNlYyA9IChkZWx0YSAlIDEwMDApICogMTAwMDsKLQkJICAg IG5ld3RwLT50X2FmaWQgPSBfX3BtQUZyZWdpc3RlcigmbmV3dHAtPnRfZGVsdGEsICh2b2lkICop bmV3dHAsCisJCSAgICBuZXd0cC0+dF9kZWx0YSA9IHRkZWx0YTsKKwkJICAgIG5ld3RwLT50X2Fm aWQgPSBfX3BtQUZyZWdpc3RlcigmdGRlbHRhLCAodm9pZCAqKW5ld3RwLAogCQkJCQkgICAgICAg bG9nX2NhbGxiYWNrKTsKIAkJfQogCQllbHNlCiAJCSAgICBuZXd0cC0+dF9kZWx0YS50dl9zZWMg PSBuZXd0cC0+dF9kZWx0YS50dl91c2VjID0gMDsKLQkJbGlua2JhY2sobmV3dHApOwkvKiBUT0RP OiByZWFsbHkgbmVlZGVkPyAobm8pICovCisJCWxpbmtiYWNrKG5ld3RwKTsKIAkgICAgfQogCX0K ICAgICB9CmRpZmYgLS1naXQgYS9zcmMvcG1sb2dnZXIvc3JjL2dyYW0ueSBiL3NyYy9wbWxvZ2dl ci9zcmMvZ3JhbS55CmluZGV4IDM2YjM2ZmQuLjRjY2ZkYTIgMTAwNjQ0Ci0tLSBhL3NyYy9wbWxv Z2dlci9zcmMvZ3JhbS55CisrKyBiL3NyYy9wbWxvZ2dlci9zcmMvZ3JhbS55CkBAIC01NCwxNSAr NTQsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgX2hsIHsKICAgICBpbnQJCWhsX2xpbmU7CiB9IGhvc3Rs aXN0X3Q7CiAKLXN0YXRpYyBob3N0bGlzdF90CSpobF9yb290ID0gTlVMTDsKLXN0YXRpYyBob3N0 bGlzdF90CSpobF9sYXN0ID0gTlVMTDsKK3N0YXRpYyBob3N0bGlzdF90CSpobF9yb290Oworc3Rh dGljIGhvc3RsaXN0X3QJKmhsX2xhc3Q7CiBzdGF0aWMgaG9zdGxpc3RfdAkqaGxwOwogc3RhdGlj IGhvc3RsaXN0X3QJKnByZXZobHA7Ci1zdGF0aWMgaW50CQlvcG1hc2sgPSAwOwotc3RhdGljIGlu dAkJc3BlY21hc2sgPSAwOworc3RhdGljIGludAkJb3BtYXNrOworc3RhdGljIGludAkJc3BlY21h c2s7CiBzdGF0aWMgaW50CQlhbGxvdzsKLXN0YXRpYyBpbnQJCXN0YXRlID0gMDsKLXN0YXRpYyBj aGFyCQkqIG1ldHJpY05hbWU7CitzdGF0aWMgaW50CQlzdGF0ZTsKK3N0YXRpYyBjaGFyCQkqbWV0 cmljTmFtZTsKKworc3RhdGljIGludCBsb29rdXBfbWV0cmljKGNvbnN0IGNoYXIgKiwgdGFza190 ICosIHRhc2tfdCAqKik7CitzdGF0aWMgdm9pZCBhY3RpdmF0ZV9tZXRyaWMoY29uc3QgY2hhciAq KTsKK3N0YXRpYyB2b2lkIGFjdGl2YXRlX2NhY2hlZF9tZXRyaWMoY29uc3QgY2hhciAqLCB0YXNr X3QgKiwgaW50KTsKKwogJX0KICV1bmlvbiB7CiAgICAgbG9uZyBsdmFsOwpAQCAtMTE3LDcgKzEy Miw3IEBAIHN0bXQJCTogZG93aGF0IHNvbWVtZXRyaWNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogbGluayBmZXRjaGN0bCBiYWNrIHRvIHRhc2sgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmcC0+Zl9hdXggPSAodm9pZCAqKXRwOwogCi0gICAgICAgICAgICAgICAgICAg ICAgICBpZiAoUE1MQ19HRVRfT04oc3RhdGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg KFBNTENfR0VUX09OKHRwLT50X2ZpcnN0c3RhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRwLT50X2FmaWQgPSBfX3BtQUZyZWdpc3RlcigmdHAtPnRfZGVsdGEsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXRw LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9nX2NhbGxiYWNrKTsKQEAgLTEzOSw3ICsxNDQsNyBAQCBkb3doYXQJCTogbG9nb3B0IGFj dGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRwLT50X2Rl bHRhLnR2X3NlYyA9ICQyIC8gMTAwMDsKICAgICAgICAgICAgICAgICAgICAgdHAtPnRfZGVsdGEu dHZfdXNlYyA9IDEwMDAgKiAoJDIgJSAxMDAwKTsKLSAgICAgICAgICAgICAgICAgICAgdHAtPnRf c3RhdGUgPSAgc3RhdGU7CisgICAgICAgICAgICAgICAgICAgIHRwLT50X3N0YXRlID0gdHAtPnRf Zmlyc3RzdGF0ZSA9IHN0YXRlOwogICAgICAgICAgICAgICAgIH0KIAkJOwogCkBAIC0yMTgsMzUg KzIyMywzMiBAQCBtZXRyaWNzcGVjCTogTkFNRQogICAgICAgICAgICAgICAgIH0KIAkJb3B0aW5z dAkKIAkJeworCQkgICAgdGFza190ICppdHAsICpzYXZlZF90cCA9IHRwOworCQkgICAgaW50IHN0 czsKKwogCQkgICAgLyoKLQkJICAgICAqIHNlYXJjaCBjYWNoZSBmb3IgcHJldmlvdXNseSBzZWVu IG1ldHJpY3MgZm9yIHRoaXMgdGFzaworCQkgICAgICogc2VhcmNoIGNhY2hlIGZvciBwcmV2aW91 c2x5IHNlZW4gbWV0cmljcyBmb3IgdGhpcyB0YXNrOworCQkgICAgICogaWYgZm91bmQgaW4gY2Fj aGUgd2Ugc2tpcCBuYW1lc3BhY2UgUERVIGV4Y2hhbmdlcy4KIAkJICAgICAqLwotCQkgICAgaW50 CQlqOwotCQkgICAgZm9yIChqID0gMDsgaiA8IHRwLT50X251bXBtaWQ7IGorKykgewotCQkJaWYg KHRwLT50X25hbWVsaXN0W2pdICE9IE5VTEwgJiYKLQkJCSAgICBzdHJjbXAodHAtPnRfbmFtZWxp c3Rbal0sIG1ldHJpY05hbWUpID09IDApIHsKLQkJCSAgICBicmVhazsKLQkJCX0KLQkJICAgIH0K LQkJICAgIGlmIChqIDwgdHAtPnRfbnVtcG1pZCkgewotCQkJLyogZm91bmQgaW4gY2FjaGUgKi8K LQkJCWRvbWV0cmljKG1ldHJpY05hbWUpOworCQkgICAgc3RzID0gbG9va3VwX21ldHJpYyhtZXRy aWNOYW1lLCB0cCwgJml0cCk7CisJCSAgICBpZiAoc3RzID49IDApIHsKKwkJCWFjdGl2YXRlX2Nh Y2hlZF9tZXRyaWMobWV0cmljTmFtZSwgaXRwLCBzdHMpOwogCQkgICAgfQogCQkgICAgZWxzZSB7 CiAJCSAgICAgICAgLyoKLQkJCSAqIGVpdGhlciBhIG5ldyBtZXRyaWMsIGFuZCBzbyBpdCBtYXkg YmUgYQotCQkJICogbm9uLXRlcm1pbmFsIGluIHRoZSBQTU5TCisJCQkgKiBlaXRoZXIgYSBuZXcg bWV0cmljIG9yIGEgbm9uLXRlcm1pbmFsIGluIHRoZSBQTU5TCiAJCQkgKi8KLQkJCWlmICgoc3Rz ID0gcG1UcmF2ZXJzZVBNTlMobWV0cmljTmFtZSwgZG9tZXRyaWMpKSA8IDAgKSB7CisJCQlpZiAo KHN0cyA9IHBtVHJhdmVyc2VQTU5TKG1ldHJpY05hbWUsIGFjdGl2YXRlX21ldHJpYykpIDwgMCAp IHsKIAkJCSAgICBjaGFyIGVtZXNzWzI1Nl07CiAJCQkgICAgc3ByaW50ZihlbWVzcywgIlByb2Js ZW0gd2l0aCBsb29rdXAgZm9yIG1ldHJpYyBcIiVzXCIgIgotCQkJCQkgICAgIi4uLiBsb2dnaW5n IG5vdCBhY3RpdmF0ZWQiLG1ldHJpY05hbWUpOworCQkJCQkgICAgIi4uLiBsb2dnaW5nIG5vdCBh Y3RpdmF0ZWQiLCBtZXRyaWNOYW1lKTsKIAkJCSAgICB5eXdhcm4oZW1lc3MpOwogCQkJICAgIGZw cmludGYoc3RkZXJyLCAiUmVhc29uOiAlc1xuIiwgcG1FcnJTdHIoc3RzKSk7CiAJCQl9CiAJCSAg ICB9CiAgICAgICAgICAgICAgICAgICAgIGZyZWVpbnN0KCZudW1pbnN0LCBpbnRsaXN0LCBleHRs aXN0KTsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSAobWV0cmljTmFtZSk7CisgICAgICAgICAg ICAgICAgICAgIGZyZWUobWV0cmljTmFtZSk7CisJCSAgICB0cCA9IHNhdmVkX3RwOwogICAgICAg ICAgICAgICAgIH0KIAkJOwogCkBAIC0zNjQsMzkgKzM2Niw0OSBAQCBvcAkJOiBBRFZJU09SWQkJ eyBvcG1hc2sgfD0gUE1fT1BfTE9HX0FEVjsgfQogJSUKIAogLyoKKyAqIFNlYXJjaCB0aGUgY2Fj aGUgZm9yIHByZXZpb3VzbHkgc2VlbiBtZXRyaWNzIGZvciBnaXZlbiB0YXNrLgorICogT3B0aW9u YWxseSwgYXR0ZW1wdCBtZXRyaWMgZGUtZHVwbGljYXRpb24gYnkgc2Nhbm5pbmcgb3RoZXIKKyAq IHRhc2tzIHdpdGggYSBtYXRjaGluZyBkZWx0YS9zdGF0ZSBjb21ibyBhcyB3ZWxsLgorICoKKyAq IFJldHVybnMgLTEgaWYgbm90IGZvdW5kLCBlbHNlIGluZGV4IGludG8gdF9uYW1lbGlzdCBmb3Ig dGhlCisgKiB0YXNrIHJldHVybmVkIHZpYSB0cHAuCisgKi8KK3N0YXRpYyBpbnQKK2xvb2t1cF9t ZXRyaWMoY29uc3QgY2hhciAqbmFtZSwgdGFza190ICppdHAsIHRhc2tfdCAqKnRwcCkKK3sKKyAg ICBpbnQJCWo7CisgICAgdGFza190CSpsdHAgPSBpdHA7CisKKyAgICBpZiAoIWZpbmRfdGFzayhs dHAtPnRfZmlyc3RzdGF0ZSwgJmx0cC0+dF9kZWx0YSwgJmx0cCkpCisJbHRwID0gaXRwOwkvKiBu byBtYXRjaCwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgdGFzayAoaXRwKSAqLworCisgICAgZm9yIChq ID0gMDsgaiA8IHRwLT50X251bXBtaWQ7IGorKykgeworCWlmIChsdHAtPnRfbmFtZWxpc3Rbal0g JiYgc3RyY21wKGx0cC0+dF9uYW1lbGlzdFtqXSwgbmFtZSkgPT0gMCkKKwkgICAgYnJlYWs7Cisg ICAgfQorICAgICp0cHAgPSBsdHA7CisgICAgcmV0dXJuIChqIDwgdHAtPnRfbnVtcG1pZCkgPyBq IDogLTE7Cit9CisKKy8qCiAgKiBBc3N1bWVkIGNhbGxpbmcgY29udGV4dCAuLi4KLSAqCXRwCQl0 aGUgY29ycmVjdCB0YXNrIGZvciB0aGUgcmVxdWVzdGVkIG1ldHJpYwogICoJbnVtaW5zdAkJbnVt YmVyIG9mIGluc3RhbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0CiAgKglleHRsaXN0 W10JZXh0ZXJuYWwgaW5zdGFuY2UgbmFtZXMgaWYgbnVtaW5zdCA+IDAKICAqCWludGxpc3RbXQlp bnRlcm5hbCBpbnN0YW5jZSBpZGVudGlmaWVyIGlmIG51bWluc3QgPiAwIGFuZAogICoJCQljb3Jy ZXNwb25kaW5nIGV4dGxpc3RbXSBlbnRyeSBpcyBOVUxMCiAgKi8KLQotdm9pZAotZG9tZXRyaWMo Y29uc3QgY2hhciAqbmFtZSkKK3N0YXRpYyB2b2lkCithY3RpdmF0ZV9jYWNoZWRfbWV0cmljKGNv bnN0IGNoYXIgKm5hbWUsIHRhc2tfdCAqbHRwLCBpbnQgZHVwKQogewotICAgIGludAkJc3RzID0g MDsJLyogaW5pdGlhbGl6ZSB0byBwYW5kZXIgdG8gZ2NjICovCisgICAgaW50CQlzdHMgPSAwOwog ICAgIGludAkJaW5zdDsKICAgICBpbnQJCWk7CiAgICAgaW50CQlqOwotICAgIGludAkJZHVwID0g LTE7CiAgICAgaW50CQlza2lwOwogICAgIHBtSUQJcG1pZDsKICAgICBwbURlc2MJKmRwOwogICAg IG9wdHJlcV90CSpycXA7Ci0gICAgZXh0ZXJuIGNoYXIJKmNoa19lbWVzc1tdOwotCWNoYXIgZW1l c3NbMTAyNF07Ci0KLSAgICAvKgotICAgICAqIHNlYXJjaCBjYWNoZSBmb3IgcHJldmlvdXNseSBz ZWVuIG1ldHJpY3MgZm9yIHRoaXMgdGFzawotICAgICAqLwotICAgIGZvciAoaiA9IDA7IGogPCB0 cC0+dF9udW1wbWlkOyBqKyspIHsKLQlpZiAodHAtPnRfbmFtZWxpc3Rbal0gIT0gTlVMTCAmJgot CSAgICBzdHJjbXAodHAtPnRfbmFtZWxpc3Rbal0sIG5hbWUpID09IDApIHsKLQkgICAgZHVwID0g ajsKLQkgICAgYnJlYWs7Ci0JfQotICAgIH0KKyAgICBjaGFyCWVtZXNzWzEwMjRdOwogCiAgICAg LyoKICAgICAgKiBuZWVkIG5ldyBtYWxsb2MnZCBwbURlc2MsIGV2ZW4gaWYgbWV0cmljIGZvdW5k IGluIGNhY2hlCkBAIC00MDksNyArNDIxLDcgQEAgZG9tZXRyaWMoY29uc3QgY2hhciAqbmFtZSkK IAogCS8qIENhc3QgYXdheSBjb25zdCwgcG1Mb29rdXBOYW1lIHNob3VsZCBuZXZlciBtb2RpZnkg bmFtZSAqLwogCWlmICgoc3RzID0gcG1Mb29rdXBOYW1lKDEsIChjaGFyICoqKSZuYW1lLCAmcG1p ZCkpIDwgMCB8fCBwbWlkID09IFBNX0lEX05VTEwpIHsKLQkgICBzcHJpbnRmKGVtZXNzLCAiTWV0 cmljIFwiJXNcIiBpcyB1bmtub3duIC4uLiBub3QgbG9nZ2VkIiwgbmFtZSk7CisJICAgIHNwcmlu dGYoZW1lc3MsICJNZXRyaWMgXCIlc1wiIGlzIHVua25vd24gLi4uIG5vdCBsb2dnZWQiLCBuYW1l KTsKIAkgICAgZ290byBkZWZlcjsKIAl9CiAKQEAgLTQyMCwyNCArNDMyLDI0IEBAIGRvbWV0cmlj KGNvbnN0IGNoYXIgKm5hbWUpCiAJfQogICAgIH0KICAgICBlbHNlIHsKLQkqZHAgPSB0cC0+dF9k ZXNjbGlzdFtkdXBdOwotCXBtaWQgPSB0cC0+dF9wbWlkbGlzdFtkdXBdOworCSpkcCA9IGx0cC0+ dF9kZXNjbGlzdFtkdXBdOworCXBtaWQgPSBsdHAtPnRfcG1pZGxpc3RbZHVwXTsKICAgICB9CiAK LSAgICB0cC0+dF9udW1wbWlkKys7Ci0gICAgdHAtPnRfcG1pZGxpc3QgPSAocG1JRCAqKXJlYWxs b2ModHAtPnRfcG1pZGxpc3QsIHRwLT50X251bXBtaWQgKiBzaXplb2YocG1JRCkpOwotICAgIGlm ICh0cC0+dF9wbWlkbGlzdCA9PSBOVUxMKQorICAgIGx0cC0+dF9udW1wbWlkKys7CisgICAgbHRw LT50X3BtaWRsaXN0ID0gKHBtSUQgKilyZWFsbG9jKGx0cC0+dF9wbWlkbGlzdCwgbHRwLT50X251 bXBtaWQgKiBzaXplb2YocG1JRCkpOworICAgIGlmIChsdHAtPnRfcG1pZGxpc3QgPT0gTlVMTCkK IAlnb3RvIG5vbWVtOwotICAgIHRwLT50X25hbWVsaXN0ID0gKGNoYXIgKiopcmVhbGxvYyh0cC0+ dF9uYW1lbGlzdCwgdHAtPnRfbnVtcG1pZCAqIHNpemVvZihjaGFyICopKTsKLSAgICBpZiAodHAt PnRfbmFtZWxpc3QgPT0gTlVMTCkKKyAgICBsdHAtPnRfbmFtZWxpc3QgPSAoY2hhciAqKilyZWFs bG9jKGx0cC0+dF9uYW1lbGlzdCwgbHRwLT50X251bXBtaWQgKiBzaXplb2YoY2hhciAqKSk7Cisg ICAgaWYgKGx0cC0+dF9uYW1lbGlzdCA9PSBOVUxMKQogCWdvdG8gbm9tZW07Ci0gICAgdHAtPnRf ZGVzY2xpc3QgPSAocG1EZXNjICopcmVhbGxvYyh0cC0+dF9kZXNjbGlzdCwgdHAtPnRfbnVtcG1p ZCAqIHNpemVvZihwbURlc2MpKTsKLSAgICBpZiAodHAtPnRfZGVzY2xpc3QgPT0gTlVMTCkKKyAg ICBsdHAtPnRfZGVzY2xpc3QgPSAocG1EZXNjICopcmVhbGxvYyhsdHAtPnRfZGVzY2xpc3QsIGx0 cC0+dF9udW1wbWlkICogc2l6ZW9mKHBtRGVzYykpOworICAgIGlmIChsdHAtPnRfZGVzY2xpc3Qg PT0gTlVMTCkKIAlnb3RvIG5vbWVtOwotICAgIGlmICgodHAtPnRfbmFtZWxpc3RbdHAtPnRfbnVt cG1pZC0xXSA9IHN0cmR1cChuYW1lKSkgPT0gTlVMTCkKKyAgICBpZiAoKGx0cC0+dF9uYW1lbGlz dFtsdHAtPnRfbnVtcG1pZC0xXSA9IHN0cmR1cChuYW1lKSkgPT0gTlVMTCkKIAlnb3RvIG5vbWVt OwotICAgIHRwLT50X3BtaWRsaXN0W3RwLT50X251bXBtaWQtMV0gPSBwbWlkOwotICAgIHRwLT50 X2Rlc2NsaXN0W3RwLT50X251bXBtaWQtMV0gPSAqZHA7CS8qIHN0cnVjdCBhc3NpZ25tZW50ICov CisgICAgbHRwLT50X3BtaWRsaXN0W2x0cC0+dF9udW1wbWlkLTFdID0gcG1pZDsKKyAgICBsdHAt PnRfZGVzY2xpc3RbbHRwLT50X251bXBtaWQtMV0gPSAqZHA7CS8qIHN0cnVjdCBhc3NpZ25tZW50 ICovCiAKICAgICBycXAgPSAob3B0cmVxX3QgKiljYWxsb2MoMSwgc2l6ZW9mKG9wdHJlcV90KSk7 CiAgICAgaWYgKHJxcCA9PSBOVUxMKQpAQCAtNDc3LDcgKzQ4OSw3IEBAIGRvbWV0cmljKGNvbnN0 IGNoYXIgKm5hbWUpCiAJCWZyZWUocCk7CiAJCWluc3QgPSBpbnRsaXN0W2ldOwogCSAgICB9Ci0J ICAgIGlmICgoc3RzID0gY2hrX29uZSh0cCwgcG1pZCwgaW5zdCkpIDwgMCkgeworCSAgICBpZiAo KHN0cyA9IGNoa19vbmUobHRwLCBwbWlkLCBpbnN0KSkgPCAwKSB7CiAJCQlzcHJpbnRmKGVtZXNz LCAiSW5jb21wYXRpYmxlIHJlcXVlc3QgZm9yIG1ldHJpYyBcIiVzXCIgYW5kIGluc3RhbmNlIFwi JXNcIiIsIG5hbWUsIGV4dGxpc3RbaV0pOwogCQkJeXl3YXJuKGVtZXNzKTsKIApAQCAtNDkxLDcg KzUwMyw3IEBAIGRvbWV0cmljKGNvbnN0IGNoYXIgKm5hbWUpCiAJICAgIHNraXAgPSAxOwogICAg IH0KICAgICBlbHNlIHsKLQlpZiAoKHN0cyA9IGNoa19hbGwodHAsIHBtaWQpKSA8IDApIHsKKwlp ZiAoKHN0cyA9IGNoa19hbGwobHRwLCBwbWlkKSkgPCAwKSB7CiAgICAgICAgICAgICBzcHJpbnRm KGVtZXNzLCAiSW5jb21wYXRpYmxlIHJlcXVlc3QgZm9yIG1ldHJpYyBcIiVzXCIiLCBuYW1lKTsK ICAgICAgICAgICAgIHl5d2FybihlbWVzcyk7CiAKQEAgLTU0MCwzICs1NTIsMTcgQEAgc25hcmY6 CiAgICAgZnJlZShkcCk7CiAgICAgcmV0dXJuOwogfQorCisvKgorICogQXNzdW1lZCBjYWxsaW5n IGNvbnRleHQgLi4uCisgKgl0cAkJZGVmYXVsdCAoY3VycmVudCkgdGFzayBmb3IgdGhlIHJlcXVl c3RlZCBtZXRyaWMKKyAqLworc3RhdGljIHZvaWQKK2FjdGl2YXRlX21ldHJpYyhjb25zdCBjaGFy ICpuYW1lKQoreworICAgIGludAkJZHVwOworICAgIHRhc2tfdAkqbHRwID0gTlVMTDsKKworICAg IGR1cCA9IGxvb2t1cF9tZXRyaWMobmFtZSwgdHAsICZsdHApOworICAgIGFjdGl2YXRlX2NhY2hl ZF9tZXRyaWMobmFtZSwgbHRwLCBkdXApOworfQpkaWZmIC0tZ2l0IGEvc3JjL3BtbG9nZ2VyL3Ny Yy9sb2dnZXIuaCBiL3NyYy9wbWxvZ2dlci9zcmMvbG9nZ2VyLmgKaW5kZXggN2MxMzZiOS4uYzk1 NTFiYyAxMDA2NDQKLS0tIGEvc3JjL3BtbG9nZ2VyL3NyYy9sb2dnZXIuaAorKysgYi9zcmMvcG1s b2dnZXIvc3JjL2xvZ2dlci5oCkBAIC0zMCw2ICszMCw3IEBAIHR5cGVkZWYgc3RydWN0IF90YXNr IHsKICAgICBzdHJ1Y3QgX3Rhc2sJKnRfbmV4dDsKICAgICBzdHJ1Y3QgdGltZXZhbAl0X2RlbHRh OwogICAgIGludAkJCXRfc3RhdGU7CS8qIGxvZ2dpbmcgc3RhdGUgKi8KKyAgICBpbnQJCQl0X2Zp cnN0c3RhdGU7CS8qIG9yaWdpbmFsIGxvZ2dpbmcgc3RhdGUgKi8KICAgICBpbnQJCQl0X251bXBt aWQ7CiAgICAgcG1JRAkJKnRfcG1pZGxpc3Q7CiAgICAgY2hhcgkJKip0X25hbWVsaXN0OwpAQCAt MTE4LDkgKzExOSw5IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoY2hhciAqKTsKIGV4dGVybiB2b2lk IHl5d2FybihjaGFyICopOwogZXh0ZXJuIGludCB5eWxleCh2b2lkKTsKIGV4dGVybiBpbnQgeXlw YXJzZSh2b2lkKTsKLWV4dGVybiB2b2lkIGRvbWV0cmljKGNvbnN0IGNoYXIgKik7CiBleHRlcm4g dm9pZCBidWlsZGluc3QoaW50ICosIGludCAqKiwgY2hhciAqKiosIGludCwgY2hhciAqKTsKIGV4 dGVybiB2b2lkIGZyZWVpbnN0KGludCAqLCBpbnQgKiwgY2hhciAqKik7CitleHRlcm4gaW50IGZp bmRfdGFzayhpbnQsIHN0cnVjdCB0aW1ldmFsICosIHRhc2tfdCAqKik7CiBleHRlcm4gdm9pZCBs b2dfY2FsbGJhY2soaW50LCB2b2lkICopOwogZXh0ZXJuIGludCBjaGtfb25lKHRhc2tfdCAqLCBw bUlELCBpbnQpOwogZXh0ZXJuIGludCBjaGtfYWxsKHRhc2tfdCAqLCBwbUlEKTsKQEAgLTEzNSw2 ICsxMzYsNyBAQCBleHRlcm4gdm9pZCBydW5fZG9uZShpbnQsY2hhciAqKTsKIGV4dGVybiBfX3Bt UERVICpyZXdyaXRlX3BkdShfX3BtUERVICosIGludCk7CiBleHRlcm4gaW50IHB1dG1hcmsodm9p ZCk7CiBleHRlcm4gaW50IGRvX2ZsdXNoKHZvaWQpOworZXh0ZXJuIHZvaWQgZHVtcGl0KHZvaWQp OwogCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiBleHRlcm4gY2hhciBwbWxjX2hvc3RbXTsKZGlm ZiAtLWdpdCBhL3NyYy9wbWxvZ2dlci9zcmMvcG1sb2dnZXIuYyBiL3NyYy9wbWxvZ2dlci9zcmMv cG1sb2dnZXIuYwppbmRleCBlMWQ2NDU1Li41MjYxNjFkIDEwMDY0NAotLS0gYS9zcmMvcG1sb2dn ZXIvc3JjL3BtbG9nZ2VyLmMKKysrIGIvc3JjL3BtbG9nZ2VyL3NyYy9wbWxvZ2dlci5jCkBAIC03 NTEsMTAgKzc1MSwxNCBAQCBPcHRpb25zOlxuXAogCiAgICAgaWYgKHl5cGFyc2UoKSAhPSAwKQog CWV4aXQoMSk7Ci0KLSAgICBpZiAoIGNvbmZpZ2ZpbGUgIT0gTlVMTCApIHsKKyAgICBpZiAoY29u ZmlnZmlsZSAhPSBOVUxMKQogCWZjbG9zZSh5eWluKTsKLSAgICB9CisKKyAgICAvKiBXYWxrIHRh c2tsaXN0IHBvc3QtY29uZmlnLXBhcnNpbmcsIHRpZSBvZmYgbG9vc2UgZmV0Y2hncm91cAorICAg ICAqIGVuZHMgYW5kIHJlZ2lzdGVyIEFGaWRzIG5vdyB0aGF0IHdlIGtub3cgd2hhdCB0aGUgdGFz a3MgYWxsCisgICAgICogYXJlLgorICAgICAqLworICAgIC8qIHByaW1lX3Rhc2tzKCk7ICovCiAK ICNpZmRlZiBQQ1BfREVCVUcKICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbmZpZyBwYXJzZWRcbiIp OwpAQCAtNzYyLDcgKzc2Niw2IEBAIE9wdGlvbnM6XG5cCiAKICAgICBmcHJpbnRmKHN0ZGVyciwg IlN0YXJ0aW5nICVzbG9nZ2VyIGZvciBob3N0IFwiJXNcIiB2aWEgXCIlc1wiXG4iLAogICAgICAg ICAgICAgcHJpbWFyeSA/ICJwcmltYXJ5ICIgOiAiIiwgcG1jZF9ob3N0LCBwbWNkX2hvc3RfY29u bik7Ci0KICNpZmRlZiBQQ1BfREVCVUcKICAgICBpZiAocG1EZWJ1ZyAmIERCR19UUkFDRV9MT0cp IHsKIAlmcHJpbnRmKHN0ZGVyciwgIm9wdEZldGNoIENvc3QgUGFyYW1ldGVyczogcG1pZD0lZCBp bmRvbT0lZCBmZXRjaD0lZCBzY29wZT0lZFxuIiwKZGlmZiAtLWdpdCBhL3NyYy9wbWxvZ2dlci9z cmMvdXRpbC5jIGIvc3JjL3BtbG9nZ2VyL3NyYy91dGlsLmMKaW5kZXggMGRmYzQ3ZC4uYmEwNjU1 NiAxMDA2NDQKLS0tIGEvc3JjL3BtbG9nZ2VyL3NyYy91dGlsLmMKKysrIGIvc3JjL3BtbG9nZ2Vy L3NyYy91dGlsLmMKQEAgLTcwLDMgKzcwLDIyIEBAIGZyZWVpbnN0KGludCAqbnVtaW5zdCwgaW50 ICppbnRsaXN0LCBjaGFyICoqZXh0bGlzdCkKIAkqbnVtaW5zdCA9IDA7CiAgICAgfQogfQorCisv KgorICogR2l2ZW4gYSBzdGF0ZSBhbmQgYSBkZWx0YSwgcmV0dXJuIGluIHJlc3VsdCB0aGUgZmly c3QgbWF0Y2hpbmcgdGFzay4KKyAqIFJldHVybiB0cnVlIGlmIGEgbWF0Y2hpbmcgdGFzayB3YXMg Zm91bmQKKyAqLworaW50CitmaW5kX3Rhc2soaW50IHN0YXRlLCBzdHJ1Y3QgdGltZXZhbCAqZGVs dGEsIHRhc2tfdCAqKnJlc3VsdCkKK3sKKyAgICB0YXNrX3QJKnRwOworCisgICAgZm9yICh0cCA9 IHRhc2tsaXN0OyB0cCAhPSBOVUxMOyB0cCA9IHRwLT50X25leHQpIHsKKwlpZiAoc3RhdGUgPT0g KHRwLT50X3N0YXRlICYgMHgzKSAmJgorCSAgICBkZWx0YS0+dHZfc2VjID09IHRwLT50X2RlbHRh LnR2X3NlYyAmJgorCSAgICBkZWx0YS0+dHZfdXNlYyA9PSB0cC0+dF9kZWx0YS50dl91c2VjKQor CSAgICBicmVhazsKKyAgICB9CisgICAgKnJlc3VsdCA9IHRwOworICAgIHJldHVybiB0cCAhPSBO VUxMOworfQo= ------=_Part_1292164_1934077356.1389671284560-- From nscott@redhat.com Mon Jan 13 21:49:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D919A7F3F for ; Mon, 13 Jan 2014 21:49:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B8593304043 for ; Mon, 13 Jan 2014 19:49:17 -0800 (PST) X-ASG-Debug-ID: 1389671353-04cbb04167da0030001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id Nh7yGMkeKuwGmD8v for ; Mon, 13 Jan 2014 19:49:13 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0E3nDNM010268 for ; Mon, 13 Jan 2014 22:49:13 -0500 Date: Mon, 13 Jan 2014 22:49:13 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <2057198007.1293215.1389671353198.JavaMail.root@redhat.com> In-Reply-To: <580713524.1273642.1389667670365.JavaMail.root@redhat.com> Subject: pcp updates: fche, scox merges + qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: fche, scox merges + qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: fche, scox merges + qa Thread-Index: vhxU629f4a5qxwbOrrPdSxFDSOKZ9g== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389671353 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144064 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev CHANGELOG | 5 + man/man1/pmlogger.1 | 4 qa/.gitignore | 2 qa/248 | 11 ++ qa/248.out | 51 ------------ qa/248.out.1 | 51 ++++++++++++ qa/248.out.2 | 99 +++++++++++++++++++++++ qa/465 | 8 + qa/465.out.3 | 32 +++++++ qa/466.out.1 | 14 --- qa/750 | 32 +++++-- qa/750.out | 185 -------------------------------------------- qa/750.out.1 | 185 ++++++++++++++++++++++++++++++++++++++++++++ qa/750.out.2 | 200 ++++++++++++++++++++++++++++++++++++++++++++++++ qa/common.rpm | 4 src/pmdas/rpm/help | 3 src/pmdas/rpm/pmns | 1 src/pmdas/rpm/rpm.c | 10 +- src/pmdas/rpm/rpm.h | 4 src/pmlogger/src/gram.y | 51 +++++++++++- 20 files changed, 680 insertions(+), 272 deletions(-) commit 74e97a1e1ed7b18269c6ca97b3e2c2988bbc8dca Author: Nathan Scott Date: Tue Jan 14 13:40:40 2014 +1100 Resolve QA fallout resulting from pmlogger de-dup changes qa/248 - this test uses explicitly "-s 6" to ensure 6 records are written to the test archive. We now successfully merge the three pmlogger tasks (config blocks) the test would have setup into one, which results in different raw pmdumplog output. I've added -Dappl1 to the test to show the de-duping happening, and split the output based on PCP_VER. qa/465 - another case of de-duplication reducing the number of pmlogger tasks (and log size). This is a good test case showing what a more ideal pmlogger fix should do (one task) rather than what the simplified workaround we've put in place for now does (i.e. multiple log-once tasks) - see 465.out.3 vs 465.out.2 and note the removed section is what *should* be there. commit 9e202e4f7e80200b0e0b7d079d845855c3313784 Author: Nathan Scott Date: Tue Jan 14 11:48:32 2014 +1100 Updates to the changelog after recent code additions commit 764a143d83ea213556b89311a6cdb47aaac86893 Author: Nathan Scott Date: Tue Jan 14 11:43:45 2014 +1100 Add a diagnostic to pmlogger metric-dup reduction heuristics commit 0ca25558c8d44f034402b825b77a2e1c865587a1 Author: Nathan Scott Date: Tue Jan 14 11:20:36 2014 +1100 Export a separate rpm.name metric from pmdarpm. Add rpm.name metric since we no longer have this separate info after instance name change. Update test qa/750 to cope with new instance names and the addition of the rpm.name metric. commit 47548ed3e8f5649958e0359e62f2f2d627b1b6bc Author: Stan Cox Date: Tue Jan 14 10:02:00 2014 +1100 pmdarpm PR1042: instance names were not unique, use NEVRA Switch from using just the rpm name for metric instance names, to the full name-epoch-version-release-arch string which has a much better chance of being unique. commit 9e56138016885da9bd0fa536a9a5e6eb37d2b3b6 Merge: 2f3458b e2301eb Author: Nathan Scott Date: Tue Jan 14 08:40:14 2014 +1100 Merge branch 'fche/dev' of ../pcpfans into dev commit e2301eb9c6b3e89fabd8697cff81bafd76b27fe5 Author: Frank Ch. Eigler Date: Mon Jan 13 15:28:57 2014 -0500 pmlogger PR1041: implement limited duplicate-elimination amongst metrics Duplicates are detected during parsing, in the dometric() function which fires after a new metric & instance-spec is identified. It is skipped if the same metric & group-specs & non-instance-specificity is detected in a prior task_t group. This dramatically reduces the amount of logging data generated from a default-pmlogconf running against some random Linux box (46.36 -> 17.01 Mbytes/day). From kenj@internode.on.net Tue Jan 14 01:09:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 961F87F3F for ; Tue, 14 Jan 2014 01:09:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 78D0D8F8035 for ; Mon, 13 Jan 2014 23:09:12 -0800 (PST) X-ASG-Debug-ID: 1389683346-04cbb04168da4e50001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id NacyUtECYE0JfsPT for ; Mon, 13 Jan 2014 23:09:07 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An4XAA7i1FJ20ZlwPGdsb2JhbAANTYNDg1S3VIElAwEBAQE4gloBAQEDASMVPAQBBQsLGAICBRYLAgIJAwIBAgExFAYNAQcBAYd4FaksdpsFF4EpjV4Hgm+BSAEDlDiOMYsL Received: from ppp118-209-153-112.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.153.112]) by ipmail05.adl6.internode.on.net with ESMTP; 14 Jan 2014 17:38:42 +1030 Message-ID: <52D4E2C9.4010205@internode.on.net> Date: Tue, 14 Jan 2014 18:10:01 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp developers Subject: Re: pmlogger(1) task_t optimisations References: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: pmlogger(1) task_t optimisations In-Reply-To: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1389683346 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 14/01/14 14:48, Nathan Scott wrote: > Hi Ken, > > As Frank discovered, reported and worked-around in oss > bugzilla #1041 there are pathological configurations for > pmlogger (coming out of pmlogconf thanks to me! *cough*) > which blow out the size of the generated archives. > [ http://oss.sgi.com/bugzilla/show_bug.cgi?id=1041 ] > > This resulted from pmlogger logging the same metrics more > than once per sample interval, if they're presented in > different configuration blocks - even if those blocks use > the same interval and permission states as each other. By "permission" I presume you mean advisory/mandatory? > Franks workaround is simple and effective (which is good, > as we're due for a release), but I wanted to check in and > see if you think we should continue to hack in this area, > as I think we (collectively) probably should. pmlogger is core technology ... it is never a waste of time trying to improve things here. > I'd like to make pmlogger set up metric logging tasks more > independently, irrespective of the separate configuration > file blocks and the order in which they are presented - it > seems this can have a big impact currently on how much is > logged, today, which is wrong IMO. How does the order of the config file blocks impact on "how much is logged"? > Any blocks which have common interval/state ... "state" == "permission" above? > ...could be merged > into a single task_t (dup's removed) and allow the optfetch > code to further optimise the fetches for each group. But, > at the moment this is not possible due to the way pmlogger > forces each config-file-chunk to be a separate task_t. > > I started going down the path of attempting to assign each > metric into common tasks, during parsing - using find_task() > which is used when pmlc adds metrics. It's complicated by > global state and the need to delay task_t completion (and > fetch group setup, log_callback registering, etc) until the > entire config file has been parsed. A WIP patch is attached > - lots to do, but it shows the general direction. > > Any thoughts? Is there are reason why this wasn't tackled > originally - seems logical to go this way, but it doesn't; > so my spidey-sense is telling me there's some subtle issues > lurking here... :) Don't have bandwidth to review the patch at this stage I'm afraid, but the only issue to watch out for is error handling ... I have a vague feeling that at some point in the past, if there was a problem with the initial metadata setup (e.g. bad metric name, bad PMID, no pmDesc available) for one metric in a group then all the metrics in the group were omitted from the archive. But I've just done a small experiment and believe this to NOT be the case, e.g. log mandatory on once { sample.bin } log mandatory on once { bogus.metric } and log mandatory on once { sample.bin bogus.metric } produce the same output archive. The other reason for multiple groups that I vaguely recall was to "stagger" the pmFetches but this is a false optimization with current hardware and networks, and makes interpolation less believable (trust me on this one). From pevans@redhat.com Tue Jan 14 06:30:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9A3BE7F3F for ; Tue, 14 Jan 2014 06:30:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 750648F8035 for ; Tue, 14 Jan 2014 04:30:38 -0800 (PST) X-ASG-Debug-ID: 1389702634-04bdf00fdf6ba7d0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id mFF5ca6kyQ2mH7L5 for ; Tue, 14 Jan 2014 04:30:34 -0800 (PST) X-Barracuda-Envelope-From: pevans@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0ECUWE7016384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 14 Jan 2014 07:30:34 -0500 Received: from [10.36.4.103] (vpn1-4-103.ams2.redhat.com [10.36.4.103]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0ECUIKR002001; Tue, 14 Jan 2014 07:30:22 -0500 Message-ID: <52D52DD9.2090904@redhat.com> Date: Tue, 14 Jan 2014 12:30:17 +0000 From: Paul Evans User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: pmdagfs2: qa/655 update (fix reported issues with EL6 2.6.32-279) Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pmdagfs2: qa/655 update (fix reported issues with EL6 2.6.32-279) Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389702634 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Changes committed to git://oss.sgi.com/pcp/pcp.git dev commit 37ba62ab70cd2cbc02a36941022dd88b0e545afb Author: Paul Evans Date: Tue Jan 14 12:05:19 2014 +0000 pmdagfs2: qa/655 update (fix reported issues with EL6 2.6.32-279) Fixed issue on EL6 2.6.32-279 by switching to using a loop device for the tests instead of requiring a mounted GFS2 filesystem in a clustered environment. qa/655 | 21 ++--- qa/655.out | 256 +++++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 180 insertions(+), 97 deletions(-) Cheers, Paul From nscott@redhat.com Tue Jan 14 17:00:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8CC0A7F3F for ; Tue, 14 Jan 2014 17:00:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 54133304070 for ; Tue, 14 Jan 2014 15:00:51 -0800 (PST) X-ASG-Debug-ID: 1389740449-04bdf00fe26d77f0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id DjOXbIdKGFrGlsZb for ; Tue, 14 Jan 2014 15:00:49 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0EN0gE2018298; Tue, 14 Jan 2014 18:00:42 -0500 Date: Tue, 14 Jan 2014 18:00:41 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp developers Message-ID: <223161620.2279579.1389740441989.JavaMail.root@redhat.com> In-Reply-To: <52D4E2C9.4010205@internode.on.net> References: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> <52D4E2C9.4010205@internode.on.net> Subject: Re: pmlogger(1) task_t optimisations MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pmlogger(1) task_t optimisations Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmlogger(1) task_t optimisations Thread-Index: q07OZQ9tD3ij2FWOaLvkuhFu6Z2+Zw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389740449 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > On 14/01/14 14:48, Nathan Scott wrote: > > Hi Ken, > > > > As Frank discovered, reported and worked-around in oss > > bugzilla #1041 there are pathological configurations for > > pmlogger (coming out of pmlogconf thanks to me! *cough*) > > which blow out the size of the generated archives. > > [ http://oss.sgi.com/bugzilla/show_bug.cgi?id=1041 ] > > > > This resulted from pmlogger logging the same metrics more > > than once per sample interval, if they're presented in > > different configuration blocks - even if those blocks use > > the same interval and permission states as each other. > > By "permission" I presume you mean advisory/mandatory? > *nod* > > Franks workaround is simple and effective (which is good, > > as we're due for a release), but I wanted to check in and > > see if you think we should continue to hack in this area, > > as I think we (collectively) probably should. > > pmlogger is core technology ... it is never a waste of time trying to > improve things here. > > > I'd like to make pmlogger set up metric logging tasks more > > independently, irrespective of the separate configuration > > file blocks and the order in which they are presented - it > > seems this can have a big impact currently on how much is > > logged, today, which is wrong IMO. > > How does the order of the config file blocks impact on "how much is logged"? So, each config file block == a separate task_t, each separate task_t == at least one pmFetch (and hence pmResult). Before Franks commit, even exactly-duplicated metric names in different blocks were fetched and logged twice (usually within a few usec of each other). Its a conservative change though - any hint of instances in the config, and we bail out of attempting de-dup, amongst other bail-out triggers. Further, the way it is coded (for simplicity), the metric de-dup matching happens in-place within the parser. This means that groups of metrics which are presented early-on get precedence over those that come later. For example, this pmlogger config from qa/465 shows the issue there: log mandatory on once { sample.control } log mandatory on once { sample.long.one } log mandatory on once { sample.float.one } log mandatory on once { sample.double.one } log mandatory on once { sample.string.null } log mandatory on once { sample.string.hullo } log mandatory on once { sample.bin } log mandatory on once { sample.control sample.long.one sample.float.one sample.double.one sample.string.null sample.string.hullo sample.bin } - generates 7 task_t's in pmlogger, so 7 pmFetch() calls (the eighth block is now ignored as de-dup'ing kicks in here for all 7 of its metrics, based on the blocks that came before, and no final task_t is generated), and on-disk - 7 log records with 7 slightly different timestamps from pmcd. An ideal outcome would have been 1 task_t matching just that final block - one pmFetch PDU, one sample on the server side, one timestamp, and one result logged. The example above uses "log once", but of course the same thing happens for other sample intervals (and the effects are more pronounced, naturally). > > Any blocks which have common interval/state ... > > "state" == "permission" above? *nod* > > Don't have bandwidth to review the patch at this stage I'm afraid, but > the only issue to watch out for is error handling ... I have a vague > feeling that at some point in the past, if there was a problem with the > initial metadata setup (e.g. bad metric name, bad PMID, no pmDesc > available) for one metric in a group then all the metrics in the group > were omitted from the archive. > ... Ah, OK. > > The other reason for multiple groups that I vaguely recall was to > "stagger" the pmFetches but this is a false optimization with current > hardware and networks, and makes interpolation less believable (trust me > on this one). > Right & I do :) - there does still come a point where it would make sense to split, as we approach the PDU_SIZE limit for pmcd requests. I suspect the optfetch code is not taking that into account yet though? - but it is something we may need to do at some point. So, keeping the ability to split fetches sounds useful - mostly I'm thinking about tweaking pmlogger further at this stage though (mental note made to come back to optfetch, too, and investigate further). Thanks! -- Nathan From dlle@ufam.edu.br Tue Jan 14 17:04:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 553D37F3F for ; Tue, 14 Jan 2014 17:04:17 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8832CAC008 for ; Tue, 14 Jan 2014 15:04:15 -0800 (PST) X-ASG-Debug-ID: 1389740648-04cb6c537edc2040001-S8gJnT Received: from zimbramta01.ufam.edu.br (zimbramta01.ufam.edu.br [200.129.163.90]) by cuda.sgi.com with ESMTP id dJdHXkvAN2qTmUpE for ; Tue, 14 Jan 2014 15:04:09 -0800 (PST) X-Barracuda-Envelope-From: dlle@ufam.edu.br X-Barracuda-Apparent-Source-IP: 200.129.163.90 Received: from localhost (localhost [127.0.0.1]) by zimbramta01.ufam.edu.br (Postfix) with ESMTP id 99B226342C; Tue, 14 Jan 2014 18:57:51 -0400 (AMT) Received: from zimbramta01.ufam.edu.br ([127.0.0.1]) by localhost (zimbramta01.ufam.edu.br [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id i57ZSea3hLWU; Tue, 14 Jan 2014 18:57:50 -0400 (AMT) Received: from localhost (localhost [127.0.0.1]) by zimbramta01.ufam.edu.br (Postfix) with ESMTP id 644DF63435; Tue, 14 Jan 2014 18:57:45 -0400 (AMT) X-Virus-Scanned: amavisd-new at zimbramta01.ufam.edu.br Received: from zimbramta01.ufam.edu.br ([127.0.0.1]) by localhost (zimbramta01.ufam.edu.br [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Af7ZPFCv1bsK; Tue, 14 Jan 2014 18:57:45 -0400 (AMT) Received: from zimbrastore01.ufam.edu.br (zimbrastore01.ufam.edu.br [200.129.163.92]) by zimbramta01.ufam.edu.br (Postfix) with ESMTP id C14B36342F; Tue, 14 Jan 2014 18:57:29 -0400 (AMT) Date: Tue, 14 Jan 2014 18:57:28 -0400 (AMT) From: FedEx Delivery Service Reply-To: FedEx Delivery Service Message-ID: <1402014523.1034558.1389740248941.JavaMail.zimbra@ufam.edu.br> Subject: Season Greetings From FedEx MIME-Version: 1.0 X-ASG-Orig-Subj: Season Greetings From FedEx Content-Type: multipart/mixed; boundary="----=_Part_1034554_959580458.1389740248912" X-Originating-IP: [123.63.112.74] X-Mailer: Zimbra 8.0.5_GA_5839 (zclient/8.0.5_GA_5839) Thread-Topic: Season Greetings From FedEx Thread-Index: ZeZss6mQo1RmorA5du3Wr0fPnZW3qw== X-Barracuda-Connect: zimbramta01.ufam.edu.br[200.129.163.90] X-Barracuda-Start-Time: 1389740648 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.73 X-Barracuda-Spam-Status: No, SCORE=1.73 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC3_TG321, HTML_MESSAGE, MISSING_HEADERS, THREAD_INDEX, THREAD_TOPIC, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 1.21 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header 0.50 BSF_SC3_TG321 Custom Rule TG321 To: undisclosed-recipients:; ------=_Part_1034554_959580458.1389740248912 Content-Type: multipart/alternative; boundary="----=_Part_1034555_66568636.1389740248913" ------=_Part_1034555_66568636.1389740248913 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Open Attached File For More Details ------=_Part_1034555_66568636.1389740248913 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit
Open Attached File For More Details
------=_Part_1034555_66568636.1389740248913-- ------=_Part_1034554_959580458.1389740248912 Content-Type: application/pdf; name="Parcel Delivery.pdf" Content-Disposition: attachment; filename="Parcel Delivery.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDIxIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+ Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDIvS2lkc1sgMyAwIFIgOSAw IFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3Vy Y2VzPDwvRm9udDw8L0YxIDUgMCBSL0YyIDcgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VC L0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0NvbnRlbnRzIDQgMCBS L0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1Mv U3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCAzNzM0Pj4NCnN0cmVhbQ0KeJytXFlv3EYSfheg/8CHRVZcmPQ02byCIIAs2btex44R y/GDsg/yjGY0a10ZSXGExf73ZXNY31SxD1LJIoDT4tHsrq/uqp7o+fvou++evz16fRzNvv8+enF8 FKlotb+XN6nKoirL06aMirxOizLKs3Smo835/t7yb/t70cu3R1HE3lf9+y9O9veev1KRUmmRRSfL /T0Vzdr/VKRnZppK52mpo5Or/b1ZmpWV+dx28Pf9vdOD4zjJD87NP2dxebAxg6gdHJnBQzu4M4P7 dnBjBlftoHt40w6exf+KTv65v/fyxLG8TCwvcyxP5VWqar6+0/bTgSlzB8VmtflfTzFVpHWAYnoq xdobpSTY6cEn0MmQ54II9tv2ctlebQefiTzmyjU9/JUeXhMtu0F3f0WvLonEG7rySFce6ApgMLPO zeCGvnNP35jTg5FA0LyxpDeA8iNdeRBfvhRTY4lmU7+bwZrzRb+Xsn2un/W9WMsX+mu1I9UOZIZl 2WQtuTmWZQDMgoEp4SubIq30EL+OQIDt3sIGVNrQMlfWVsH53WAh5ljTrBcTaX9HD3cEvN3+4yLn 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 SQit0OkibHOaLmhZdgPx0RtO3wWBAW9YmjbWTJG4XIhBIOTm3dls0FscynKW/tp01kJhBSCXMBCs azZEQpehrYpUac0+cDqh7dbrSiD8XbiJisgPJTHhHD0I8+vR2O6EOUye9ID/RFuSHcFc0H5vBwxi 186c7KBqPb3rt/TbV1XXjq5fWXWXlWy7yuM6RjkEwE7w3FgUks/c0jPoXTH4fd6KGqcZchKBDmVU KT2R8tLpRsgs+RQKyIz+2ElEVdbm1MZEEP1nxFWVOc6VOqryOEWK+FwkSdC1JbUWs1CcRUXgAwvl PZJqO2NcZuyDkLCUkDs7X8RSi86v2iDac7yIhx6ETLL4sMvLdGpjbulP26qiTPM6nA+6EtRG+C5k x/YA8YsFl1tqJsyDwOZFf+gTToKGTIPz8HjdmLQJ2+2pM5vjUvKeJiek87Gje5L9DUkhHvyjHcQl dwLdHcTGXVZabi3oIFWOH79RrfdRTz0HVk399RuVaZPmHTDXG2HDbN9lSv+9o7Az9eADGnmkU8v6 75NBPPTLgRkFCkfBDmWuXN5zm9LNv2uVQHoVKmJso0/6HYnWztaZnqgwKn8SS83aCYaQrgApNm43 2OFglNnpt0EOzUe53tQCW3bfrWaM6bXN9K3Vauqp5q8qJjK9+dmV4U8+nbLa1RPZh3HuexKMPhWb iHJkUF7eE9NviE3g7H4LxnpL9xFlCNu0Ila0v3wpVt9neUNojB+M0KrrHWfUdCD8P/uKv5ANCmVu ZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9O YW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3LEJvbGQvRW5jb2RpbmcvV2luQW5z aUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDYgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMjUv V2lkdGhzIDU5IDAgUj4+DQplbmRvYmoNCjYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3Iv Rm9udE5hbWUvQUJDREVFK0NvdXJpZXIjMjBOZXcsQm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAw L0FzY2VudCA4MzMvRGVzY2VudCAtMjA5L0NhcEhlaWdodCA2MzMvQXZnV2lkdGggNjAwL01heFdp ZHRoIDg5NC9Gb250V2VpZ2h0IDcwMC9YSGVpZ2h0IDI1MC9TdGVtViA2MC9Gb250QkJveFsgLTE5 MiAtMjA5IDcwMiA2MzNdIC9Gb250RmlsZTIgNTcgMCBSPj4NCmVuZG9iag0KNyAwIG9iag0KPDwv VHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMi9CYXNlRm9udC9BQkNERUUrQ2FsaWJy aS9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgOCAwIFIvRmlyc3RDaGFy IDMyL0xhc3RDaGFyIDMyL1dpZHRocyA2MCAwIFI+Pg0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBl L0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0Fu Z2xlIDAvQXNjZW50IDc1MC9EZXNjZW50IC0yNTAvQ2FwSGVpZ2h0IDc1MC9BdmdXaWR0aCA1MjEv TWF4V2lkdGggMTc0My9Gb250V2VpZ2h0IDQwMC9YSGVpZ2h0IDI1MC9TdGVtViA1Mi9Gb250QkJv eFsgLTUwMyAtMjUwIDEyNDAgNzUwXSAvRm9udEZpbGUyIDYxIDAgUj4+DQplbmRvYmoNCjkgMCBv YmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1Mx MSAxMSAwIFIvR1MxMiAxMiAwIFI+Pi9Gb250PDwvRjEgNSAwIFIvRjIgNyAwIFIvRjMgMTMgMCBS L0Y0IDE1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9N ZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50cyAxMCAwIFIvR3JvdXA8PC9UeXBlL0dyb3Vw L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0K ZW5kb2JqDQoxMCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNDg5Pj4NCnN0 cmVhbQ0KeJydWm1vGzcS/m7A/2E/3Afprqb5vuQhCC6xHTfXOi1sFbjCvQ+KJDtGHdmQ5eT874/k 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 ou2jYFb3tvPJs4/PdzDw4aZSP/pYhoUbwYsfoxj/DO88gwxviXj6t539GUm1j9z5CQXCvkyH22He 0H57dhyE46ks2tv0mKwBilsfI7c7PdK2MwFKkdqN8TZ1NKc3XksRHbni0k8dheTpKRrMN3jZpwbZ nbg2edinq4AHepVib/KQj+RI7yMkecqnJTaMRlLOd07njd9beQEk8lu2X8P0YwlWnnuf9UtGn4V9 D2f7VETKjSGux/FEum+HgttoRG8wFuKtNH8we3vEzF9+4i4F6S9191fQ7rboL7G75Ly/bLvLk/jl XsZ72V3K7tL0FF72L0P/4l0nSvmXOz1k3CGBj9IOwiRqfXAzeTbO+UdtqYMJifgo1PVpcW8jv1yJ o3Xasj78D7f4j4IjAE/w3OdJWbdS5a0FSjEiLBxOwT9UYmuBGSGaVc4fqnZrgVFuzxwNIL70Ael2 GiwWlx08OcXLy3ozfWnOw45LYCQW5gwLhGtLa6p2Yc6wETcqrV14vvl03IclX/uK8pJ3QMU5hKWn HZ9yI63Ydugi7U7REniJbQeqNKK1iypVu+1ANUXtaIm1WxVZPNz+w/8AxV/Av/ystw5RnIFnexTd VxeQQayhcQsvDteeOVzK2xiUMetwwbgKWOvENgZtmaV5Hda6dhuDthKpURoxPOM8yGfG3aWWDP12 cNBD7YFkncpZ+xPJkbj8adtU8tQfSY6k1B1J1smkx51J3kOnZM7TnSuMpNQdStbJ7MedSt5Dp/TR ZpfNRVL2OJasK/b2umPJUQ/507g4MT8aRiRILSnSUH52lef0Eef/A3JEyEcNCmVuZHN0cmVhbQ0K ZW5kb2JqDQoxMSAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL2NhIDE+Pg0KZW5k b2JqDQoxMiAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2Jq DQoxMyAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMy9CYXNlRm9u dC9BQkNERUUrU2Vnb2UjMjBVSS9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0 b3IgMTQgMCBSL0ZpcnN0Q2hhciA0Ni9MYXN0Q2hhciAxMTQvV2lkdGhzIDYyIDAgUj4+DQplbmRv YmoNCjE0IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStTZWdv ZSMyMFVJL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDEwNzkvRGVzY2VudCAtMjEwL0Nh cEhlaWdodCA3MjgvQXZnV2lkdGggNTM5L01heFdpZHRoIDE5MTUvRm9udFdlaWdodCA0MDAvWEhl aWdodCAyNTAvU3RlbVYgNTMvRm9udEJCb3hbIC00MzIgLTIxMCAxNDgzIDcyOF0gL0ZvbnRGaWxl MiA2MyAwIFI+Pg0KZW5kb2JqDQoxNSAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5cGUvVHlwZTAv QmFzZUZvbnQvQUJDREVFK0NvdXJpZXIjMjBOZXcsQm9sZC9FbmNvZGluZy9JZGVudGl0eS1IL0Rl c2NlbmRhbnRGb250cyAxNiAwIFIvVG9Vbmljb2RlIDU2IDAgUj4+DQplbmRvYmoNCjE2IDAgb2Jq DQpbIDE3IDAgUl0gDQplbmRvYmoNCjE3IDAgb2JqDQo8PC9CYXNlRm9udC9BQkNERUUrQ291cmll ciMyME5ldyxCb2xkL1N1YnR5cGUvQ0lERm9udFR5cGUyL1R5cGUvRm9udC9DSURUb0dJRE1hcC9J ZGVudGl0eS9EVyAxMDAwL0NJRFN5c3RlbUluZm8gMTggMCBSL0ZvbnREZXNjcmlwdG9yIDE5IDAg Ui9XIDU4IDAgUj4+DQplbmRvYmoNCjE4IDAgb2JqDQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1Jl Z2lzdHJ5KEFkb2JlKSAvU3VwcGxlbWVudCAwPj4NCmVuZG9iag0KMTkgMCBvYmoNCjw8L1R5cGUv Rm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0NvdXJpZXIjMjBOZXcsQm9sZC9GbGFncyAz Mi9JdGFsaWNBbmdsZSAwL0FzY2VudCA4MzMvRGVzY2VudCAtMjA5L0NhcEhlaWdodCA2MzMvQXZn V2lkdGggNjAwL01heFdpZHRoIDg5NC9Gb250V2VpZ2h0IDcwMC9YSGVpZ2h0IDI1MC9TdGVtViA2 MC9Gb250QkJveFsgLTE5MiAtMjA5IDcwMiA2MzNdIC9Gb250RmlsZTIgNTcgMCBSPj4NCmVuZG9i ag0KMjAgMCBvYmoNCjw8L0F1dGhvcihNQU4gT0YgR09EKSAvQ3JlYXRvcij+/wBNAGkAYwByAG8A cwBvAGYAdACuACAAVwBvAHIAZAAgADIAMAAxADAAIABUAHIAaQBhAGwpIC9DcmVhdGlvbkRhdGUo RDoyMDEzMTIyOTA5MjkxOC0wOCcwMCcpIC9Nb2REYXRlKEQ6MjAxMzEyMjkwOTI5MTgtMDgnMDAn KSAvUHJvZHVjZXIo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIAAyADAAMQAwACAA VAByAGkAYQBsKSA+Pg0KZW5kb2JqDQoyNyAwIG9iag0KPDwvVHlwZS9PYmpTdG0vTiAzNC9GaXJz dCAyNTUvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA4Mzg+Pg0Kc3RyZWFtDQp4nO1WXWvbMBR9 H+w/3H9g61uCUhhry0ZpKUlhD6MPbqqloUlcXAfaf78jy26dVWy1KIPBIOREss7x/dK94YpK4paU Iu6IaUeiJCENCUaytCQ4Sa2xQ0pgpUiXnIQmrQUJQ4Yzwr4x4Dmy2JElWadIMnJKkOTESgYpAYS4 lMQYxykFtDimiXE8xAuZKHHOAhXOwRbJ8NISaBkpRkwFhJ7GmyANWw0p6BnYjg+zMJJjba0hmMUZ 18Q5PgxrgUcghS2J9wpYX8Lhg4PiIpBKmhXz4qK4fLr3xbxtdov2eO03xel3PILWFRUXSxLh3OHh xw9voMEnQrTIkCU4AxW4AOthOGyEufAcTsNfR7zsDObRTOLIhZ7+RoQVieQxgyxkLngpQ9KQMKQm JNCFBCE5SEwIuwyZQBIQf4QeUUfAVRdmBAvBDaHVpBBolIhD8kkz0pyQfS1Jw0GUgiFtSbvpFpuS DEMNkREZZElGkckIVJfRVwmKOm6Czn5GM/gvJTCdPNRMBrMvsgymjkWWweyrcjpzKOMMZl/3Gcz+ okxnDjcrg9lfxQxmf3enM4fLnsHsu0MGM7STDNqv/We6xKuGNe4/z+0Es4wMJhqmWUb+MaIsxxzM YErCXLIZ+ce4sxZDdzrTleQwpzk5QU5iYJPThKnq0BEz5FiZjhgbSFXTJptD+A8yC8Org44d2kUH LAKPICNEAm53ByZCpItIl5EuI11GuhQRooqMKjKqyKgio4qMKiqqqKiiooqKKiqqqE7linp3R+5d Nt7P6rotZvXan1X3YcCHQCAMfts9Da047IQYyCgzenruH9tT/0S8lz6B1rZufXEevo63Ny+LSxy9 rh+LuV+0xRdf3fgm/g6c4ffX7Xq19fPbKlgYNj5toVC1q3rbr5t29aPCj271rW7uruv6rjiqF7sN bOp2Hm69b2Mmz6pFU4/Wn2/xPVofrap1vRxtzNerGz86G9+DY8um2hQnq+Wu8b2v57vNQxjUPCaH hRnwHOaXitkH+4+A+w9vhqENJIG9hisK9TG0i/cB+WdQvwGdApMCmwKXgKG77QNLAU+BSIFMgUqB ToFJgd0D91YY+u7fBpYCngKRAvkuoIY6/gnmAIxSDQplbmRzdHJlYW0NCmVuZG9iag0KNTYgMCBv YmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzAyPj4NCnN0cmVhbQ0KeJxlUt1ugyAY vecpuOwuGhG1XRNj0tks8WI/mdsDKHx2JBMJ0gvffvDRdWtHoub4nR88mNTNodHK0eTVTqIFRwel pYV5OlkBtIej0iTNqVTCnRHexdgZknhxu8wOxkYPEylLmrz54ezsQld7OfVwR5IXK8EqfaSrj7r1 uD0Z8wUjaEcZqSoqYfBGT5157kagCcrWjfRz5Za11/wy3hcDlCNO42bEJGE2nQDb6SOQkvlV0fLR r4qAljfzLKr6QXx2FtmZZzPGWRVQniPapBFtIsrQ6axJfxwugfk90vJdZBdndpynt4F5HWm7v6b8 n2nBkFbwyD7ghooivtziY8uvkvhtUrGPtC1qH8LHcJZe5YaCwjle2hcna33xeNjYeOhaabj8D2Yy QRWuby22rIYNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1NyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCA0OTg5NC9MZW5ndGgxIDk1NDEyPj4NCnN0cmVhbQ0KeJzsfAl4VEW69lfndPaE NFtICKS701nIRkd2mkA6GwECdsgCadYOEBYFGlkF2ZwRl7gQR1FkVKKDCjIDJ4FxEgcRxw1URmQR dNTG0Rn3ARTckJz/ra+7Q4Lyy70zz33u81xP5X2rTi3fV+tXVScBEkTUGWSg7MLykcW3j4tVSLhi ieIfLC4sGt4lPKqSREQFkTK6uNRZ7g2/cCuJqHqigQ8Xl1fmR8Zs+xWJIgeEvOkst/Uxbl91F5Fo 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 A5XPjm5vnZLT0TnFtf+69PcrW2UOQkH3Dv1ieSl2n3FO6nOx2f5DY4petSsqWJAf1udJtP9yf/Ro ZmHWaavNdEEVo8yzF2x+qv7D44dL++VNueI7ueHsuO0+CSfHrnZ8f/XemVj9qWPzy66hbV7PX6a+ NjF1J79Unzm9aW+Xvpt8ppToGR3s0utI/vAmvXvkbtu0bbLXoWfYJHXIrydLml79vuzatbyyF1dP G61LOjPtRpuNPjmpNYsbXvSiUd7ighFxjuNehEdPWdNpm+/ZyIntR1Wt/Wv92dlphjldJ6xz27Rw yeGVF+w27lRVGW1nbuS6PaS0SUmE6sY0l9gxu5OuP1+28ujwpskDjJmPGcJ8TJTGx3STnEdAhCTX xRFhfuYropo7HB/maTw9PTy96tThDkfFwg92WJsfqkaM/I/0zQgMh5muLKhNcEh5cfyF4n/qe/KT 14+7Y7Vg9IGUzZHhuG7Due/nDMmq3txhzbIx7R4+al7vQGdCO+RuOkSKTrUa+E3S6HW3Dl/teWfR +xTn6T0XnB2P/VX7Xx7cerCetTzMv01ludHr9VV6rXCyeks6jL63r7WevfeyX4661drY9Ig9WXbm 9imXDgeqDTlava7ekfnti7Y9dfgl13GxUfWCt8f3dPKLbnjArSX9fvDoJ2Mf981v1unGonVGz9u/ VZRctzt1Jysic0ntmi7DOlRrH2fo6f+4R3yfJz5zH4s/ZS28PFvPxLiBZez1wa2bm5dsmXi8f8Lc PDS3ZtNf227uVDooYOQ999Qa27ocqdLN5afMZgb74pp+2OC5anF1hysWd09pfM8r1YhfP+97PqLY 8UQ/11b5b2/Zv+lrM6fSicqv9y4dD8tnXYGjngFZbzj4DWtHmaXKYvjnYe/PC9jKGqrqq3yzvbPr pNfulZKSVK9WrejkePeE8jV0j+6TUCupdyyX1tL86nu/Ws3aMcNzZyJVi/Iesrikgaqeyqf8WCWm u2kUDhw48HMKuyfraEr5DaDA+zSrfiw6P/5Gv4Q9c84mGI6tv79FvyGKo27Xvb+f57Ug3/Hojqvn wgdX7G3W1k6I3pL8Un5j/w9tXS1cik/c+dH1mKXRSbO+U6s/CMt/fWafUa3V3WsmBAVUD0se1abR yTjrJlHLB4dPfnJg4PjDoov7vANza9za4qp/+cGs67eGTIowGdtu4eXINgNn943M7ew79dRKU1ty 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 /uBjtq+EP/e0bJtSumWrzkHT6Z8tq6YeefbQ741bnccZcd93R488bVzSetn1f+8FBU2u9QLTytZK 8rarVV7nXtdlqPbymPOJ20HMbIqGFxlP/at32Sj+28nTsNzYacrCJiZ5gyYmaUTcsBk2MfEAhTjo njTRq0uUSpwdmjQXxBpIIKdAbsTUECPQTrgMqyE/sLK1BM19ALGZiVEURgLcF/lAXTjopvzJ/2qT curDBGa4aWWhlVWgJDK18Fp63Jp4sZKI0rTVLOJHbhSEfjBWXLAv/2bP+ZmzxCesO+x+MVzjpvS2 7f9Uip+HxB455iil7XrKzrpxb3xlugzDnl3VzNNZHto/jn+rlansy5pqsFl1oVcd381bO034ko/8 9r957rfDvJAelYMR+hbfH23IdJQ9HNNy9VX/5prnPGpFDHULgxVsa6Xm/LskH+qTPa1Wus7twsS+ VHWt6w8lCvgeH76/RTNI71pgrEQLy4ZvF3/485ytuvghdccepWmLTc5+s9j/64vu9Yv7Oo8y27mf PFhQuH7Kn9XXd87dMU9id86NSYdqfBK3zHx84rCahGK5e9cT9+PiyYcr1yRP2vOSpeJM0qs51V8A t/PgqQ0KZW5kc3RyZWFtDQplbmRvYmoNCjU4IDAgb2JqDQpbIDBbIDYwMF0gIDNbIDYwMF0gIDdb IDYwMF0gIDlbIDYwMCA2MDAgNjAwIDYwMF0gIDE0WyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0gIDI3WyA2MDAgNjAwIDYwMF0gIDM2WyA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0gIDQ2WyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0g IDUzWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwXSAgNjhbIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0gIDk0WyA2MDBdICA5NlsgNjAwXSAgMTgyWyA2 MDBdIF0gDQplbmRvYmoNCjU5IDAgb2JqDQpbIDYwMCAwIDAgMCA2MDAgMCA2MDAgNjAwIDYwMCA2 MDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDYw MCA2MDAgNjAwIDAgMCAwIDAgMCAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDAgMCAwIDAgMCAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDAgNjAwIDAgNjAwXSANCmVuZG9iag0KNjAgMCBvYmoNClsgMjI2XSANCmVuZG9iag0KNjEg MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcwNzcvTGVuZ3RoMSAxNjk0NzY+ Pg0Kc3RyZWFtDQp4nOxdCXiU1bk+5599SyYhCQkDzB+GhEBCwm5YhIFs7FsYTAAhk8kkGcnmZEIA QSO40IiKu6hV1KpVXIbBJe4obrVutbZarRZb22oVq3WpRSH3Pf83JwRcHu9ze2t775yfd973fOc7 33/2nLQjMM4YS8eHni0urZxT8WXnp8OZsnETY65tZbNKlxWNSr6NsYuqGONPlc2aX3JVY7mDsQvz GFPGVJSWlf95/ydfMWXddsZ0H1YsXlQZqpu6hbFLVMavsVdU+mY9+dYfeplSVMBYxepFlUXj/vHO /esR6zW8tSbQ7G9Lu23A+4yNiCLe3YF1ETV69RMvM3bSDsYMg+vbGpo//3yBnbFRdYxZBjX429vY YObB+zNR39nQtKG+4PefX8LYqtvh/3Jj0F/3p5wjJyL+KpRPaoTBcYfxdeQvRX54Y3NkfdYW3RS8 q5ixnHVrg+EWPoyfw1jXMyjPbGoN+BeetOAwY7VdjA0tb/avb8sePRxt4T0oV1v8zcHcdUs+hf8B xpIy2lrbI70uhvoXfCHK28LBtrV3KUcYG4/6w51MjK3h2p7l+7sb1iRP+4xlmZlID76/6TnBTw67 cuOXhw6fZ/nAdC+yFqYwSqhnZEcYf8K668tDh3ZZPtAi9Uu6ncKSPIwtYgbNoDAnK2JBxlJ24L2a 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 LAbMJDFDCUkYJow3IQm5N2Oknvdzb4YQ0D61/+f5v+9zns/cucs5c37f7+8sN/K0DpEkOpnXW65Y yZ4LRGeKMik9faLoPX3ajReLobdMn3Kxkf/mM8a80050Mc8UfqF9a+s24RLJIjV2FifczE7k6R0L Fi8QW8zP7ebn++bnh+bnp+bnrnvZrIh88/OA+VlkfpaZn0fNz+Pmp2qsm6LB+LTYzc+u5udg8/Ma 83Om+Tnv/nvvv9ey2vxcZ34+bX5uND9fMz+3mp87WmeP//Rp+ZmfTpRU0MCOwk5h/LXn/+6aFR8S /+tjkrjIfO823sweEs+JzWKn2CUOiUrRYLGKeDNSZyxaVRh/81Ko19H8f31jbrGMajk+uq7l+Pto mzrkW+3mc84t7tPnnif1Pfe8ffK55x1ePve8zw/nnvc77/6Arueejxgq4q1tzxvb3LcLyw1XnXs+ 9XGOCeR0P5Fu/J2QOszx1qHWdLHGusVaIt5Qfq/8XhTZltjeFIG4r+2PWpSEmxN+a/ko4RGXxZLv bue+znqt+1b3a9YViXMT51n/nrgm8UlrXpI1yWk9lNSU1GT9hqVVN7SxFyd++JOlkFKWeKxNicRK 4U+UxqSeraUfZRRlAmWeWTadXxILkzYn/aXdxlh5o03ZbpT24idLQvv01vJ4+w2tRW8pyd1/ogym jOj4cpuypaWYd84rHXd2zG8tBzodpRw3SmfbT5XkwZ2TO/fr8nibssEsu36yFHZpPlNSOqZ0bS0T YmXyT5Z0s8yMHc8t2bFP47ndZilqLS21j6TUpQ5InZv6Wuo2o5zfeuqOnyotraf+LbUyVhrPFuNX UpvN38o2uHBqr1GtZWqv6a1lbqzMo2T3mtd7GGV8n8F9JvSax+fgPrv65l9SbJbGfrMpC/r3pQzq X9k/CpX9fxiQP/A1o/SvHPjpwMjAyCDboKRBHQd9TCkaPJaSPnj2kFdjxX9Z9vC+w6tHPHfFCMrY kSkjZ4/MvHJnrHx65e4ri0YNoFw5at3ow2PsZnlmzC6znB57xdh3Y+XDMac5f3dsnXlWN846zjr2 3XGDxj89/tOrB183i3LkhnvGPNPyNMe6lqcmjTWemzR1cs/JQyePnbxtSl+zpE+ZZ5bMKeumvMpn 5pQCytGpK6dmTz1y4wLKxrQMnkpPO5B2YEoBn4eNb5TKNDWteVq2WbZO22eWI9NUODJNT7dN07mv ps9OP5xeedMSynPTL+a5rdP0ljvTV07Tpx+bXjsjfebuWbN+k/yb7r/pe7ft7tl3l97dfOZ4zyDK zvnt5vdckLngoQW5CyoXqAv0hbaFwxZOWHjXwgULVy58dOHGhe8u/HBh3sJDixYsem7RtkUNi8Xi 5MUTF89Z/Oni4iUjlsxZ8urSmUsfXepf2rjMvmzQsuuXvbvs+PIJy5szu2den5mRuSjz1cwdmaUr eq749YoPV5SuaF7pXtl55ZUrr1k5d+XWlaWrBqyasOq2VZtWbV91eJX+wPgHVj7waZY9a3zWoqz3 s3ZnnV7ddfU9q7euVteMWpO5Zkd2+r+Zqz48fz46d7bJXna2GPNI9htnS8sM8m/G3uTzR9y546Ql 039y1jkz87Qp584d2bvPFmN2yC46W1rmBWMObbc9ZXeXDczDZWPrmDXNOdg8Mt+2T2d+3ZS0ud3G xMLWOZNn2+u95hp1Ez9M2nR27mxRidl5gjn/tjzVM2nzGfWMq8ZcbD5bZtw3n48pSLsfJh5jJt9M jTKztUJ6t5FjmVnOrg6R81aFCW3WgbMrwWaj3z+a/bf/aPZPiM35j5vzvTnLm+1QO2kC3zedmQnx Y1vML+amlvmnZX6L+cicyAxouDa3dXY84yhzXMrk7EqjxlmPe03PrsyupDXjqUbupadW9pr+45xg HixqM6P+xDzbdl798Zwam7l3m9nUMotOPTN/GvM6V/jVbDV1G1emp6RfMSLtQGdbyzpmHlmzujR3 OkpWJZ9Zfc6sKsndO9vOrkAtWWmsbebTNuMJ6u7qnGzcMa4YTxnXk7snFp7J1JSuyd1ZAZON+sb3 lqtn19G2K6nRF3PVjK2bbVbOZFo4f53ccM7qWBhbGTue6T33m1t+3fj9KemdjqZMoD/nqG+oZmiM U21G7BmNW0aioWZLpvSai96TDTcNJVLSO75s+r3N8KbNqB6VuoNYz6ywRS2tZqsp2dlqSzF+wTj2 mm64YnxryTTjmK32Gdx7WAstK1zvYeaq1KYYK1zL6mauj/+PxVxT25QfP2GutG1KbMVtLT+uYay0 /10x1+KfXVpX7H9TzlfKKK3r+L8p5sr+s4u52/iZ5Xx1zD1Km/Jj/cy9S5ti5H2L0/9d+XHL/7l3 P6+06GzsXZI2j7FP7jnmdGKZsesxyzPmFbux0zHPnpnc09gDxe5R2EFdaeyaWq4ac7/xzSjm7miW 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 Iz8e+fHIj0d+PPLjkR+PqvCoCo+q8KgKj6rwqAqPqvCoihGiMkJURojKCFEZISojRGWEqIwQlRGi MkJURojKCFEZISojRGWEqIwQFY/9eOzHYz8e+/HYj8d+PPbjsR+PA3gcwOMAHgfwOIDHATwO4HEA jwN4HMDjAB4H8DiAxwE8DuBxAI8DeBzA4wAeB/A4gMcBPA4ILw6GcDCEg6fwexcunsS5Mpz7Fudq ca4W52pxrhb/3fi/E/dU3FOtT3DtKZxeL/+Eg9U4WI2D1ThYjYM1OFhPnvwdF8txsRwXVVxUcVHF RRUXVVxUcTGEiyFcDOFiCBdDuBjCxRAuhnAxhIshXAzhYggXQ7gYwsUQLoZwMYSLIVwM4WIIF0O4 GMLFEC6GcDGES7W4VItLtbhUi0u1uFSLS7W4VItLtbhUi0u1uFSLS7W4VItLtbhUi0sqLqm4pOKS iksqLqm4pOKSikvluFSOS+W4VI5L5bhUjkvluFSOS+W4VI5L5bhUjkvluFSOS+W4VI5L5bhUjkvl uFSOS+W4VI5L5WIoLum4pJujscWFRlyox4V6HNBxwHhvqkfdetStR9161K1H3XrU1VFXR10ddXXU 1VFXR10ddXXU1VFXR10ddXXU1VFXR10ddXXU1VFXR10ddXXU1VFXR10ddXXU1VGnHnXqUacedepR px516lGnHnXqxQBmhtPMDKcZ/SrreYL1CaJ4kijM3vN9I2xivX+Jdbsbu7rucCFcBD3gYvBAT5jL M3fCXXA33APsING6Ca2b0LoJrZvQugmtm9C6Ca2b0LoJrZvQugmtm9C6Ca2b0LoJrZvQukncg9bV aF1Nj1V6rDIKIoyCCKMgwiiImPqfGQHo/qPMZwdvNf6y8e+zvRo/qvGjGj+q8aMaP6rxoxo/qvGj Gj+q8aMaP6rxoxo/qvGjGj+q8aMaP6rxoxo/qvGjGj+q8aMaP6rxoxoFVRRUUVBFQRUFVRRUUVBF QZXREGE0RBgNEUZDhNEQYTREGA0RRkOE0RBhNEQYDRFGQ4TREGE0RBgNEUZD5GeMhggORXAogkMR HIrgUASHIjgUwaEIDkVwKIJDERyK4FAEhyI4FMGhCA5FcCiCQxEciuBQBIci5hpfZ/5XyCvwSsUr ldlGZbYJob2K9obGKhqraKyisYrGKhqraKyisYrGKhqraKyisYrGKhqraKyisYrGKhqraKyisYrG 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 RTk+9boM9wyfekyGWypzLOcfs/hHC/9YQ0Eu4gcv4hUK7c3wHEuvkx3q+cJnRfMm0byJP7zDqs2s WseqdXziWZF7Ncu+JVI3sexbLPsW39jMNzaIxg2icYNo3MBHPshHukTZgihb4Csr+cl6kbVWZK0V WWv5zDLRdKUomhc5G0TEehGxntXXsfo61l4nAtaLgPUiYL0IWC8C1rPsOlGvXtSrF+nqRbS8KFYQ xQqiWF4UqxXFakWwvAi2UgRbKVqtFK0KolNBdCqITgXRqVZ0qhWdakWnlaJSQVQq9ESlWtGoIBrl RaMGq/OWyNIksjRZpbes0Fuiy2rRZbUIslq0aBItmkSGJpGhSWRoslJ1VqrOStWJCqtFgCYrVWel 6uz8Jiv1lp1fb8fX2/H1dny9HV9vx9fb8bV2e63dXrDbC3Z7wW6vtdsLdnuTVayzy5vs8ia7vMku b1ITb6KOi7r61LAv+phdVqyzfmBHTbejpttRr1rnKXbNbus627rOt67z7ZZW67rWuj5lTZ+ypk/Z Ebvsgl3WYoq1mGIH7LIeU3j8Ll4+nZdP5+XTrcUUXr6Ll+/i5dN5+XTevJu9nmKnp3jzbrZ6iq3W stVaXr2bvdby5N3sM5995rPPfPZZy5t38+bdbDSfjeazz1O8dxfvnc5zd5vzfHN8LdzCY7vMYJGz 7ca+IzzON1dHA81su7P1ZtZiZi1mttWsasWBVjOrNbNao9tudLVGV2t0242u1qi2G9F2I2oxohYj ajGa7Uaz3WhajKbFaGqNoljLtkRH6GmHnlbqab2e1utpExsWa9Q6vXXqrU5vdXrbobc6vdXpbYfe 6thiG1ts0+sOttim5x16Xq/n9Xpezxbb9L5D7zv0vl7v6/Vep/difbhejbBavNwelpj1Ej136rFJ LHtexF0h4hbrg2dLETflqc6eGqq15/8wfSRxYXRKyXLN7jS501w6K9Z2e0t2rOh5a5uzNu0v134H NZynadtYeI95ZlgiQgVNmkIag5wPwcywVRurSytT7+lGWaQ4xs5oiDbecOc59tumrRc8seFv9X0p 30TiSxqVyIQXzOp8s/kuO25jx9XsuJodi/X1avbbZgwvGMMbxvCGMbzBln9fdx+Kw95Xfw/y/GB7 cYjjTM8/6Fqx5i4z5zjqb3wdxtRhTJuNaXPPNzjtRt9iXO3G1W4c7cbRbgzt+u7Qd4e+O/S7Wb+b 9btZf5v1t1lf7frp0MfmaLDWF5j9n8z8rfdF2Rw7P6mnnaWomin9S5Gf96zlSrMfUfwXPX+LPmb8 ll4X6HWBXhf8u5GnGGkGea4YZYY4FiPGTM/+Y8SoKmXR7XTAbrV1yrpeEK7s+dcdS/T8zdK/GD3F uFd78lmrVqsuWG78L7HS3PdFkGJmyLPUTGtdzLsbWGsma800n5e0epPWnrKKtbTbchacyYIzrWQt K860I/J2RN6K1prfS3ZF3hxXm+Nqc1xtVWtpsOU02HJ6a/k/RI68Va61yrX/FjkGaWNwmGnuL5n3 aqtcW4oeh7J6I6s3lr6N2CGK7A6vGfUWlm804i1GXPwOZwtrN7J2o1FuMcItrNzIyo2s3MjKjazc yMqNLNyopy0s3Mi6jazbyLqNrNtoV+0QdffIfryHh+0IL0XlsuAeSml3lKBG3nTW4WxjNMhZrIbZ RZ/E9EksU3bJlF0yZVfPd4StNMtWOn6XjNcq07XKdF0yXRe9vku2a6XRd9EVMU2+S3brkt26ZLcu unsX3b1LZuuS2brojlhma6U9YpmmS6bpkl26oiq5fLeRPCB3x3J2Uddt0GtsBR+xgo+UokqVbN+Z 6CuSfCi0mUGLp9oSH4t6izBqnuhk/eSjpHbWaaf4neuu4gzMOFv6BqG1+DxL9LWfPhZ2uV78VtYT 3lsTHeysOPtOs+80+87SzC+iFS4Ny943804z7yzNus6xHkvRiCaYnZl1mlmnmXVGR+ptMfvuYN8V 7Lvi/ZW5vtv0sp5td+hhvR7W/1s1/nTpG7/1bLuDbVew7Y6/q9BXOM+XvgUsVepsu0Lv69l2xfur 9ajMzHdEgxM1PvUND1JLMbUUU0uxMf3RmP7IWjsophaKqfjt2hZ22kwZxVZgnxV4wgo8oY7so44s /uvIouppoXpajOuP1E0LddNC3bRQNy3UTAs102I8f6RkWqiY2Jj+SFG0UBQtFEULNdESpY3m93re rsddetyut916e0dv70RHu/suu200xpXGuNKTO3u+w/6/K/Qxyu4Mfv0ZdpgVNrLhHjbc82+r9LRr 850/77iA0nrT8f2rtsJ5Hn9bvVWeafb8mrDy71axH6s1s1ozqzWzVDNLNRv3X3u+k2pmkWYWaWaN ZtZoZo1m1mhmjWbWaGaJZpZoZoVmVmhmhWZWaI4Gmucqc1xljqvMsd0cc+bYYI4N5thAqRa9rsF8 GqjKVqqy1VxWUZZFD2wwlwZzaaAkW82jwTwazGOVOawyhwZzaDCHhtL/ojw68e3o6Gh6dHm4L/oe vo+rw0PRhHBHNBHXYRKux9owPVqH9djmmd3h9mgP9mIf9ofby44LdWXH4wSciA/iQ/gwPoKTcDJO wUdxKj6G0/BxfAKnYyjOwCdxJj6FYfg0PoPP4nMYjs/jLHwBZ+OL+Cd8CefgXJyHL2NE1L/s5fBS 2Svh2bJX8Rpexxt4Mywqewtv4894JyxKPhjuSD6Eh1HrfDGWwFyT3Qjh9ooDwn0VfcL0Ciq7gsqu oLIr+uMQDEBzuKOizTNbsDXckToep2FUuC81Gj/EjzAuPJS6Buyeui3UperCopSKJz0kLEofi+PC s+njcQo+6vyTuChMT1+MS8Pt6WmYhWbn72INrFm6JTyUbkW7e53Od4bbK8tDXWUCSVQgBUqxklKs rEIG1ciiBr3QGwfgQPTBQTg9LKocim/7/H3HKY6POs4Jz1buCHVV2qo6iD6+JOoTFkcHQfSLDkY/ 9MexOA7H4wSciC/hHJyL8/BlfAXn46v4Gr6Bb+Ly8ADPfYDnPsBzr4/GhpnROFyDa/FjTAhzePMc 3jyHN8/hzXOSvwqLkzfhZtyCW3EbbscduBN34W7cg3vxoPcewsNhjlV/oGJFWFzRhFX4K5pd3+C4 EW3ub8FW1/aHxakU0qhCBodgAI7BELBDih14x5zUqY6nOZ7h+AVcgkvxbVyGUeEBnvMAz3mA5zzA c67nOdenzDdlvjxoTuWPiraJ7gh10Z24C3fjHtyL2XgUc/AYHsef8Q7+glosxhLUoR5L0YAcliGP teFpMeFpMeFpMeHtaDs6sQM70YXdYa44MVecmCtOzBUn5iY3hbpkC1qxGW1QnSRjtGMrOrANKpZk J4rvdSOEufbb02mxIG3vp+31tL2ets/T54W30193vAAXeeZiXBrmpn/gfCzG4Vr8GNfhBtwI+y3N Rmk2SrNRmo3sp7np3zjOcpzruADskGaHNDuk2cFee9pee9pee9pee9pee9teezu9GW1o926n6+xh 380t+3CUjA6MKpBCGpWoQvHXu6uRLf7EJHphaNQvOgOXh4l8fCIfn8jHx/HxkXx8JB8fycdH8vGR 0XgtTAij+flofj6an4/m56Ojn0a9o5/h57gBN+IX+CV+hZtwM56PDo9ewNowwYpOsKITrOjdVnSO FZ1jRedY0TlWdE5U/AXp3WGSVZ1kVSdZ1UlWdVLZ/WFZ2Qw8gF/jQTyEh/EbPIJZ+C1m41HMwWN4 HE/gd3gST2Eu5uH3eBrz8YewrPykqHf5yVG/8lMdh+HsMLH8i+Hq8i/hfOcjwtTykWFU+Q8wKoyi 2b6UuDiMpdu+lPi249jw58S4UJ+oiyoS9VHfRAPVu0xVvjzKJNaGOYl1tMj66LjEBseNxd8Gctwc 9UmOjQ5MjsM1uBY/xnhMwERch0m4HpPxYBgtXowWL0Ynl0a9kw3IYRmWYwXyWIkCGtGEVWBP3j6J t08SayZWHBiW8foJYszois1RRnyZKL5MFF9GV+yNDkwlwLdSfXAQjsbxYXTqBMeT8dGon5gyOvVx n0eFieLHRPFjovgxUfwYJ36MEz9Gih8jU3wpNQF8KXVfWJa6v/Q/6JelP4DDcQSOxMk4L8yx0ybY aRPstEnpMVHv9FWYgqm4A9Ncf9Dx4ehwu2lS+gmfmz3/LtaAz9k5d9s5d9s5c+ycOektUVU6Rrvn O93nf3bQpHRX1Luyb1hWeTD6oT8OwQAMxKE4DMZaaayVxlpprJWDcBSOxmAcg+9q63J8D5OcX4/J YVlVWViWuTBcnbkIk8KozGTYNxn7JmPfZOybjH2TsW8yt+BW3IbbYb6ZO3EX7sY9uBfTMB334X7M wAOYiV+DfTIP4WH8Bo9gVtS7eiKuwyRcj8lg22q2rf4J7O9q+7va/q62v6uNs9o4q42z2jirjbPa OKuNs9o4q42z2jirjbHaGKuNsdoYq42x2hirjbHaGLMnRr17VSGD6uJfNUkssVPWikbFT8XfHulf fq1oli39dYEU0qhE8a8oZlCNbOkX7LOiWZYCKFAABQqgQAEUKIACBVCgAAoUQIECKFAABQqgIPId JPIdRAm0UgKtlEArJdBKCbRSAq2UQCsl0EoJtFICrZRAqyh5hSh5hSh5RfSvIY5GYCR+gFEYjR/i R7gSY3AVrg4jRNQrRdQrRdQrRdQrRdQrRdPhoulw0XS4aDpcNB0ummZE04xomhFNM6JpRjTNiKYZ 0TQjmmZE04y82yTvNsm7TfJuk7zbJO82ybtNUfH7jjl4DI/j+WiAyDtA/o3l31j+jeXfWP6N5d9Y /o3l31j+jeXfWP6N5d9Y/o1F6zGi9RjReky0US27CS1oxWa0YQtitGMrOrAtTBPZZ4vss0X22SL7 bJF9tqg+XlQfL6qPF9XHi+rjafo8TZ+n6fM0fZ6mz9P0eZo+T9Pnafo8TZ+n6fM0fZ6mz9P0eZo+ T9Pnafo8TZ+n6fM0fZ6mz9P0eZo+T9Pnafo8TZ+n6fM0fZ6mz9P0eZo+T9Pnafo8TZ+n6fM0fZ6m z9P0eZo+T9Pny74S9Ss7H1/F1/B13B9yMlFOJsrJRDmZKCcT5WSinEyUk4lyMlFOJsrJRDmZKCcT 5WSinEyUk4lyMlFOJsrJRDmZKCcT5WSinEyUk4lyMlFOLTFfLbFQLbFQLbFQLbFQLbFQLTFfLTFf LTFfLTFfLTG/7C9RpqwWi7EkyshiWVksK4tly4cW/4+q4+cczw6TZbPzZLPzStns4tBWfjlGyG7v y2rlo0ObzHamzDZSZjtTZhupFr8tcXV4MrEgvJp4MeqVeEX2W6Ker1enN0T9ZblWWS6RWKG+fy/T Vch0g0u/Mdnq+maZZ2yUleWyslxWlsvKcllZLivLZWW5rCyXleWyslxWlstS0q2UdCsl3UpJt1LS rZR0KyXdSkm3UtKtlHQrJd1KSbdS0q3JaSFOTsd9uB8z8ABm4td4MAyXOYfLnMPVXfPVXfPVXfNl 0YwsmpFFM7JoRhbNyKIZWTQji2Zk0YwsmpFFM7Johs6M6cyYzozpzJjOjOnMmM6M6cyYzozpzJjO jOnMmM6MkztCW3InurALu7EHe7EP9oTMPF5mHi8zXyEz52TmMeq/vPovr/7Lq//y6r+8+i+vSiio EgqqhFZVQkEGH16xLsQqhYJKoSCTXyGTX1FhTBXGJKMPl9GzqoZCRbfzEOJUhDKUIxFlZfqsiqKg oiioKAoqioLMn5X5syqLgsqikDrMsx/A0a4d43wIxFpVRoEyGE4ZZFMnuc8HqYODVB0FCmE4hZBV eRRUHgWVR0HlUVB5FFQeBcrhCsrhCsrhCsrhipQ4mhJHU+Jo6mqMxbgwgpoYQU1cSU1cSUUMV8/m KYkcJZFL/br0i0z9UvPwh9KvMvVLveFYF+ZTGbmUtVT35lNdUT+KI0dx5CiOHMWRUwvPVwvPVwsv VAsvpEBy6uGF6uH56TOijJp4vrogVhfE6oJYXRCrC5qolNnqglhdEFMrY6iVMelvhbb0Jbg0jFcf xOlRPttT6R/iR7gSY7R5FcxL7dCkdojVDrHaIaZwMhRORg0RqyHi9K88f1PpVwVjqiejnojVE7F6 IlZPxFTQeCooQwUNUFfElNB4SiijtojVFrHaIlZbxGqLWG0RU0hjKKQxFNIYCmlMep2212MDxPq0 WE81TaOaplFNs6mm2dTSeGppDLU0m1oaTy1l1Pp5tX5erZ9X6+fV+nm1fl6tn1fr59X6ebV+Xq2f V+vn1fp5tX5erZ9X6+fV+nm1fp7qylFdOaorR3XlqK4c1ZWjunJUV47qylFdOaorR3XlqK4c1ZWj unJUV47qylFducpTjOmjOD3MrxyKb2v7u84vx/fwfdeucPxXjMBI/Ci0Umg5Ci1HoeUqp3jnNtcf 9eycsLDyMZ8fx46Qr4qifhRcrsrcqg4K86sOjjKZr4W1ma/jG7gwnEfZnZf5ls8/Dm2Z8ZiIvym9 qT7/HDdGWYovS/FlKb4sxZel+LIUX5biy1J8WYovS/FlKb4sxZel+LIUX5biy1J8WYovS/FlKb4s xZel+LIUX5biy1J8WYovS/FlKb4sxZel+LL/HxVf9u8U38HRreGTZZdG55ZdFn2t7DvRj8v+Jfp8 2XejT5ZdHv1z+dnRheUjom8kLgifTVwYPpN4IcxOvBjOTawJb9OGfRMiXGJDuCOxKbyZaIkOTbSq tzaHndER0a3dr0VPhKXR62Gp1j/V82uwp2n9RK2fqPVPl40IO+XW9XpRzanKLghD9XKmXsYlFoYF iUV4sbst8XJ4Ro5bkXg1vJF4Ldyq95/peVdifdio96F6v03vCb3/Wu+vRZWJxWFWos6YVPKJpeG7 iYbwfCLnreWhUVZcRac+Ef5kbH/y5DflzsWenubpiYml3d2eftjTX5RHn/HGtd64v/Tbjh8x2kmy +Qdk7y+WnyuTjwgjyn8YJcofp5NfC/9S/maYXr46+lj5Dhm5b9Q78ZHw28TCKCtLf8QMfq+nN4t/ qTyxVK25LPxBlq7QercZ5WTqiT2ZOtFTkybMbGOixaxaXd8ctpT9c5QMz0cVSCGNSlQhg2pkUYNe 6B0WRAdgaGiMzsBPw7zoZ/g5bsCN+AV+iV/hJtyMW9nw+VAfvRDqy8pDY1kCSVQghTQqUYUMqlGD A3Ag+uAg9MXB6If+OAQDcDiOwJEYhKNwNAbjGAzBsfhKWFV2Pr6Kr+HrmITrMRlTMBU/wU/xM/wc N+BG/AK3h5Vld+BO3IW7cQ/uxbSwsvykMK/8VAzD+eG58l+GQvmvQoGXX2BV2vjZPj42z0q08bEv 87F9iZ3dmxJddsSukE7s7u5K7OluTOwNqcS+7o2J/WFYotv1EAYkK7o3JVPhs8l0SCcru7uSVd2N yUxIJau7NyazYViyxvVenhsbnk+OwzW4Fj/GeEzARFyHSbgek/Gb0Jh8BLPwW8zGo5iDx/A4nsDv 8CSewlzMw+/xNObjD3gGz4VVyefxAhZgIRbhRbyEl/EKXsVreB1Lw7xkA3JYhuVYgTxWooBGNGFV mFexNzyfSoD/pirCglQfx4NwNE7AyfhoaEx93PHmsCp1L6Y7N8/Ub302n5T5pMwnZT6pua7Nw9OY j2fxvOsvYAEWwthTxp76s8/v4C8+12IxlmA5VoSVqYJ7G7EZHdiG7ejEDnSFVele6I0DcCAOCSvT AzAQh+IwnBoa0x/HmDAvfRWmYCruwIN4ONSnn3DsCvMqjw2rKk8MjZUfdjzJ8Tx82edvhpWV33X/ cnwPv3R9uuv34X7MwBPYG1ZWRWFV1YGO9leVfVU1EIeFxsx3QyEzEqPwQ1yJsbDfM/Z7xn7P2O8Z +z1jv2duwa24DbfDeDN34i7cjXtwL6ZhOu7D/ZiBBzATv4Y5Zh7Cw/gNHsGsMK/6n0Kh+ks4B+fi PHwZX8H5mBieq74Ok3A9JmMKpuIn+Cl+hp/jBtyIX+CX+BVuws24BbfiNtyOO3EX7sY9uBfTMB33 heeyJ4Z5varCc70yqA7PRUm5Yp7I35pYFn1YXN4X3RNNCDOiibgOk3A9doeC+rmgfi6onwvq54L6 OVY/x+rnWP0cq59j9XOsfo7Vz7H6OVY/x+rnWP0cq59j9XOsfo7Vz7H6OVY/x+rnWP0cq59j9XOs fo7Vz7H6OVY/x+rnWP0cq59j9XOsfo7Vz7H6OVY/x+rnWP0cq59j9XOsfo7Vz3HxV7jK/mScb4Y2 NWubmrVNzdqmZm1Th05Xh05XdzaoOxvUnQ3ls8Km0r+PfO9fHb1b3hXelc3ystiMxJLoCPmyWQa7 WQ03Qw03Qw03Qw3XpoZrU8MV66eC+qmgfiqomWI1U6xmitVMsZopVjPFaqQZ6qAZ6pQZapIZaogZ aohYjdCmNojVAW3qgLb0CaGQPrH0e5xttH9Ryxfo7AJtXaCFCzRwgf6N6d+Y/o3p35j+jenfmP6N 6d+Y/o3p35j+jenfmP6N6d+Y/o3p35j+jenfmF5to1fb6NWYRm2rHKftKT4/WvzVtBDTmzG92VbV 1366MEynMafTlA00ZUN2UtiUvR6Tw6aavuHdmoPRD0fgSEx1/ZHwblQuq/xOXqfjEi9EpycWRJck XopOTbwcHcK+zyZepaRei45NLI7OY+vz1PUVFMOn1PZ9ErnoFHb/K+VwOJ2zxtW10Qn0wnn0wpDE pugs7b7a8132iXp6JTzh+btKfc5zbyRVsSDq5drbzpYUf5fy//0t3bIR0bB///d0jedku+OTej1H PvyiMbx35WTZssvVz8qWC2TL1tJvFG8u/jVKVw9z9qnSd4r9PXuMMRT/FsGG6EOe+LCzJdEwM+zr 3uHmWvzVtwtDbWJsNNT4X02eSa+Vu/KWs3c8LTfRhO3OVjkbFdU42+PsrejYKBkNiyqQQhqVqEIG 1ciiBr30eEF0cOIiGu9SjDKnBXTgy3TmK6E+OTYalhyHa3AtfozxmICJuA6TcD0mR8PU8sPU7MPU 7MPU6MPU6MPU5MPU38PU3sPU28NKf/+ihrrt1NMqs9iQeMlKFv+aySvhj9TtZnMfyyYvGNciT5mt uddEfcrqoqPL6qOTWOZSdvhc4iJPXRxdnLi09BtzFydGhVeKv0qUuCasSdwbnZaYFn1cP7GVPoaS eSp5enRKcmh0EmtdHB3ujcP1c6rVHBsdqactxf5LPdX0/F2TNxPf8vYlnr/M8TuOY3lYXVhJI7fR x7tL/rM8qvRWIkoV/xKKp/t5sp8nqzwZe6I96hetFUVpqGg93XSVnoprek1ooLvbrHpvEbe+1F7O Ci7zljaLiriiT9inht+nht+nRt6nRt6nRt6nRt6n9t2nzwvCpuL/eNLiCXZKutTastAZ9f+7Pr8l Zl2G0eY2lhJfEjqMrt08Yh53sL53eOsN/Vbrd9d/2m+1ftcU/zaL1vrot0KLO7TYpsVOLVZpraNn FvvsswtcLf5e4Lco+ctwlTtjowHerDLilDd3enOfN2uMpbtoNW/utSvWRl+I1mE9dvPsPdiLfdgv OlygcrkwnJT4lmhxSfTtxGWO33Ecrfa5yniuCY8kruMX90afKP7VbBav0+PQ0tosDTNLveXCcnuu rypnT4+PnJLUdrIbITq2ok/0hfRFuBiXRsemp2EWmp2/izUwznS7a52OO42t+PuP7Ua225x3G9kJ 5r3byE4w74HmXYwYleabMdeNiRXRASWvW+iNV72xzhsDvbHOGwO98QlPH2DMG0qetzTsNe5d3lxX eitX+rsEF+nvYp58qeO3HceJimuio0S8djEmIzIOEBkPFO8Wlv6iTnH9Cp5KuNJuHS7w6cLS3ij+ Gl6/xNW86lr5boNxb9JjS4hL/tbsvXXey2i9Usvl7hSiAdHloSP6Hr6Pq63+BdbzIuO6FON4ZvHp tbxkA0tvNKYW9WWrVjbLk2dG/SsOCB0VbdgSOlKjMBo/xI8wDtdot1fP3wTKa7mg5ULiarMaJ+av sY5redE6O6g0W3F4Exu1hL+UavH+xrfX+PYa396e2Re/U16tldVaKdfKCcZ4gFa6tNKtleIvzVdq 4d3i3yMyvr3Gt9f49hrfXuPba3x7jW9v9KHo8uic6Hv4PiZEw6OJuA6TcH00XI+99fhBMauChc8X sypY+Xwx61GWfpqlF/HTN/npF/npOYnHwx3m9I4MMeS90chbxdFsoiZOj4by0aHJM0M++WA0PPkQ Ho6GVxwQnVPR7NjmuAVbo+Gp43EaRkXnpEbjh/gRiuOrNKqdPX5T3uM35aW1KlqwJWwsfRvxlHHP 7nmqX89T/Yw79uQppW8gWkIDzxjV/ZpacIvar1mtt0Vt15w8rns9XxvVHbva7kp78rjwKa2O6l6d 2MnOe729T2zYHxYnK0KXunBXsjp0enKxJ88qvfuKu/Wu1LuSKb0bJ/boby+r7A/L1Jjdyaoo5d1u Ty1TS3Z7cpi4NKp7g166VamdRtaW2O24V6/7eOZ7b+7Ta7fqtNOI25KVjhmjqHb9vZb2mcEOXjdK XdsVlWmlXSvdWgla2FTqOxWVebvd293eDt7c1DOG44t26r7dGNZ4+2hvN3p7Z2KPHVsc/T5+vJ/H ddMJIew3ljVaO1prjVrbmawKudKsqq1zNjpApdyq5f3G9GQxi4ZyLe4yjlWJ7qjcW7v0vSpZ4/Nx YVDxie4lntiov6KlCp7YqM2ilQra2Mq6/7BeVr9nnbz9n6xP6dnSunj2P1kPc/wfroN4+l+0vyjz v2x3c/wP7F268+/aOeqV7BtVJQ82vkOiTHKg1g71zmE0wwd8Pty9I9w7yr3Bzo9xb4h7x8oHyWQ/ PRzq7pGOx1iTbLKvMzVEsr/+B+rhUD0V2zrc9SNcH+T6YNePcV07VqH4dLHnQ3ueKPZUbKuPcZW7 uz7Zz5X+OCQ63Pj6eHK9Ng83vnLjK/fW+uSR7g/CUa4P9swxrg3x+djiXyXXyipjLc6wPDnAWAdG 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 6/WNne1N8qayptbrG7vTenpj91hPb+xeP9kvxFr5aX4Gu9/6e2MP+4v9Fay99ffGOll/b6yz9ffG ulh/b+wp6++NPevv9g+yntbHG3vB+nhjQ6yPNzbS+nhjo6yPNzbG+nhj462PNzbV+nhj06yPN/aT bC6fZQusdzfOrHc37lnvbty33t24st7deCBHydE80fp14ynWrxtPtX7deHHr142Xs37deEU5Sy7k la1HN36+9ejG68q1ciOvbz268UbWoxu/xnp049daj278AevRjT9hv4/jXQIecN41kIHiTwUJQQLv HiQFybxHkBak8WeC9CCDPxuUCErwXkGZoCzvbT2u8T7W4xrvaz2u8X5B9aA6H2D9rvGB1u8aH2T9 rvGXgoZBIz7E+l3jL1u/a3y49bvGX7V+1/hI63eNvx7cG7Tio63fNf5G0C5ox9+23tf4WOt9jY+z 3tf4+KB30JtPCPoGffm7Qb+gP3/Pel/jH1jva/xD632Nf2q9r/EpwYfBVP5Z8EUwl38bzA8W8MXB b8HvfGmwJFjLVwTrg518k/XKxvdar2x8X2AijO+3Xtn4IeuVjR+2XtkEi2RESorQ+mMTqZGykUoi LVIlcrYoFqkRqSFKRWpFaonSkTqReqJMpEHkIlEhcknkElE1clnkCnFW5KpIY1Etck2kiagRuTly i6gVeSjSVtSJlo6WF/WtdzfRyHp3E1dab23iKuutTTxivbWJJ6y3NtHNemsTvRNuSLhLjLdf7Ykp 1lub+FornSR+sH7axDzdTN8ntlk/beKI9dPmedZPm6esnzYvav20eQnWT5tX2Ppp84pbP21eCeun zStt/bR5VfQYPd6rav20eTWtnzavrvXT5l1o/bR5Da2fNq+R9dPmXWn9tHnXWj9t3nXWT5t3g16h V3pNrZc17zbrZc1rbr2seXdaL2vefdbLmveg9bLmtUnkiYH3UKJOTPQeS0xJTPM6WM9q3pOJexP3 el2SKIl5XYmzlUC9RFh8SZRMjAphF5SCcdijdIzdPkb1M5BeAbuiihgFA6oKlIwAD+uRBh7a//Nw gfsPGBYxEx1iJgExb0Kum7EXAm42R4m3013UkO4GhjYChrYFc3gU+0XUjjpQYXoCexHqSF1Qc1cg bDoQVlMGC1kiZbovhIuxZGDuWcDcikipxCpRNVaZnYn0KqwK4lWBxRkOi6sDi5sgvBaIfKnzF5rB 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 z4sXRGPxomgimopmorloIV4SL4uWopVoLdqItqKdeEW0Fx1ER/GqSBSdRGfxmugiXhdTxR6xV+wT +8UB8as4KA6Jw+KIOCqOiePihDgpTonT4ow4K86J8xwWF8RFdsUlcVlcESniqkgV18R18Zu4IX4X aeKmSBcZIlNk6RRk3rZnttnhEEuO4mhuwAn8HDfkZtycX+aW3Ilf54E8iAfzEB7Nn/BE/pK/4q95 ES/h73grb+Pt/BPv4J95J//Cu3g37+G9vI/38wH+lQ/yIT7MR+xH7Crm/7baO+1f7F32bnuPvdfe Z++3D9i/2gftQ/Zh+4h91D5mH7dP2CftU/Zp+4x91j5nn7cv2BftS/Zl+4qdYl+1U+1r9nX7N/uG /budZt+00+0MO9POciJOTllNVpdPyBrySfmUfFrWlLVkbfmMrCOflXVlPVlfNpAJ8jnZUDaSz8sX ZGP5omwim8pmsrlsIV+SL8uWspVsrf/a6r9X9F8H2VG+KhNlJ9lZvia7yNdlV9lNJsnusofsKXvJ N2Rv/ddHviX7yn6yv3xbDpDvyIFykBwsh8ihcpgcLt+VI+R7cqR8X46SH8gP5Wg5Rn4kx8qP5Tj5 iRwvJ8iJcpKcLKfIqXKanC4/lTPkXDlPzpcL5BfyS/mVXCi/lovkN/Jb879f5XdyqVwml8sVcqX8 Xq6SP8jVco1cK9fJZLlebpAb5Sb5o9wst8itcpvcLn+SO+TPcqf8Re6Su+UeuVfuk/vlAfmrPCgP ycPyiDwqj8nj8oQ8KU/J0/KMPCvPyfPygrwoL8nL8opMkTfk7zJN3pTpMkNmyqwoirLkTDlLfiZn y8/lHHlVpspr8rr8Ldwr/Ea4d/jNcJ/wW+G+4X7h/uG3wwPC74QHhgeFB7tvun3ct9y+bj+3v/u2 O8B9xx3oDnaHuEPdYe5w9113hPueO9J93x3ljncnuBPdSe5kd4o71Z3mTnc/dWe4M91Z7mfubPdz d447153vLnC/cL90v3IXul+7i9xv3O/dVe4P7mp3jbvWXecmu5vcH90t7lZ3m7vd/cnd4f7s7nR/ cXe5e9wj7jH3hHvKPeOecy+5V9yrbqp7zb3u/ubecH9309ybbrqb6WZ55Fme8NizPccLece8494J 76R3yjvtnfHOeue8894F76J3ybvsXfFSvKteqnfNu+795t3wfvfSvJteupfhZXpZEYpYERHhiB1x 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 MjE3IDAgMCA1MzkgNTM5IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgOTU1IDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MDkg MCA0NjIgNTg5IDUyMyAzMTMgMCAwIDAgMCAwIDAgODYxIDAgNTg2IDAgMCAzNDhdIA0KZW5kb2Jq DQo2MyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNTYxMi9MZW5ndGgxIDEz MjEwND4+DQpzdHJlYW0NCnic7F0JXFTV/v+de+/c2ZkFhm1EZhxxG2UQBMEwRgFF0VLEAs0X6KDg SopbuZWWhr4Wn7RYr3w+X89ei4OaoW20+bTyZVm2aKXWSyst230qc/+/c2bAgahe/d//8/Df+R7O 9/7Ocs/9/c75nQWYBQgARCNJUJY3ZtjQ7GGPZQA5sQrAvmxoXv6Q7yefmw8k9zCAMHHoqMvHrOxB UoAM8QKsuWzomLGD37wj7Qkgr98GYPtuRPGYgj69L1sL0AvL9VdePsaTOqb8OhGwQXxK2RV5I0vm lSw+AJB+F4DqyKQZ5dUjnvrWBnC+BMvXTZpX4/jd9KFPA4kwA2i/m1w9ZcZT2b0ULD+J6eVTyudU gx1cqM8rWN88ZfrCyf5TO3cBidUAGDdW+mYsaCKPpAJcsgCg8UhlRbnv8LNDe+Lzp2P9jErMsJgi 5mJ6E6a7Vs6oWXDlEN37aFsBQPcz0ypmzxRuFHRAsoupvtNnTSr/8C/HZwFJehg7afOM8gXV5vE6 Hd6/B8sdM8tnVPzjxuHzsP52APlM9aw5NcpooP31MC2vnl1RfXbHsQIgcjWA+o9A+1ol3OrxWhOu NmV/C3ZUG7Hl2+wt9Pqi58na82uaAvr3NRWY1LL6FHjVbGwKABi6nl9z7kH9+y0lIWgepDn6MXAp CBCDsgBm8AC2It2iXY5pAqJ0ObkNVKBRrVelYZP24FV8DSYLVo1K0KsECYMgHoUuSiN8tBSb7Unb HjnG4QAvGB03qA4ERhOjZqMgOIB84ADqNKr11FKQVL3gAabK34MaCUNgu+iCdfALQJ6E6mZZGgWb MZb9kvubod4ED//iezzw5K951o9BssI4ehW3Qpm0A6MHyoTrIf3H6ssfBftP8l+wWdgT6lMOjv9j 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 EuIIREQ0IZEhEhHx5UWIpsTXkEiQEJUQiYhICVAnovnCne9a730Gp7Fe9bxez/P8833Na3/OYu21 1157rbXXOXPOmUNmQWZJpiGzst+OzOrMuszG8p26bhlxr1aAzJZ+jZmtme2ZlzJ7M/tzk3PTMocy RzPH1c7Mu5kzmfx1vp31uuR17XMzcw9c16l8T+6h3PzcotzSfulMx9zy3BO5NeSP+jTKu1w6tz67 vSX7dcbcptyz2jILclJNrAbty+3I7S5fIR5uycKWjGvZJef3gd2LLV7K7csd0IjmDkutqsgltU7I aJUUP1W8ULGzYk95fcVrFQcrjpT3LdlR8VbFqes6VZyuOJt1paYNyiayqWzHbFF59bU12ZLMxmz3 8lXZXtmrs/2yueyA7ODy6uzQ7IjyiuzoilXZcdmJ2UnZqdkZ0l+XnZOdl12QXZJtyK7Mrs6uy27M bsnMq9iT3Zo5lN0u7aXs3vL67P7soezR7PHsu9kzWfFizs8lc+1znXLF4pse2aO5K3N9cpnMVllJ VW5gbkhuWHnXXI3g8PKxuTW5Y7kT147Pjak4kmvMNUn107pyWHJoeKWRCPSU2tyfalxbPlYyrrNk QkVlrLKgskNl58quld3Kayt7Vuyp7F3Zt3hl+aDKisr+lYMqRVqOw7MN8u+RlWMrJ1TWVk6pnF55 b+XsXLpybvHKyvrKxblk5XOVy/R8UbmCOEh1qlxVuRb/d67cgB2rqLlGMm96blrlZs6Fc/5HX1NN 5OPwBUa/vGK6HDNO0VjTscsR+XlLfk4Vje5yWn7OFo0r0oc+CflJFaW6bOiyoaij/BQJr0R+ustP L/m5Wn76yU9OfgbIz+CiiUVDiybJPK5f598vcwTmk+ZT4ulPmxvkSuNGuV6ImZvEn+3E818wFxmn 4FjBu1jE87CPTjRO2SI5io6ypd7VHx1XNv+jE6VNkjZV2gxpddLmSJsnbYG0JdIapK2UtlraOmkb pW2JjlulbZf2krS90vZLOyTtqLTj0t6VdkZavmx+iS8tKa29tE4RXSwtHbUe0fHKiN8nGqdyGWlV 0gZGfUOkDZNWI22MtPEiOy5qk6K1tNi6N7LhHzRsat+mpdu0yJYPtOI2bbK0O+ycJdMimW2t7FL+ A9Iesjbjn3GRrS3HGZHfW7eNrdre95vapnEpmW9joP5Rf+MLiWfJTDsHc22xvtTYqj/R2zJmkvVD y5H+cZGPWo6qb9H7eaJ+On9c2cqWpdFxufW/+uX8cWMU0602nuePLXa8ZOPL8YlojcWtji1ri44l a6Stl7aplZ1t1vIBW1uOLX5oe5wXzdVyXBCt7Z8dl0THhih/e7Tyxz9bf1s/tF1/23W3PR6yud8S 25JnW/HaHltkdkjbXTa/dGSUB23j+3/7+M/8/u8e2/q5re/+zWPLuv/Vsa2PW/z0r47n91fbYxTL kn1t1tXin4nR+LbHlrydGuXjvzr+u/6Uuq4195/m+T87to1DlOcfOLauAf/gmNb5r/zg8QN75F/t mbbHlrrWcmxbW/5ZrflXx9a16B8d/9UebTnK+VDPVeePbfennCf1HHb+2JI/bWrd+ZpXHOXVsEju TLT/9Tx5QNrhiD4WHU9ErTHKmSbJXRPlcExagbQONj9KO1s7S7tK6yatp41vaW8bQz2W9rWxKa2w MSjtL22QtOpI5/D3fVg6VtoEabXSprQ6Tpd2r7TZ0ua+v7bSetv0nJmWPC1dLEfJw7TkXlrqbFps SUs+peU6JC02pGX+tMQ9vdXuq9Jl/6BeRHHgvC7n5vT2sg/W/JYcbpNbaks6F+VvKxtaxqUlF9J7 W+Vqiw0tx//DmqY+/btcbZNLaYlN+tD7ezN91OZN+nirPGmZu0V3lE/KK11hG9dTjVFLlp2/Jitd JW1t1DQvNkjb/L5M6XM2h0tfKPu7657SnTZXSvdIe03aQZuTpUfsHm9ppW/Z1nL9VHqqjPpYetqu t20rPWtb2o1aQlpKWkebn+miKKekpUukdZfWq+z9a0NZd/pq65d0PxtL2oD3m/oAn6js4GiNxZH9 ku/poVGsW8aMkDZa2ji739JSt9NSs9NTo70iOZ2eYRt7RnyTltikZZ+m83bvsu+klfm2tVyzUvdX RjWmytpdlix7/xq4U9n5a2N4kY/K2kc1YbyVKxO5MpEpS9uYlPWw8mVXWh/9nb5k2Qeuu1t0qw1l fSJ/1kT5debvc6ZM5MpUbmCko9HGiPwUX5fJNWjZkOj8JnlcNqzVfoiuncpqon3YkvdRzpZNs/4o U3p8VOO3RjbIfGWyn8vkmlvfjeI7WuZ/8m+fTr3TpHd9nZSpMqawq7RuUevZqvVu829tfaNjRdT6 t+obJK1a2nBj/EkRb2SkZ6z993l+S5sgrVbaFGnTo3avbcje+/dNeS3t7/5dJ/+eHemca//d0grr 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 XwVOJMWLXAvdaIrb/s6r2CGCGTpYRNQn9MmO6+iyXl+Y4buLknV7ojo7+9SSF1oSmqb9087n09MM bebfSpkQny+mW2r/IE+eui9o6aa8x0nS17lliqn0JbHi1txyDtonHkpvii4NCV2j2lF1Ub4uO0h2 dapP1eH6Q+vaGrDozIr6cpWAr7tYmhbL+I68e3E5KeLeki+bxT2aVOq69hmNTXj4d95Zr8IYDrnT uo0mz0zSIUQWr+Q6cWpU4+zIUU3J1sPzpuXpiegrqN7ZXtgnV1N9peLd5Vf7gzsebt7/k+oHj50F Y1rlJ3iXJ6U9SSJWv49hrQl22dUlz7/pgoZu3N6S5a6F3vOGLLb5J2dq1Bj3vV2aYbLzsLYQ8j8U Ir32DQplbmRzdHJlYW0NCmVuZG9iag0KNjQgMCBvYmoNCjw8L1R5cGUvWFJlZi9TaXplIDY0L1db IDEgNCAyXSAvUm9vdCAxIDAgUi9JbmZvIDIwIDAgUi9JRFs8NkRENTZBMTA0MTBEOTA0MTk2RkM5 MTUzNTFFNEQwNUM+PDZERDU2QTEwNDEwRDkwNDE5NkZDOTE1MzUxRTREMDVDPl0gL0ZpbHRlci9G bGF0ZURlY29kZS9MZW5ndGggMTk0Pj4NCnN0cmVhbQ0KeJw10KtWAnEQx/HZXZQFb3sTRWAvYoBg sBCpvIaNF6CSDT6AwUizmyw+gK9AtygmimH98/vihPmcOWfmzJkxc1HXnsux2Y4lvAnvRUSPIp6K ZAJrkX6IbCvyX1HcwVyUmahCeIJXcX0PLBquzHy3vWcDyKGAPuxbSjdw8/xfeeBDAA04gAoOoQkh tKANR3AMJ3AKZxBBDAmkkME5dOACLqELV9Bzp4xmesH4XXx54vtBbD7FT7DDHyxEfmv2B1EhHDcN CmVuZHN0cmVhbQ0KZW5kb2JqDQp4cmVmDQowIDY1DQowMDAwMDAwMDIxIDY1NTM1IGYNCjAwMDAw MDAwMTcgMDAwMDAgbg0KMDAwMDAwMDEyNSAwMDAwMCBuDQowMDAwMDAwMTg3IDAwMDAwIG4NCjAw MDAwMDA0MjYgMDAwMDAgbg0KMDAwMDAwNDIzNSAwMDAwMCBuDQowMDAwMDA0NDE0IDAwMDAwIG4N CjAwMDAwMDQ2NjIgMDAwMDAgbg0KMDAwMDAwNDgyOSAwMDAwMCBuDQowMDAwMDA1MDY4IDAwMDAw IG4NCjAwMDAwMDUzNjYgMDAwMDAgbg0KMDAwMDAwNzkzMSAwMDAwMCBuDQowMDAwMDA3OTg1IDAw MDAwIG4NCjAwMDAwMDgwMzkgMDAwMDAgbg0KMDAwMDAwODIxMiAwMDAwMCBuDQowMDAwMDA4NDU2 IDAwMDAwIG4NCjAwMDAwMDg1OTkgMDAwMDAgbg0KMDAwMDAwODYyOSAwMDAwMCBuDQowMDAwMDA4 ODAwIDAwMDAwIG4NCjAwMDAwMDg4NzQgMDAwMDAgbg0KMDAwMDAwOTEyMyAwMDAwMCBuDQowMDAw MDAwMDIyIDY1NTM1IGYNCjAwMDAwMDAwMjMgNjU1MzUgZg0KMDAwMDAwMDAyNCA2NTUzNSBmDQow MDAwMDAwMDI1IDY1NTM1IGYNCjAwMDAwMDAwMjYgNjU1MzUgZg0KMDAwMDAwMDAyNyA2NTUzNSBm DQowMDAwMDAwMDI4IDY1NTM1IGYNCjAwMDAwMDAwMjkgNjU1MzUgZg0KMDAwMDAwMDAzMCA2NTUz NSBmDQowMDAwMDAwMDMxIDY1NTM1IGYNCjAwMDAwMDAwMzIgNjU1MzUgZg0KMDAwMDAwMDAzMyA2 NTUzNSBmDQowMDAwMDAwMDM0IDY1NTM1IGYNCjAwMDAwMDAwMzUgNjU1MzUgZg0KMDAwMDAwMDAz NiA2NTUzNSBmDQowMDAwMDAwMDM3IDY1NTM1IGYNCjAwMDAwMDAwMzggNjU1MzUgZg0KMDAwMDAw MDAzOSA2NTUzNSBmDQowMDAwMDAwMDQwIDY1NTM1IGYNCjAwMDAwMDAwNDEgNjU1MzUgZg0KMDAw MDAwMDA0MiA2NTUzNSBmDQowMDAwMDAwMDQzIDY1NTM1IGYNCjAwMDAwMDAwNDQgNjU1MzUgZg0K MDAwMDAwMDA0NSA2NTUzNSBmDQowMDAwMDAwMDQ2IDY1NTM1IGYNCjAwMDAwMDAwNDcgNjU1MzUg Zg0KMDAwMDAwMDA0OCA2NTUzNSBmDQowMDAwMDAwMDQ5IDY1NTM1IGYNCjAwMDAwMDAwNTAgNjU1 MzUgZg0KMDAwMDAwMDA1MSA2NTUzNSBmDQowMDAwMDAwMDUyIDY1NTM1IGYNCjAwMDAwMDAwNTMg NjU1MzUgZg0KMDAwMDAwMDA1NCA2NTUzNSBmDQowMDAwMDAwMDU1IDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAxMDMxMSAwMDAwMCBuDQowMDAwMDEwNjg4IDAwMDAwIG4NCjAwMDAw NjA2NzMgMDAwMDAgbg0KMDAwMDA2MTA2MyAwMDAwMCBuDQowMDAwMDYxNDE2IDAwMDAwIG4NCjAw MDAwNjE0NDMgMDAwMDAgbg0KMDAwMDEzODYxMiAwMDAwMCBuDQowMDAwMTM4Nzk3IDAwMDAwIG4N CjAwMDAxNzQ1MDEgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSA2NS9Sb290IDEgMCBSL0luZm8g MjAgMCBSL0lEWzw2REQ1NkExMDQxMEQ5MDQxOTZGQzkxNTM1MUU0RDA1Qz48NkRENTZBMTA0MTBE OTA0MTk2RkM5MTUzNTFFNEQwNUM+XSA+Pg0Kc3RhcnR4cmVmDQoxNzQ4OTYNCiUlRU9GDQp4cmVm DQowIDANCnRyYWlsZXINCjw8L1NpemUgNjUvUm9vdCAxIDAgUi9JbmZvIDIwIDAgUi9JRFs8NkRE NTZBMTA0MTBEOTA0MTk2RkM5MTUzNTFFNEQwNUM+PDZERDU2QTEwNDEwRDkwNDE5NkZDOTE1MzUx RTREMDVDPl0gL1ByZXYgMTc0ODk2L1hSZWZTdG0gMTc0NTAxPj4NCnN0YXJ0eHJlZg0KMTc2MzU0 DQolJUVPRg== ------=_Part_1034554_959580458.1389740248912-- From nscott@redhat.com Tue Jan 14 17:13:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 61B277F3F for ; Tue, 14 Jan 2014 17:13:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 01261AC004 for ; Tue, 14 Jan 2014 15:13:18 -0800 (PST) X-ASG-Debug-ID: 1389741197-04bdf00fe26d7c90001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id L1AaZLBIiszeSdPZ for ; Tue, 14 Jan 2014 15:13:17 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0ENDHBQ024928 for ; Tue, 14 Jan 2014 18:13:17 -0500 Date: Tue, 14 Jan 2014 18:13:17 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <679238084.2287259.1389741197548.JavaMail.root@redhat.com> In-Reply-To: <870258486.2286932.1389741166744.JavaMail.root@redhat.com> Subject: pcp updates: misc - build, qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: misc - build, qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: misc - build, qa Thread-Index: 1IJsbRu2KcjTU8ykjmdvFWydnrAVyQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389741197 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev build/rpm/fedora.spec | 2 debian/libpcp3-dev.install | 1 qa/655 | 21 +-- qa/655.out | 256 ++++++++++++++++++++++++++++++--------------- qa/common.gfs2 | 2 src/pmns/Make.stdpmid | 6 - 6 files changed, 185 insertions(+), 103 deletions(-) commit e5df221476a9c64ac86e03435886123ddad553a9 Author: Nathan Scott Date: Wed Jan 15 10:06:14 2014 +1100 Ensure correct pwd when running pmdagfs2 Remove script commit 3821f4c44a494fbada89c93562f0f15e8078862d Author: Nathan Scott Date: Wed Jan 15 10:04:19 2014 +1100 Hah, cut+pasted the incorrect year in the rpm changelog! commit 5f036c46c7e2dbf6ea851e00a59f9129395ae7d6 Author: Nathan Scott Date: Wed Jan 15 08:57:45 2014 +1100 We no longer install stdpmid.* files, quieten make script commit 5cce967a82f57cc7d4c04c96bcc0286257d2cd27 Author: Nathan Scott Date: Wed Jan 15 08:25:04 2014 +1100 Add pmDiscoverServices man page into correct deb pkg commit 8aca0d64219463d75b9833aff9f3c33660ef872d Merge: 43694a6 37ba62a Author: Nathan Scott Date: Wed Jan 15 07:33:02 2014 +1100 Merge branch 'dev' of git://github.com/pauljevans/pcp into dev commit 37ba62ab70cd2cbc02a36941022dd88b0e545afb Author: Paul Evans Date: Tue Jan 14 12:05:19 2014 +0000 pmdagfs2: qa/655 update (fix reported issues with EL6 2.6.32-279) Fixed issue on EL6 2.6.32-279 by switching to using a loop device for the tests instead of requiring a mounted GFS2 filesystem in a clustered environment. From nscott@redhat.com Tue Jan 14 18:58:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 164117F3F for ; Tue, 14 Jan 2014 18:58:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id EF726304082 for ; Tue, 14 Jan 2014 16:58:29 -0800 (PST) X-ASG-Debug-ID: 1389747502-04cbb04168dd6710001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id CQbHOi1bl0AOA9SL; Tue, 14 Jan 2014 16:58:23 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0F0wMUF009823; Tue, 14 Jan 2014 19:58:22 -0500 Date: Tue, 14 Jan 2014 19:58:22 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Greg Banks Cc: pcp developers Message-ID: <440877259.2327550.1389747502556.JavaMail.root@redhat.com> In-Reply-To: <52D49301.2000403@sgi.com> References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> <52D4666E.7030601@sgi.com> <21204.32676.163457.438142@iinet.net.au> <52D49301.2000403@sgi.com> Subject: Re: [pcp] braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: fwPb8Tp6R1t3Jd8T+OE7fQVgNUH0RA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389747502 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144094 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Greg, ----- Original Message ----- > On 13/01/14 16:07, Max Matveev wrote: > > On Mon, 13 Jan 2014 14:19:26 -0800, Greg Banks wrote: > > > > gnb> While I designed and wrote the thing, I was never happy with any > > gnb> of the iterations of the architecture and I wouldn't recommend > > gnb> to anyone that they copy it. Some of the problems were: > > > > gnb> * it was both a client of pmcd and a PMDA, which led to > > interesting > > gnb> deadlocks with the single-threaded pmcd > > > > That was the "second" pass with nasavg pmda. I thought there was a > > first version which only used archives but it had to be abandoned > > because tailing of archive being written wasn't working reliably. > > > > Yes, the first design iteration tailed archives and was horribly > unreliable. Pmarchive was writing to the various files of an archive in (pmlogger) > such a way that there was a race window where the archive reading code > in libpcp would see an inconsistent archive and barf. Plus, there was an > inconvenient amount of lag, up to 30 seconds, in pmarchive and in the > tailer. OOC, what approaches were tried to address these reliability issues? Given that the original libpcp design wasn't trying to service this kind of log access, its not really surprising it didn't work first go. Max's ordered log label update mechanism sounded interesting - was that implemented and if so, did it improve reliability? The 30 second lag will possibly be a lack of pmlogger fflush'ing its buffered writes I guess - although I see the code is sprinkled with them nowadays. Was that on IRIX or Linux, OOC? Some coordination mechanism (like the pmlc flush command) for coordinating access may help - was anything attempted there? If so, did anything work or not work well that you recall? thanks Greg! -- Nathan From gbanks@sgi.com Tue Jan 14 20:07:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BD7A17F3F for ; Tue, 14 Jan 2014 20:07:16 -0600 (CST) Received: from xmail.sgi.com (pv-excas2-dc21.corp.sgi.com [137.38.106.9]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9072F8F8033; Tue, 14 Jan 2014 18:07:13 -0800 (PST) Received: from [134.15.0.251] (134.15.0.251) by xmail.sgi.com (137.38.106.6) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 14 Jan 2014 20:07:13 -0600 Message-ID: <52D5ED4C.9060107@sgi.com> Date: Tue, 14 Jan 2014 18:07:08 -0800 From: Greg Banks User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 MIME-Version: 1.0 To: Nathan Scott CC: pcp developers Subject: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <21198.38090.179929.552608@iinet.net.au> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> <52D4666E.7030601@sgi.com> <21204.32676.163457.438142@iinet.net.au> <52D49301.2000403@sgi.com> <440877259.2327550.1389747502556.JavaMail.root@redhat.com> In-Reply-To: <440877259.2327550.1389747502556.JavaMail.root@redhat.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [134.15.0.251] On 14/01/14 16:58, Nathan Scott wrote: > Hi Greg, > > ----- Original Message ----- >> On 13/01/14 16:07, Max Matveev wrote: >>> On Mon, 13 Jan 2014 14:19:26 -0800, Greg Banks wrote: >>> >>> gnb> While I designed and wrote the thing, I was never happy with any >>> gnb> of the iterations of the architecture and I wouldn't recommend >>> gnb> to anyone that they copy it. Some of the problems were: >>> >>> gnb> * it was both a client of pmcd and a PMDA, which led to >>> interesting >>> gnb> deadlocks with the single-threaded pmcd >>> >>> That was the "second" pass with nasavg pmda. I thought there was a >>> first version which only used archives but it had to be abandoned >>> because tailing of archive being written wasn't working reliably. >>> >> Yes, the first design iteration tailed archives and was horribly >> unreliable. Pmarchive was writing to the various files of an archive in > (pmlogger) Yep. That squeaky sound you hear is mental rusty hinges. > >> such a way that there was a race window where the archive reading code >> in libpcp would see an inconsistent archive and barf. Plus, there was an >> inconvenient amount of lag, up to 30 seconds, in pmarchive and in the >> tailer. > OOC, what approaches were tried to address these reliability issues? > Given that the original libpcp design wasn't trying to service this > kind of log access, its not really surprising it didn't work first > go. Max's ordered log label update mechanism sounded interesting > - was that implemented and if so, did it improve reliability? Ken did something to the guts of pmlogger which made it write the files in the correct order, with an fsync(). It worked and I think it was checked in, but I'm not sure. We couldn't use it because our design relied on a stock PCP and there was no way to ship an update. Plus it only solved half the problem, the lag being the other half. Plus again, it meant that any metric we wanted to present an average for had to be logged at sufficient frequency to make the average reasonably responsive; that frequency is a lot more than you really want in historical records and it chewed up a lot of archive disk space. Disk space was always a problem, we spent a lot of time wrestling with pmlogger metrics and frequencies. > > The 30 second lag will possibly be a lack of pmlogger fflush'ing its > buffered writes I guess - although I see the code is sprinkled with > them nowadays. That, plus the polling time in the tailing process and the polling time in pmlogger itself. > Was that on IRIX or Linux, OOC? Both IIRC.dev-melb:nasmgr:31806a > Some coordination > mechanism (like the pmlc flush command) for coordinating access may > help - was anything attempted there? If so, did anything work or > not work well that you recall? > So using pmlc flush reduces one (the largest) of the three sources of lag, but not the other two. And see my comments on disk space. I took a look at the comments in the historic source code (nostalgia, heh). Some of the problems mentioned are: * libpcp reads the latest metadata of an archive at open time only, so if we are reading an archive before it's been finished and new metrics appear, libpcp won't notice. We worked around this by closing and re-opening the archive if pmNameID() failed. * the function pmGetArchiveEnd() seems to have been broken at some time * pmLookupDesc() is one of the failure cases when you lose the update race with pmlogger * when you have historical archives, it's really really important to have a stable mapping of instance names to numbers - hence pmdaCacheOp() et al * sometimes this can't be helped, e.g. disk minor numbers across reboots, and the only way out is to trash the entire remembered instance domain * a PMDA has to begin responding to packets from PMCD quite quickly - within 5 seconds. But it can take a lot longer than that to scan historical archives to fill the average buffer, so the PMDA has to multiplex reading archives and responding to PMCD, and until it has finished reading data it has to return a well-formed but empty result to FETCHes. Hope this helps. -- Greg. From nscott@redhat.com Tue Jan 14 20:38:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 316D97F3F for ; Tue, 14 Jan 2014 20:38:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BF73DAC004 for ; Tue, 14 Jan 2014 18:38:12 -0800 (PST) X-ASG-Debug-ID: 1389753490-04cb6c5b310b980001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id zDoVPHXgr9hp4sIB; Tue, 14 Jan 2014 18:38:11 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0F2cArk026199; Tue, 14 Jan 2014 21:38:10 -0500 Date: Tue, 14 Jan 2014 21:38:10 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Greg Banks Cc: pcp developers Message-ID: <1389505567.2346498.1389753490650.JavaMail.root@redhat.com> In-Reply-To: <52D5ED4C.9060107@sgi.com> References: <20140108013956.GG15448@redhat.com> <20140110190525.GA28062@redhat.com> <0a923e$520gar@icp-osb-irony-out9.iinet.net.au> <52D4666E.7030601@sgi.com> <21204.32676.163457.438142@iinet.net.au> <52D49301.2000403@sgi.com> <440877259.2327550.1389747502556.JavaMail.root@redhat.com> <52D5ED4C.9060107@sgi.com> Subject: Re: [pcp] braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: 4gSugbwFxh/1bgIMXxAHoRJ5ZnPPUA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389753491 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144096 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > ... > Ken did something to the guts of pmlogger which made it write the files > in the correct order, with an fsync(). It worked and I think it was > checked in, but I'm not sure. We couldn't use it because our design > relied on a stock PCP and there was no way to ship an update. There are no fsync's in either libpcp or pmlogger, but there is a series of fflush's which might be what you're thinking of here (I hope!). > Plus it only solved half the problem, the lag being the other half. > > Plus again, it meant that any metric we wanted to present an average for See plus plus? Worst... joke... ever. > ... > Hope this helps. Very much - thanks! cheers. -- Nathan From dak-unpriv@franck.debian.org Tue Jan 14 21:33:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2F01D7F3F for ; Tue, 14 Jan 2014 21:33:32 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C94E1AC006 for ; Tue, 14 Jan 2014 19:33:28 -0800 (PST) X-ASG-Debug-ID: 1389756804-04bdf00fdf6de4c0001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id uZBLQe0qfGpc2ZH7 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 14 Jan 2014 19:33:24 -0800 (PST) X-Barracuda-Envelope-From: dak-unpriv@franck.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak-unpriv by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W3HEJ-0002gn-FL for pcp@oss.sgi.com; Wed, 15 Jan 2014 03:33:23 +0000 To: pcp@oss.sgi.com From: Debian FTP Masters Subject: Processing of pcp_3.8.10_i386.changes Date: Wed, 15 Jan 2014 03:33:23 +0000 X-ASG-Orig-Subj: Processing of pcp_3.8.10_i386.changes X-Debian: DAK X-DAK: DAK Precedence: bulk Auto-Submitted: auto-generated X-Debian-Package: pcp Message-Id: Sender: unprivileged ftp-master role account X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1389756804 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144097 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pcp_3.8.10_i386.changes uploaded successfully to localhost along with the files: pcp_3.8.10.dsc pcp_3.8.10.tar.gz pcp_3.8.10_i386.deb libpcp3-dev_3.8.10_i386.deb libpcp3_3.8.10_i386.deb libpcp-gui2-dev_3.8.10_i386.deb libpcp-gui2_3.8.10_i386.deb libpcp-mmv1-dev_3.8.10_i386.deb libpcp-mmv1_3.8.10_i386.deb libpcp-pmda3-dev_3.8.10_i386.deb libpcp-pmda3_3.8.10_i386.deb libpcp-trace2-dev_3.8.10_i386.deb libpcp-trace2_3.8.10_i386.deb libpcp-import1-dev_3.8.10_i386.deb libpcp-import1_3.8.10_i386.deb python-pcp_3.8.10_i386.deb libpcp-pmda-perl_3.8.10_i386.deb libpcp-import-perl_3.8.10_i386.deb libpcp-logsummary-perl_3.8.10_i386.deb libpcp-mmv-perl_3.8.10_i386.deb pcp-import-sar2pcp_3.8.10_all.deb pcp-import-mrtg2pcp_3.8.10_all.deb pcp-import-sheet2pcp_3.8.10_all.deb pcp-import-iostat2pcp_3.8.10_all.deb pcp-import-collectl2pcp_3.8.10_i386.deb pcp-testsuite_3.8.10_i386.deb Greetings, Your Debian queue daemon (running on host franck.debian.org) From envelope@ftp-master.debian.org Tue Jan 14 21:51:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8615B7F3F for ; Tue, 14 Jan 2014 21:51:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1A26DAC004 for ; Tue, 14 Jan 2014 19:51:55 -0800 (PST) X-ASG-Debug-ID: 1389757912-04cbb04169ddac20001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id svW4ctwUl2VSjZVm (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 14 Jan 2014 19:51:54 -0800 (PST) X-Barracuda-Envelope-From: envelope@ftp-master.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W3HWB-0001Kq-GV; Wed, 15 Jan 2014 03:51:51 +0000 From: Debian FTP Masters To: PCP Development Team , Nathan Scott X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp Precedence: bulk Auto-Submitted: auto-generated MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: pcp_3.8.10_i386.changes ACCEPTED into unstable Message-Id: X-ASG-Orig-Subj: pcp_3.8.10_i386.changes ACCEPTED into unstable Sender: Archive Administrator Date: Wed, 15 Jan 2014 03:51:51 +0000 X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1389757914 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Accepted: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 15 Jan 2014 08:44:20 +1100 Source: pcp Binary: pcp libpcp3-dev libpcp3 libpcp-gui2-dev libpcp-gui2 libpcp-mmv1-dev libpcp-mmv1 libpcp-pmda3-dev libpcp-pmda3 libpcp-trace2-dev libpcp-trace2 libpcp-import1-dev libpcp-import1 python-pcp libpcp-pmda-perl libpcp-import-perl libpcp-logsummary-perl libpcp-mmv-perl pcp-import-sar2pcp pcp-import-mrtg2pcp pcp-import-sheet2pcp pcp-import-iostat2pcp pcp-import-collectl2pcp pcp-testsuite Architecture: source i386 all Version: 3.8.10 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: libpcp-gui2 - Performance Co-Pilot graphical client tools library libpcp-gui2-dev - Performance Co-Pilot graphical client tools library and headers libpcp-import-perl - Performance Co-Pilot log import Perl module libpcp-import1 - Performance Co-Pilot data import library libpcp-import1-dev - Performance Co-Pilot data import library and headers libpcp-logsummary-perl - Performance Co-Pilot historical log summary module libpcp-mmv-perl - Performance Co-Pilot Memory Mapped Value Perl module libpcp-mmv1 - Performance Co-Pilot Memory Mapped Value client library libpcp-mmv1-dev - Performance Co-Pilot Memory Mapped Value library and headers libpcp-pmda-perl - Performance Co-Pilot Domain Agent Perl module libpcp-pmda3 - Performance Co-Pilot Domain Agent library libpcp-pmda3-dev - Performance Co-Pilot Domain Agent library and headers libpcp-trace2 - Performance Co-Pilot application tracing library libpcp-trace2-dev - Performance Co-Pilot application tracing library and headers libpcp3 - Performance Co-Pilot library libpcp3-dev - Performance Co-Pilot library and headers pcp - System level performance monitoring and performance management pcp-import-collectl2pcp - Tool for importing data from collectl into PCP archive logs pcp-import-iostat2pcp - Tool for importing data from iostat into PCP archive logs pcp-import-mrtg2pcp - Tool for importing data from MRTG into PCP archive logs pcp-import-sar2pcp - Tool for importing data from sar into PCP archive logs pcp-import-sheet2pcp - Tool for importing data from a spreadsheet into PCP archive logs pcp-testsuite - Performance Co-Pilot (PCP) Test Suite python-pcp - Performance Co-Pilot Python PMAPI module Changes: pcp (3.8.10) unstable; urgency=low . * New release (full details in CHANGELOG). Checksums-Sha1: 96ea94a44bc39fc207c710afb3560d3e54be0717 2334 pcp_3.8.10.dsc dff1746606c5b77027df3478029a9fcede76c5e4 7250289 pcp_3.8.10.tar.gz cc758ae2d9d9b867781dc7fbc3b3567ea147b910 1156058 pcp_3.8.10_i386.deb 5e92b2dca7f4d5a429e60ff2a6656b7b468846f8 372890 libpcp3-dev_3.8.10_i386.deb 9feb80484b4d4fd838d7fccebb4971de1dcc7df9 176402 libpcp3_3.8.10_i386.deb ebbe73682935bd611cf5aa4c26b776925ccb38e4 15438 libpcp-gui2-dev_3.8.10_i386.deb b1c9829132a4106b27ffbda002e27fa650f2a136 14212 libpcp-gui2_3.8.10_i386.deb 0bfcd861fb39ca07ae4853f34fe38daf2ce8e7a0 18066 libpcp-mmv1-dev_3.8.10_i386.deb e9271554e23fede0c8502aadea969bb780cbdaf4 11328 libpcp-mmv1_3.8.10_i386.deb dd589ebbbc6a4846d564fccc27e8efec2d28368b 91456 libpcp-pmda3-dev_3.8.10_i386.deb 68863983a988a9bdb351679e1bdb9539b2d4fe88 34144 libpcp-pmda3_3.8.10_i386.deb 3bb372e19ee0f103b51fbab2bcf97e51908c874b 25682 libpcp-trace2-dev_3.8.10_i386.deb 5b88131d0e2b2f0efb877acbcbd93a6d613ac1cd 18130 libpcp-trace2_3.8.10_i386.deb 7062776a489e36e04fba84679528d465d9ed3a6d 15194 libpcp-import1-dev_3.8.10_i386.deb c6f195d29b1dc7878cd4d6cb7ff32a2f646dd9e1 14630 libpcp-import1_3.8.10_i386.deb c6835b0ec0cb75be68baeaa13f5827c8c13b9cb8 39608 python-pcp_3.8.10_i386.deb 894e4e5b0d2a506df5b861640bce630a0dc3d030 30514 libpcp-pmda-perl_3.8.10_i386.deb 2958f04ea2645d913953fb62043df5203cc7085b 15822 libpcp-import-perl_3.8.10_i386.deb deac6afc945f2f41941a490ba80f882b2626aae6 10744 libpcp-logsummary-perl_3.8.10_i386.deb de6462835c8d4147c1b97a09fcf09a9d661b1f09 17070 libpcp-mmv-perl_3.8.10_i386.deb 6926977492116c445afd927eca9fb70d5a183960 16058 pcp-import-sar2pcp_3.8.10_all.deb f1f9b46f0de411fa81a6cd350628572797e7bb4d 9906 pcp-import-mrtg2pcp_3.8.10_all.deb b905671fa6a54c3ed8ca0bfaf9b2096891357386 18914 pcp-import-sheet2pcp_3.8.10_all.deb 8f573a35eb9d4037d4efabf28bc7a2bbb8a4ddb7 17578 pcp-import-iostat2pcp_3.8.10_all.deb afd0e57561d326bb981e58d5454b5ab33582bee6 22660 pcp-import-collectl2pcp_3.8.10_i386.deb 118168bdb6ccdff2c75d9db23453557e032ec0e0 2156952 pcp-testsuite_3.8.10_i386.deb Checksums-Sha256: 8ea026db43ddb50a4df3b2d7cf78e9b55259c0c1789fe6948f7fcadf36cc052a 2334 pcp_3.8.10.dsc 6f72a0cf256c6ab61b32d9c2cd38a650a7d04229eb81ae518dc37a7368363d6d 7250289 pcp_3.8.10.tar.gz 263db5cc7bb09a3ef862271b58e9383e39628a2090b6cc7bf4213b645ce864e2 1156058 pcp_3.8.10_i386.deb 4c44acdd09f2ea1e4584250b24c4886e50350761e08068528b78b61fa8d9a1b8 372890 libpcp3-dev_3.8.10_i386.deb 3285a39c867c78f294f14357ca90698bbf7309dbb779d9e2df27e20b5ffdf2ad 176402 libpcp3_3.8.10_i386.deb f3e69521ac1c87e039638c8d71a8fb4fda26d902376615c7c7e3e412c0651265 15438 libpcp-gui2-dev_3.8.10_i386.deb 62146cc574dba4b91576346dae80ac137337f1cc4eb4b3d52c28b4e6938c3266 14212 libpcp-gui2_3.8.10_i386.deb 15ea1c181e64247ad15ed428243be3818d35f4379d250b350d456ccb1896ba05 18066 libpcp-mmv1-dev_3.8.10_i386.deb 9b71928de543c5e85643a1f7687c5440ffb1a619bca0c86116617271f2c80f72 11328 libpcp-mmv1_3.8.10_i386.deb fdc2e801fa1c414a3b0a9d89764f4c54acf69ece1623f731a29c17d910b349f8 91456 libpcp-pmda3-dev_3.8.10_i386.deb 00212274d6e96fd091d2ad26962614474037579000d96724636af3a6314608c5 34144 libpcp-pmda3_3.8.10_i386.deb 5b18306837bc98f41b1cd70db0d69a4b59d8f13337f75444cbe91f1e6424cc31 25682 libpcp-trace2-dev_3.8.10_i386.deb f63d266eeac8e0b5825057f77ef6f5a90af2dc28f961c7c09a010022d667fb38 18130 libpcp-trace2_3.8.10_i386.deb 59487118636583122f9ace9a39d2ccb74c4bf1b567446b32129afa0d0e02e62f 15194 libpcp-import1-dev_3.8.10_i386.deb 643bbbe053f9ed122c2030ecca1894c2c9fa3d0856969dc11ae296fe0ccb0c08 14630 libpcp-import1_3.8.10_i386.deb 7a5f959ee8d2eb56e05fb936d982259a60d5a05e957a64891ee3b3e04fbef62e 39608 python-pcp_3.8.10_i386.deb 435a7e6cc365a12d99587d512e006faac4106b8d4523f0fe7745426ca54c1aec 30514 libpcp-pmda-perl_3.8.10_i386.deb 8e392a6038b0a1837b3e92f8a0aac80e6737495b8d1775c8b0a83ce475b55c69 15822 libpcp-import-perl_3.8.10_i386.deb faafc2dedf0e51ace95b416fc7c9939ca6b0e52f71b8f7391643b170bedd2c32 10744 libpcp-logsummary-perl_3.8.10_i386.deb 59b7112d4e29bb670922109f22360422aeb79d467b03026c593ecd73a7e7c775 17070 libpcp-mmv-perl_3.8.10_i386.deb 14d70461200cbb8413d2a9f86d79e47baafcfce1192d6a304b7d411fd4152c0a 16058 pcp-import-sar2pcp_3.8.10_all.deb f2d8766bef034cb23f7776e0fb6d4826de8825ddaf4c7e96bd4224774af49baf 9906 pcp-import-mrtg2pcp_3.8.10_all.deb a24e9a575743dbbd39701488613bb70b5875a8897dcc8ab63b6e8fa0725fca24 18914 pcp-import-sheet2pcp_3.8.10_all.deb 930061b054bb8b37684b6af1d435738d77b1536ccc5fc627b39df8fc3006edfa 17578 pcp-import-iostat2pcp_3.8.10_all.deb bfcc541f1de273c70ebb8b013bacdc4750a08cf3c1c2c8c6ad96d3844a1e991f 22660 pcp-import-collectl2pcp_3.8.10_i386.deb da10857c105df9d70c15b622a3acdb0e1620246c71a20f50189ace95bd7abfa9 2156952 pcp-testsuite_3.8.10_i386.deb Files: f97f860797988da9ad062592ab1aa775 2334 utils extra pcp_3.8.10.dsc ce3c68706f4a61219852f60dc66fd56e 7250289 utils extra pcp_3.8.10.tar.gz 6da0d7582a5fd9c6886ac5278263c041 1156058 utils extra pcp_3.8.10_i386.deb 5e8b28e232929eea867546073ef21a77 372890 libdevel extra libpcp3-dev_3.8.10_i386.deb 9c1fa7e6b22468c383cee4b3326a591d 176402 libs extra libpcp3_3.8.10_i386.deb dd406b6cde303e881610d3c67477d646 15438 libdevel extra libpcp-gui2-dev_3.8.10_i386.deb c42dccfda4a5f814831aa2629a7fbb4e 14212 libs extra libpcp-gui2_3.8.10_i386.deb 6945822ca15a28bc4bf7169c3045e1e1 18066 libdevel extra libpcp-mmv1-dev_3.8.10_i386.deb ff49095130edcd1cb856c614788d6dc1 11328 libs extra libpcp-mmv1_3.8.10_i386.deb 76cee693606ede753de447711568c4b4 91456 libdevel extra libpcp-pmda3-dev_3.8.10_i386.deb 0d4782b43352af958f2376560632f072 34144 libs extra libpcp-pmda3_3.8.10_i386.deb 213ec8f9f45b60e1c24cbfa20cfda2c1 25682 libdevel extra libpcp-trace2-dev_3.8.10_i386.deb 1797560549f43f84b18cf54153f1de62 18130 libs extra libpcp-trace2_3.8.10_i386.deb a8f33f0b0b2a37d971e68b18121d0985 15194 libdevel extra libpcp-import1-dev_3.8.10_i386.deb 8ca9d70fff51584ce695e98d5162a81f 14630 libs extra libpcp-import1_3.8.10_i386.deb 3b6f77de8a2611593260d87802f2c67c 39608 python extra python-pcp_3.8.10_i386.deb 170443a8a0d18a27a698dddcbcceb348 30514 perl extra libpcp-pmda-perl_3.8.10_i386.deb eb56f57a66c961de4a697f893d1458f8 15822 perl extra libpcp-import-perl_3.8.10_i386.deb 48f0584fc22cc044cb044b01430d0ea6 10744 perl extra libpcp-logsummary-perl_3.8.10_i386.deb c427fbf85fe145ce999f5b80d3aa2e47 17070 perl extra libpcp-mmv-perl_3.8.10_i386.deb af8cb0612acf98153a777546a6a5619e 16058 utils extra pcp-import-sar2pcp_3.8.10_all.deb 5b2a6bb3afc8cab39dffab01af11a006 9906 utils extra pcp-import-mrtg2pcp_3.8.10_all.deb 534a89b2487b5d05ea08200ee9f7ebb4 18914 utils extra pcp-import-sheet2pcp_3.8.10_all.deb 9ac82493687f49c89959efdf4ce58ed4 17578 utils extra pcp-import-iostat2pcp_3.8.10_all.deb 66c75b6acdb2ac262097941cb58003e9 22660 utils extra pcp-import-collectl2pcp_3.8.10_i386.deb b1e6c3b2a529d8953eb2858aa83626f8 2156952 utils extra pcp-testsuite_3.8.10_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlLVyh4ACgkQm8fl3HSIa2OQZwCfV0K0wJD9gNGudxQQXE6nHJU9 elsAn1Xh0CHvLB7thQtK+ZnqJQBmmXDe =xKGG -----END PGP SIGNATURE----- Thank you for your contribution to Debian. From pcp-announce-bounces@oss.sgi.com Tue Jan 14 23:46:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from oss.sgi.com (localhost [IPv6:::1]) by oss.sgi.com (Postfix) with ESMTP id 6DC5F7F50; Tue, 14 Jan 2014 23:46:59 -0600 (CST) X-Original-To: pcp-announce@oss.sgi.com Delivered-To: pcp-announce@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0B61D7F3F for ; Tue, 14 Jan 2014 23:46:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 050108F8050 for ; Tue, 14 Jan 2014 21:46:57 -0800 (PST) X-ASG-Debug-ID: 1389764813-04cb6c537cdcb5b0001-87ZIJf Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id r9EssCO28vZT4i5L for ; Tue, 14 Jan 2014 21:46:53 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0F5kqdJ018869 for ; Wed, 15 Jan 2014 00:46:52 -0500 Date: Wed, 15 Jan 2014 00:46:52 -0500 (EST) From: Nathan Scott To: pcp-announce@oss.sgi.com Message-ID: <1672011322.2388128.1389764812506.JavaMail.root@redhat.com> In-Reply-To: <1185246178.2385111.1389764066542.JavaMail.root@redhat.com> MIME-Version: 1.0 X-ASG-Orig-Subj: Performance Co-Pilot 3.8.10 released X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Performance Co-Pilot 3.8.10 released Thread-Index: kOOrFnJKq/kH6OEm2lpXmmBfe7DjQQ== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1389764813 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144100 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Subject: [pcp-announce] Performance Co-Pilot 3.8.10 released X-BeenThere: pcp-announce@oss.sgi.com X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Nathan Scott List-Id: pcp announcements List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pcp-announce-bounces@oss.sgi.com Sender: pcp-announce-bounces@oss.sgi.com Hi all, The next in the current series of PCP point releases has been tagged, and builds uploaded to all the usual places (Fedora/EPEL, Debian unstable and all platforms from the oss.sgi.com project page downloads section, as always). http://oss.sgi.com/projects/pcp/ ftp://oss.sgi.com/projects/pcp/download/ Brand-spanking-new code in this release includes pmmgr(1), pmfind(1) and pmDiscoverServices(3) ... feel free to give the tyres a good kick, and let us know how it goes. Full changelog follows, enjoy! pcp-3.8.10 (15 January 2014) - Adds pmmgr(1) PCP daemon manager - a cunning new (opt-in) approach to managing farms of pmlogger and pmie processes. - Adds pmfind(1) utility for discovering advertised pmcd services (initially) on the network. - Adds a new pmDiscoverServices(3) PMAPI routine. - Linux pmda: plug memory leak in /proc/interrupts parsing. - systemd pmda: add sd_journal_process() to avoid inotify() driven spinning - Man page rework for some NAME entries, addressing SGI oss bugzilla #972) - Add notes for creating user pcp before make from source, addressing SGI oss bugzilla #1040) - Improve behavior related to Avahi service name collisions. - Dodge another hostname-does-not-resolve bullet in pmlogger. - Fix the configure check for RHEL5 rpmlib for pmdarpm. - An extensive series of spelling fixes to man pages, thanks to Michele Baldessari - Small fixes here and there from Coverity static analysis. - GFS2 pmda: add the complete set of GFS2 tracepoint metrics. - RPM pmda: make instance names unique, add rpm.name metric. - RPM pmda: reduce number of inotify events and rpmdb scans. - Add some heuristics to reduce metric duplication from tasks formed via pmlogger configuration file blocks. cheers. -- Nathan _______________________________________________ pcp-announce mailing list pcp-announce@oss.sgi.com http://oss.sgi.com/mailman/listinfo/pcp-announce From fche@redhat.com Wed Jan 15 08:52:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4E1897F3F for ; Wed, 15 Jan 2014 08:52:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 232AD304067 for ; Wed, 15 Jan 2014 06:52:36 -0800 (PST) X-ASG-Debug-ID: 1389797551-04bdf00fe06f2de0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FaZXz9YkoSJKn6Qo for ; Wed, 15 Jan 2014 06:52:32 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0FEqQsA019856 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 15 Jan 2014 09:52:27 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0FEqQRE018079; Wed, 15 Jan 2014 09:52:26 -0500 Received: by fche.csb (Postfix, from userid 2569) id 985C3580FA; Wed, 15 Jan 2014 09:52:25 -0500 (EST) To: Nathan Scott Cc: Ken McDonell , pcp@oss.sgi.com Subject: Re: pmlogger(1) task_t optimisations References: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> <52D4E2C9.4010205@internode.on.net> <223161620.2279579.1389740441989.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: pmlogger(1) task_t optimisations From: fche@redhat.com (Frank Ch. Eigler) Date: Wed, 15 Jan 2014 09:52:25 -0500 In-Reply-To: <223161620.2279579.1389740441989.JavaMail.root@redhat.com> (Nathan Scott's message of "Tue, 14 Jan 2014 18:00:41 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389797552 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 nathans wrote: > [...] > An ideal outcome would have been 1 task_t matching just that > final block - one pmFetch PDU, one sample on the server side, > one timestamp, and one result logged. Right. One way to do this would be to have the parser generate one task_t per "(permission,time)" tuple rather than build duplicates per config-language { } group. Then as we parse metrics, they'd get dropped into the one-or-few distinct task_t's, duplicate-eliminated as we go, and optfetched then or once at the end. - FChE From kenj@internode.on.net Wed Jan 15 13:21:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0C9EA29DF8 for ; Wed, 15 Jan 2014 13:21:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 88A11AC004 for ; Wed, 15 Jan 2014 11:21:40 -0800 (PST) X-ASG-Debug-ID: 1389813697-04cb6c537cde4e10001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id sI2XEJ14SxxLkSts for ; Wed, 15 Jan 2014 11:21:38 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtgoAP3e1lJ20c6fPGdsb2JhbAANTIcXhDqwQIMOgSsDAQEBATiCWgEBAQQjFTwFEAsYAgIFDBUCAg8CMhQGDQEHAQGubnabXReBKYx/VwcKgmWBSAEDlDqOMYsLgVU Received: from ppp118-209-206-159.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.206.159]) by ipmail06.adl2.internode.on.net with ESMTP; 16 Jan 2014 05:51:36 +1030 Message-ID: <52D6E012.30505@internode.on.net> Date: Thu, 16 Jan 2014 06:22:58 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp developers Subject: Re: pmlogger(1) task_t optimisations References: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> <52D4E2C9.4010205@internode.on.net> <223161620.2279579.1389740441989.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: pmlogger(1) task_t optimisations In-Reply-To: <223161620.2279579.1389740441989.JavaMail.root@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1389813697 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144119 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 15/01/14 10:00, Nathan Scott wrote: >... >> How does the order of the config file blocks impact on "how much is logged"? > > So, each config file block == a separate task_t, each separate > task_t == at least one pmFetch (and hence pmResult). Before > Franks commit, even exactly-duplicated metric names in different > blocks were fetched and logged twice (usually within a few usec > of each other). OK, I agree metric replication in multiple config blocks produces additional and unhelpful data in the archives. But re-ordering a set of config blocks does not change how much is logged ... I think this is a wording issue not a concept mismatch. > ... > Right & I do :) - there does still come a point where it would make sense > to split, as we approach the PDU_SIZE limit for pmcd requests. I suspect > the optfetch code is not taking that into account yet though? - but it is > something we may need to do at some point. So, keeping the ability to > split fetches sounds useful - mostly I'm thinking about tweaking pmlogger > further at this stage though (mental note made to come back to optfetch, > too, and investigate further). OK and good luck with optfetch .. we know who wrote that code, and let me only say that optfetch was the warm-up exercise before the interp.c main game! One thing you'll have to watch in the pmlogger change is that the -r option will no longer work ... this very useful option reports archive size projections based on the config block and does not enumerate all the metrics in the block in the report ... you'll need to change this to report per task_t and list all metrics in the pmFetch (as the rationale here is to be able to tune the config file if the archives are becoming too large) ... if you get too aggressive with rolling config blocks into a small number of task_t's this won't be possible, or the report will have to be per metric (which may be a better idea anyway). Probably needs some sleep and think time on this, rather than design on the fly. From potts@hpcapplications.com Thu Jan 16 16:16:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AC2F57F57 for ; Thu, 16 Jan 2014 16:16:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 89205304043 for ; Thu, 16 Jan 2014 14:16:05 -0800 (PST) X-ASG-Debug-ID: 1389910560-04bdf00fe273a970001-S8gJnT Received: from mail-ob0-f179.google.com (mail-ob0-f179.google.com [209.85.214.179]) by cuda.sgi.com with ESMTP id OSRjd63q9zjkET4J (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 16 Jan 2014 14:16:00 -0800 (PST) X-Barracuda-Envelope-From: potts@hpcapplications.com X-Barracuda-Apparent-Source-IP: 209.85.214.179 Received: by mail-ob0-f179.google.com with SMTP id wp4so3437449obc.38 for ; Thu, 16 Jan 2014 14:16:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:organization:user-agent :mime-version:to:subject:content-type:content-transfer-encoding; bh=BplHZaWUtIhD151zrQH92LuzYxMioawby0SCTkLDFo4=; b=W5nEpy6xtm02/i/GlgIT+3iHwqtWBpOHivRx0gVkxbpZZO0AXfAAZD82HzvcZEjYSI mhRnGuQ6rNDbcn/POFLfUpUj9TbAWaiJ4al58fncNFlPZ5pMZN/9XtWnIrNPiWWWw8xR 5dcdsgnemeilv+x8bwZ9gG8mWNt7ViXqID8b7QwNqcrKGI0ac5gJ+38pE02eVt3m9lJD WGnJ0tx4EMA60svliuF6ahzXRjTsdGUDkSOG393U+tYSKEN6EOev34RuojAz/bWUAmy6 rywpdxUjgsBfEci/5iKjY16trMkaDXdIsJ6NfhB4tBT3nenMYC1/QC4RHUy9LR0DZWpa 8hcQ== X-Gm-Message-State: ALoCoQmctddjkEHtkoex6lObzdELkTShWEPpjzIHk777xNQKmQ2xH1GVcZf2hBAhF2q5rqYFMQNY X-Received: by 10.60.228.135 with SMTP id si7mr9155421oec.4.1389910560195; Thu, 16 Jan 2014 14:16:00 -0800 (PST) Received: from [10.20.12.75] ([12.207.42.119]) by mx.google.com with ESMTPSA id ru3sm10008560obc.2.2014.01.16.14.15.59 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 16 Jan 2014 14:15:59 -0800 (PST) Message-ID: <52D85994.50109@hpcapplications.com> Date: Thu, 16 Jan 2014 16:13:40 -0600 From: Mark Potts Organization: HPC Applications Inc. User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: browser based PCP data viewer? Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: browser based PCP data viewer? Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-ob0-f179.google.com[209.85.214.179] X-Barracuda-Start-Time: 1389910560 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144157 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, Thanks for keeping alive one of SGI finest creations. I worked for SGI/Cray for a number of years and was a happy user as well as proselytizer of PCP during that time. As an independent contractor of many years now I have had occasion to use PCP, but now have a need to view performance data, such as PCP collects handily, from a remote browser. By that I mean collect/forward performance from one or more machines using my PCP-aware local program(s) to a single remote machine on which the agent/viewer would be contained in a browser such as Firefox. From a brief reading I see nothing like a browser-based agent or interface to Tomcat or the like. Is there anything like that around? My need is purely for Linux machines. regards, -- *********************************** >> Mark J. Potts, PhD >> >> HPC Applications Inc. >> phone: 512-228-1721 Bus >> 512-828-6153 Fax >> email: potts@hpcapplications.com >> potts@excray.com *********************************** From fche@redhat.com Thu Jan 16 16:50:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D9F0B7F5F for ; Thu, 16 Jan 2014 16:50:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C204A30408C for ; Thu, 16 Jan 2014 14:50:14 -0800 (PST) X-ASG-Debug-ID: 1389912613-04cb6c537be22170001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id cH5xZu2ZjhSxpx5f for ; Thu, 16 Jan 2014 14:50:14 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0GMoCHT028453 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 16 Jan 2014 17:50:12 -0500 Received: from fche.csb (vpn-54-142.rdu2.redhat.com [10.10.54.142]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0GMoB7u022919; Thu, 16 Jan 2014 17:50:12 -0500 Received: by fche.csb (Postfix, from userid 2569) id 86A8C584E3; Thu, 16 Jan 2014 17:50:10 -0500 (EST) To: Mark Potts Cc: pcp@oss.sgi.com Subject: Re: browser based PCP data viewer? References: <52D85994.50109@hpcapplications.com> X-ASG-Orig-Subj: Re: browser based PCP data viewer? From: fche@redhat.com (Frank Ch. Eigler) Date: Thu, 16 Jan 2014 17:50:10 -0500 In-Reply-To: <52D85994.50109@hpcapplications.com> (Mark Potts's message of "Thu, 16 Jan 2014 16:13:40 -0600") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1389912614 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Mark - Welcome! > [...] now have a need to view performance data, such as PCP collects > handily, from a remote browser. By that I mean collect/forward > performance from one or more machines using my PCP-aware local > program(s) to a single remote machine on which the agent/viewer > would be contained in a browser such as Firefox. [...] There are a couple of ways to proceed. Among them: - write a cgi-flavoured pcp client in C or perl or python using the PMAPI bindings for those languages, have it encode the web application - write a web app in any AJAXy browser language like java or javascript, and go through the pcp 3.8-era pmwebd daemon, which binds http/json to a subset of PMAPI; see the src/pmwebapi/jsdemos/* in the source tree - FChE From nscott@redhat.com Fri Jan 17 00:54:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3BCB07F58 for ; Fri, 17 Jan 2014 00:54:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0553A8F8050 for ; Thu, 16 Jan 2014 22:54:25 -0800 (PST) X-ASG-Debug-ID: 1389941664-04bdf00fe074a5b0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id cPjFNsztPohMFPCL for ; Thu, 16 Jan 2014 22:54:24 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0H6sND0014130 for ; Fri, 17 Jan 2014 01:54:23 -0500 Date: Fri, 17 Jan 2014 01:54:23 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <333946855.5266026.1389941663780.JavaMail.root@redhat.com> In-Reply-To: <1253730659.5265749.1389941620831.JavaMail.root@redhat.com> Subject: pcp updates: man pages, pmdarpm total metrics MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: man pages, pmdarpm total metrics Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: man pages, pmdarpm total metrics Thread-Index: jol688+hjijd4kUFAS+HLGQmh124xw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1389941664 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144171 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev CHANGELOG | 3 VERSION.pcp | 2 build/rpm/fedora.spec | 3 debian/changelog | 6 man/man1/GNUmakefile | 69 +++++-- man/man1/pmdaapache.1 | 176 +++++++++++++++++ man/man1/pmdahotproc.1 | 315 ------------------------------- man/man1/pmdajbd2.1 | 161 ++++++++++++++++ man/man1/pmdakernel.1 | 157 +++++++++++++++ man/man1/pmdalmsensors.1 | 138 ++++++++++++++ man/man1/pmdalogger.1 | 184 ++++++++++++++++++ man/man1/pmdalustrecomm.1 | 141 ++++++++++++++ man/man1/pmdammv.1 | 177 +++++++++++++++++ man/man1/pmdamounts.1 | 147 ++++++++++++++ man/man1/pmdaproc.1 | 185 ++++++++++++++++++ man/man1/pmdaroomtemp.1 | 136 +++++++++++++ man/man1/pmdarpm.1 | 151 +++++++++++++++ man/man1/pmdasystemd.1 | 176 +++++++++++++++++ man/man1/pmdaxfs.1 | 143 ++++++++++++++ man/man1/pmtop.1 | 147 -------------- man/man3/GNUmakefile | 41 ---- man/man5/GNUmakefile | 9 man/retired/man1/pmdumptext.1 | 414 ------------------------------------------ man/retired/man1/pmimport.1 | 137 ------------- man/retired/pmdahotproc.1 | 315 +++++++++++++++++++++++++++++++ man/retired/pmtop.1 | 147 ++++++++++++++ qa/750 | 43 ++++ qa/750.out.3 | 203 ++++++++++++++++++++ src/pmdas/process/GNUmakefile | 21 +- src/pmdas/roomtemp/roomtemp.c | 2 src/pmdas/rpm/help | 3 src/pmdas/rpm/pmns | 6 src/pmdas/rpm/rpm.c | 43 ++++ src/pmdas/rpm/rpm.h | 8 src/pmie/src/pmie.c | 3 35 files changed, 2918 insertions(+), 1094 deletions(-) commit 9b20ba60fb68e25cf897507d29931f755804caa8 Author: Nathan Scott Date: Fri Jan 17 17:51:04 2014 +1100 Add rpm.total.{count,bytes} metrics, cumulated during the scan commit 3ed48d685937d5cb89ddf9a41b527b9f4ebbd24c Author: Nathan Scott Date: Fri Jan 17 17:34:08 2014 +1100 Fix typo in a comment in pmdaroomtemp commit 20b71acdf7f262ae8b47103f15f1bfe8019edb2b Author: Nathan Scott Date: Fri Jan 17 17:32:32 2014 +1100 Add man pages for all of the PMDAs currently missing one New man pages for the following PMDAs: apache, jbd2, lmsensors, logger, lustrecomm, mmv, mounts, proc, roomtemp, rpm, systemd, xfs and the kernel. commit f29740c8c4cd2462a91a9bb09f42ad312fa68ac6 Author: Nathan Scott Date: Thu Jan 16 10:05:09 2014 +1100 Fix a makefile exclusion guard on deprecated pmdaprocess commit fd8c09dc728dcf9b0b20fa122ca908c06b29e6b7 Author: Nathan Scott Date: Thu Jan 16 10:04:09 2014 +1100 Simplify the section 3 and section 5 man page makefiles commit 5d4eb298f256a0611349b22e47700849f258304b Author: Nathan Scott Date: Wed Jan 15 14:52:42 2014 +1100 covscan: fix pmie stats file issue, obscure error path commit e60c945d3e1e64bf6d185d4d65949747c6bc8b3e Author: Nathan Scott Date: Wed Jan 15 14:15:36 2014 +1100 Update dev branch release details for future work From brolley@redhat.com Mon Jan 20 13:14:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 639787F37 for ; Mon, 20 Jan 2014 13:14:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4884F8F806F for ; Mon, 20 Jan 2014 11:14:35 -0800 (PST) X-ASG-Debug-ID: 1390245270-04cbb05bab03680001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id sQxhf0KZAdFFU7L0 for ; Mon, 20 Jan 2014 11:14:31 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0KJEUX9019155 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 20 Jan 2014 14:14:30 -0500 Received: from [10.15.16.117] (dhcp-10-15-16-117.yyz.redhat.com [10.15.16.117]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0KJEUm6029541 for ; Mon, 20 Jan 2014 14:14:30 -0500 Message-ID: <52DD7596.3040306@redhat.com> Date: Mon, 20 Jan 2014 14:14:30 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging In-Reply-To: <20140108013956.GG15448@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390245271 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi All, It looks like I will be getting involved with this, so let me see if I can summarize what I understand what has been discussed so far. It looks like the big-picture direction of this is to allow tools to specify a time interval for their metrics which could include archived data and continue on into the 'live' domain without the tools needing to be aware of where the data originated and continues to originate. That is, a tool may want data from some starting time to some ending time or from some starting time and continuing on into the future and the tool should not have to be bothered with the details of which archives contain the previous data or how how the future data will be obtained. A unified context was suggested for local data, but seems to have been replaced by the notion of a 'live' archive mode in which data would be obtained across archives, if needed, and in which an active archive would continue to be read as data is added to it, if needed. Given a specified time window, the distinction between -h and -a becomes blurred in this world. Since the data may not be local, an intermediate server has been suggested (either a new one or an extension to an existing server) which would handle the details of where to get data for a given time period for a given host, thus abstracting the idea of whether the data is local or remote. Some details of existing and previously existing tools which could read active pmlogger archives has been given along with their caveats. Hopefully I have it right so far. The area in which I will be getting involved, initially, will be the transition from archived to live data. So far, the discussion has focused on the difficulties of reading new data from an active archive. Maybe I missed it but the existence of an active archive suggests to me the existence of an active pmlogger which, suggests a reachable pmcd (perhaps via pmproxy). Has anyone suggested simply switching to obtaining live data from the pmcd rather than trying to read data from the active archive? Perhaps the concern was in missing a metric value still cached in pmlogger and not yet written to the archive? I'm sure that there would be additional synchronization issues. I just wanted to make sure that the idea had not already been raised and dismissed. Dave From nscott@redhat.com Mon Jan 20 16:16:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1AE167F37 for ; Mon, 20 Jan 2014 16:16:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B1479AC001 for ; Mon, 20 Jan 2014 14:16:35 -0800 (PST) X-ASG-Debug-ID: 1390256191-04bdf030e80f580001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 5EV603Koo5gX1T7x for ; Mon, 20 Jan 2014 14:16:31 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0KMGUMu024830; Mon, 20 Jan 2014 17:16:30 -0500 Date: Mon, 20 Jan 2014 17:16:30 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <432966179.7346611.1390256190604.JavaMail.root@redhat.com> In-Reply-To: <52DD7596.3040306@redhat.com> References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> Subject: Re: [pcp] braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: EHulGzo5ch/QqFzUnzRKp6kOOKB8ig== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390256191 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144301 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Dave, ----- Original Message ----- > Hi All, > > It looks like I will be getting involved with this, so let me see if I > can summarize what I understand what has been discussed so far. > > It looks like the big-picture direction of this is to allow tools to > specify a time interval for their metrics which could include archived > data and continue on into the 'live' domain without the tools needing to > be aware of where the data originated and continues to originate. That > is, a tool may want data from some starting time to some ending time or > from some starting time and continuing on into the future and the tool > should not have to be bothered with the details of which archives > contain the previous data or how how the future data will be obtained. *nod* > A unified context was suggested for local data, but seems to have been > replaced Personally, I was unconvinced that the recent round of suggestions was a step forward, so for me definitely not "replaced" ... I do still have a strong preference for Plan A; everything stated there matches my current thinking re the ideal long term approach we should take ("Plan A" being: http://oss.sgi.com/pipermail/pcp/2013-September/003963.html) Also note the above mail does not mean "local data" only. See the final para there - "We do however have pmproxy up our sleeves...". pmproxy is a client, which creates __pmContexts - which can be unified contexts too. Work remains to define protocol extensions that would suit querying that historical data (which is true of all suggested approaches). Also also, it might not have been clear in the original mail but dealing with *multiple, potentially overlapping* archives for the same host is also very much needed, and done transparently (as well as live/archive switching). And this is probably the most difficult part - archives can overlap, some may be growing, new metrics can come along into existing archives (pmlc), the overlaps can be temporal, and metrics, or a metrics instances, will be in sometimes overlapping, other times disjoint sets - tough problems lurking there that need to be worked through. There can also be quite a few archive files to deal with (in the order of 1000s per host after a couple of years of data collection). > by the notion of a 'live' archive mode in which data would be > obtained across archives, if needed, and in which an active archive > would continue to be read as data is added to it, if needed. Given a > specified time window, the distinction between -h and -a becomes blurred > in this world. > > Since the data may not be local, an intermediate server has been > suggested (either a new one or an extension to an existing server) which > would handle the details of where to get data for a given time period > for a given host, thus abstracting the idea of whether the data is local > or remote. > > Some details of existing and previously existing tools which could read > active pmlogger archives has been given along with their caveats. Max also had a suggestion around ordering log label writes so that the updated log end time is only written to the log label once the data has been flushed. Pretty sure the code doesn't do that currently, not sure if its needed (given existing code in place now), but it sounded like a good synchronisation option if tailing log data is still problematic (I don't know the answer to that - we need to find out). > Hopefully I have it right so far. > > The area in which I will be getting involved, initially, will be the > transition from archived to live data. So far, the discussion has > focused on the difficulties of reading new data from an active archive. > Maybe I missed it but the existence of an active archive suggests to me > the existence of an active pmlogger which, suggests a reachable pmcd > (perhaps via pmproxy). Has anyone suggested simply switching to > obtaining live data from the pmcd rather than trying to read data from > the active archive? Yes - that is (part of) Plan A... "Capturing end of archive (PM_ERR_EOL) and transitioning to a separate, live context". Its necessary for both to be in place - think of tools like pmchart, where interaction with the archive and fetching from it is very complex (new metrics are added to the fetched set on-the-fly, and it may run for a long time with archives actively growing/changing/appearing underneath it). [by "both" above, I mean both reading an actively growing archive & then transitioning to a real host context - and back again, in pmcharts case] The new context type (unified, as opposed to one host or one archive) will need to manage a set of archive/host contexts, IOW. In impl.h, __pmContext will need extension to manage multiple __pmArchCtl's (so, c_archctl will need to become a tree structure with an efficient time- range lookup) and ideally we will add to that tree dynamically, as new archives appear. > Perhaps the concern was in missing a metric value > still cached in pmlogger and not yet written to the archive? I'm sure > that there would be additional synchronization issues. I just wanted to > make sure that the idea had not already been raised and dismissed. Right. In terms of synchronisation issues, see src/libpcp/src/logutil.c __pmGetArchiveEnd which deals with many, many such issues already, and also interp.c (mwahahahah!) __pmLogFetchInterp (ctxp->c_archctl->ac_end) which uses that interface under the covers. cheers. -- Nathan From fche@redhat.com Mon Jan 20 19:12:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 107B37F37 for ; Mon, 20 Jan 2014 19:12:13 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id EB297304032 for ; Mon, 20 Jan 2014 17:12:09 -0800 (PST) X-ASG-Debug-ID: 1390266722-04cb6c750712d90001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id QvBrTSOfr9IViD7q for ; Mon, 20 Jan 2014 17:12:02 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0L1C2dC005772 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 20 Jan 2014 20:12:02 -0500 Received: from fche.csb (vpn-61-164.rdu2.redhat.com [10.10.61.164]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0L1C1cR020381; Mon, 20 Jan 2014 20:12:02 -0500 Received: by fche.csb (Postfix, from userid 2569) id 544AA58392; Mon, 20 Jan 2014 20:12:01 -0500 (EST) To: Nathan Scott Cc: Dave Brolley , pcp@oss.sgi.com Subject: Re: braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging From: fche@redhat.com (Frank Ch. Eigler) Date: Mon, 20 Jan 2014 20:12:01 -0500 In-Reply-To: <432966179.7346611.1390256190604.JavaMail.root@redhat.com> (Nathan Scott's message of "Mon, 20 Jan 2014 17:16:30 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390266722 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 nathans wrote: > Personally, I was unconvinced that the recent round of suggestions was a > step forward, so for me definitely not "replaced" ... > I do still have a strong preference for Plan A; everything stated > there matches my current thinking re the ideal long term approach we > should take ("Plan A" being: > http://oss.sgi.com/pipermail/pcp/2013-September/003963.html) That message spells out a number of capability/user-interface desiderata, without much of a proposal for implementation mechanics. Since that message, further conversation indicates Nathan believes that libpcp would be a good place for all the intelligence needed to overcome the many complex issues he lists. My recent message assumed approximately the same desiderata, and proposed a specific two-staged implementation. Here, libpcp does not carry any significant complexity, only the single-growing-archive case ("stage 1", "-a ARCHIVE"). For the more-complex cases ("stage 2"), all the intelligence would be loaded into a server process, to whom pcp clients would connect using a slightly extended pcp wire protocol, but the same "-h SERVER" user interface. So we need to resolve which of these should be pursued. However, for brolley's purposes, initial focus on the single-growing-archive case seems to be common to both possible paths. - FChE From nscott@redhat.com Tue Jan 21 02:04:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3075E7F3F for ; Tue, 21 Jan 2014 02:04:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CDAF48F807A for ; Tue, 21 Jan 2014 00:04:30 -0800 (PST) X-ASG-Debug-ID: 1390291465-04bdf030ea2e1b0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id oU20o0bVliJZdWqm for ; Tue, 21 Jan 2014 00:04:25 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0L84L6G030855; Tue, 21 Jan 2014 03:04:21 -0500 Date: Tue, 21 Jan 2014 03:04:21 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1375359312.7510569.1390291461367.JavaMail.root@redhat.com> In-Reply-To: References: <1086676365.1292166.1389671284562.JavaMail.root@redhat.com> <52D4E2C9.4010205@internode.on.net> <223161620.2279579.1389740441989.JavaMail.root@redhat.com> Subject: Re: pmlogger(1) task_t optimisations MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pmlogger(1) task_t optimisations Content-Type: multipart/mixed; boundary="----=_Part_7510567_377964548.1390291461364" X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmlogger(1) task_t optimisations Thread-Index: Ljrq1jDN8WAOIVpE68m1wC1gfwieQg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1390291465 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144317 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ------=_Part_7510567_377964548.1390291461364 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi guys, ----- Original Message ----- > > fche wrote: > > [...] > > An ideal outcome would have been 1 task_t matching just that > > final block - one pmFetch PDU, one sample on the server side, > > one timestamp, and one result logged. > > Right. One way to do this would be to have the parser generate one > task_t per "(permission,time)" tuple rather than build duplicates > per config-language { } group. Then as we parse metrics, they'd get > dropped into the one-or-few distinct task_t's, duplicate-eliminated > as we go, and optfetched then or once at the end. *nod* - this was the direction that earlier patch was starting to head, and which the attached patch now has almost completed (tests 061 and 087 are not yet playing ball, but that'll have to be a job for tomorrow). > kenj wrote: > [...] > OK and good luck with optfetch .. we know who wrote that code, and let > me only say that optfetch was the warm-up exercise before the interp.c > main game! Hah! > One thing you'll have to watch in the pmlogger change is that the -r > option will no longer work ... this very useful option reports archive > size projections based on the config block and does not enumerate all > the metrics in the block in the report ... you'll need to change this to > report per task_t and list all metrics in the pmFetch (as the rationale > here is to be able to tune the config file if the archives are becoming > too large) ... if you get too aggressive with rolling config blocks into > a small number of task_t's this won't be possible, or the report will > have to be per metric (which may be a better idea anyway). Probably > needs some sleep and think time on this, rather than design on the fly. So far I've gone with the same scheme Frank introduced, which is to stick with the task_t's but now display all metrics within each (non ellipsis- shortened variant). It will behave slightly differently since task_t's are now a little more optimal, but it seems readable to me & easy to nut out what's being logged at what rate, what sizes to expect, etc. If you have time, please review the attached patch. It applies to a tree with commits 764a143d & e2301eb9 reverted (keeping 87fb3a93, as discussed above); it also contains test 726 exercising that task_t rearrangement is happening in the way we're after. It does not tackle the one other optimisation Frank suggested (looking for blocks with intervals that are multiples of another) - that can be an exercise for the reader. ;) So far so good anyway - if those last couple of failures are nothing too terrible and nothing falls out of review, I'll go ahead and push this in (hopefully tomorrow). cheers. -- Nathan ------=_Part_7510567_377964548.1390291461364 Content-Type: text/x-patch; name=revised-pmlogger-task-optimisation.patch Content-Disposition: attachment; filename=revised-pmlogger-task-optimisation.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3FhLzI0OCBiL3FhLzI0OAppbmRleCAzY2VjNWFlLi44MGFiNmRmIDEwMDc1 NQotLS0gYS9xYS8yNDgKKysrIGIvcWEvMjQ4CkBAIC0yLDYgKzIsNyBAQAogIyBQQ1AgUUEgVGVz dCBOby4gMjQ4CiAjIGlzIHBtbG9nZ2VyIHRvbGVyYW50IG9mIG1ldHJpYyBsb29rdXAgd2l0aGlu IGEgZ3JvdXA/CiAjCisjIENvcHlyaWdodCAoYykgMjAxNCBSZWQgSGF0LgogIyBDb3B5cmlnaHQg KGMpIDE5OTUtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVk LgogIwogCkBAIC02Myw3ICs2NCw3IEBAIGxvZyBhZHZpc29yeSBvbiAyMDAgbXNlYyB7CiB9CiBF bmQtb2YtRmlsZQogCi1wbWxvZ2dlciAtYyAkdG1wLmNvbmZpZyAtRGFwcGwxIC1zIDYgLWwgJHRt cC5sb2cgJHRtcCA+JHRtcC5lcnIgMj4mMSAmCitwbWxvZ2dlciAtYyAkdG1wLmNvbmZpZyAtcyA2 IC1sICR0bXAubG9nICR0bXAgPiR0bXAuZXJyIDI+JjEgJgogbG9nZ2VyX3BpZD0kIQogd2FpdAog CmRpZmYgLS1naXQgYS9xYS8yNDgub3V0LjIgYi9xYS8yNDgub3V0LjIKaW5kZXggMDU4MzBkNy4u MGQ4NTQ3ZSAxMDA2NDQKLS0tIGEvcWEvMjQ4Lm91dC4yCisrKyBiL3FhLzI0OC5vdXQuMgpAQCAt NywxMiArNyw2IEBAIFJlYXNvbjogVW5rbm93biBtZXRyaWMgbmFtZQogV2FybmluZyBbQ09ORklH LCBsaW5lIDgtb3ItOV0KIERlc2NyaXB0aW9uIHVuYXZhaWxhYmxlIGZvciBtZXRyaWMgInNhbXBs ZS5iYWQudW5rbm93biIgLi4uIG5vdCBsb2dnZWQKIFJlYXNvbjogVW5rbm93biBvciBpbGxlZ2Fs IG1ldHJpYyBpZGVudGlmaWVyCi1XYXJuaW5nIFtDT05GSUcsIGxpbmUgMTBdCi1FbGltaW5hdGlu ZyBkdXBsaWNhdGUgbWV0cmljICJzYW1wbGUubWlsbGlzZWNvbmRzIgotV2FybmluZyBbQ09ORklH LCBsaW5lIDExXQotRWxpbWluYXRpbmcgZHVwbGljYXRlIG1ldHJpYyAic2FtcGxlLmRhZW1vbl9w aWQiCi1XYXJuaW5nIFtDT05GSUcsIGxpbmUgMTQtb3ItMTVdCi1FbGltaW5hdGluZyBkdXBsaWNh dGUgbWV0cmljICJzYW1wbGUuZGFlbW9uX3BpZCIKIFdhcm5pbmcgW0NPTkZJRywgbGluZSAxNC1v ci0xNV0KIERlc2NyaXB0aW9uIHVuYXZhaWxhYmxlIGZvciBtZXRyaWMgInNhbXBsZS5iYWQudW5r bm93biIgLi4uIG5vdCBsb2dnZWQKIFJlYXNvbjogVW5rbm93biBvciBpbGxlZ2FsIG1ldHJpYyBp ZGVudGlmaWVyCmRpZmYgLS1naXQgYS9xYS80MTggYi9xYS80MTgKaW5kZXggMzZhNTViMi4uZjQz YjI4MSAxMDA3NTUKLS0tIGEvcWEvNDE4CisrKyBiL3FhLzQxOApAQCAtMzgsNyArMzgsNyBAQCBl bHNlCiAgICAgZXhpdAogZmkKIAotcG1kdW1wbG9nICR0bXAgfCBfZmlsdGVyX3BtZHVtcGxvZyB8 IGdyZXAgc2FtcGxlCitwbWR1bXBsb2cgJHRtcCB8IF9maWx0ZXJfcG1kdW1wbG9nIHwgZ3JlcCBz YW1wbGUgfCBzb3J0IC1uIC1rMgogcG1kdW1wbG9nICR0bXAgPj4kc2VxLmZ1bGwKIAogZWNobwpA QCAtNjEsNyArNjEsNyBAQCBlbHNlCiAgICAgZXhpdAogZmkKIAotcG1kdW1wbG9nICR0bXAgfCBf ZmlsdGVyX3BtZHVtcGxvZyB8IGdyZXAgc2FtcGxlCitwbWR1bXBsb2cgJHRtcCB8IF9maWx0ZXJf cG1kdW1wbG9nIHwgZ3JlcCBzYW1wbGUgfCBzb3J0IC1uIC1rMgogcG1kdW1wbG9nICR0bXAgPj4k c2VxLmZ1bGwKIAogIyBzdWNjZXNzLCBhbGwgZG9uZQpkaWZmIC0tZ2l0IGEvcWEvNDE4Lm91dCBi L3FhLzQxOC5vdXQKaW5kZXggOTM2ZGFhNi4uM2FjY2NlMyAxMDA2NDQKLS0tIGEvcWEvNDE4Lm91 dAorKysgYi9xYS80MTgub3V0CkBAIC0xLDEyICsxLDEyIEBACiBRQSBvdXRwdXQgY3JlYXRlZCBi eSA0MTgKIGV4cGVjdCAyIHggb25lIGFuZCAwIHggbWlsbGlvbgotVElNRVNUQU1QICAyOS4wLjE1 IChzYW1wbGUuZmxvYXQub25lKTogdmFsdWUgMQogVElNRVNUQU1QICAyOS4wLjEwIChzYW1wbGUu bG9uZy5vbmUpOiB2YWx1ZSAxCitUSU1FU1RBTVAgIDI5LjAuMTUgKHNhbXBsZS5mbG9hdC5vbmUp OiB2YWx1ZSAxCiAKIGV4cGVjdCAyIHggb25lIGFuZCA0IHggbWlsbGlvbgotVElNRVNUQU1QICAy OS4wLjE4IChzYW1wbGUuZmxvYXQubWlsbGlvbik6IHZhbHVlIDEwMDAwMDAKK1RJTUVTVEFNUCAg MjkuMC4xMCAoc2FtcGxlLmxvbmcub25lKTogdmFsdWUgMQorVElNRVNUQU1QICAyOS4wLjEzIChz YW1wbGUubG9uZy5taWxsaW9uKTogdmFsdWUgMTAwMDAwMAogVElNRVNUQU1QICAyOS4wLjEzIChz YW1wbGUubG9uZy5taWxsaW9uKTogdmFsdWUgMTAwMDAwMAogVElNRVNUQU1QICAyOS4wLjE1IChz YW1wbGUuZmxvYXQub25lKTogdmFsdWUgMQotVElNRVNUQU1QICAyOS4wLjEwIChzYW1wbGUubG9u Zy5vbmUpOiB2YWx1ZSAxCiBUSU1FU1RBTVAgIDI5LjAuMTggKHNhbXBsZS5mbG9hdC5taWxsaW9u KTogdmFsdWUgMTAwMDAwMAotVElNRVNUQU1QICAyOS4wLjEzIChzYW1wbGUubG9uZy5taWxsaW9u KTogdmFsdWUgMTAwMDAwMAorVElNRVNUQU1QICAyOS4wLjE4IChzYW1wbGUuZmxvYXQubWlsbGlv bik6IHZhbHVlIDEwMDAwMDAKZGlmZiAtLWdpdCBhL3FhLzQ2NSBiL3FhLzQ2NQppbmRleCBmOGIw YTNkLi5lODkxMDk4IDEwMDc1NQotLS0gYS9xYS80NjUKKysrIGIvcWEvNDY1CkBAIC0yLDYgKzIs NyBAQAogIyBQQ1AgUUEgVGVzdCBOby4gNDY1CiAjIHBtZHVtcGxvZyAtcwogIworIyBDb3B5cmln aHQgKGMpIDIwMTQgUmVkIEhhdC4KICMgQ29weXJpZ2h0IChjKSAxOTk1LTIwMDIgU2lsaWNvbiBH cmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICMKIApAQCAtMTUsNyArMTYsMTEg QEAgZWNobyAiUUEgb3V0cHV0IGNyZWF0ZWQgYnkgJHNlcSIKIC4gLi9sb2NhbGNvbmZpZwogCiBy bSAtZiAkc2VxLm91dAotaWYgWyAkUENQX1ZFUiAtZ2UgMzgxMCBdCitpZiBbICRQQ1BfVkVSIC1n ZSAzODExIF0KK3RoZW4KKyAgICBsbiAkc2VxLm91dC40ICRzZXEub3V0CisgICAgZWNobyAiW1Zl cnNpb24gZm9yIFBDUCAzLjguMTEgb3IgbGF0ZXJdIgorZWxpZiBbICRQQ1BfVkVSIC1nZSAzODEw IF0KIHRoZW4KICAgICBsbiAkc2VxLm91dC4zICRzZXEub3V0CiAgICAgZWNobyAiW1ZlcnNpb24g Zm9yIFBDUCAzLjguMTAgb3IgbGF0ZXJdIgpAQCAtMzgsNyArNDMsNyBAQCBzdGF0dXM9MQkjIGZh aWx1cmUgaXMgdGhlIGRlZmF1bHQhCiB0cmFwICJybSAtZiAkdG1wLio7IGV4aXQgXCRzdGF0dXMi IDAgMSAyIDMgMTUKIAogIyByZWFsIFFBIHRlc3Qgc3RhcnRzIGhlcmUKLWNhdCA8PEVuZC1vZi1G aWxlIHwgcG1sb2dnZXIgLURhcHBsMSAtbCAkdG1wLmxvZyAtVCAzc2VjICR0bXAKK2NhdCA8PEVu ZC1vZi1GaWxlIHwgcG1sb2dnZXIgLURhcHBsMSAtbCAkdG1wLmxvZyAtVCAxc2VjICR0bXAKIGxv ZyBtYW5kYXRvcnkgb24gb25jZSB7CiAgICAgc2FtcGxlLmNvbnRyb2wKIH0KQEAgLTU1LDEyICs2 MCw2IEBAIGxvZyBtYW5kYXRvcnkgb24gb25jZSB7CiAgICAgc2FtcGxlLnN0cmluZy5udWxsCiB9 CiBsb2cgbWFuZGF0b3J5IG9uIG9uY2UgewotICAgIHNhbXBsZS5zdHJpbmcuaHVsbG8KLX0KLWxv ZyBtYW5kYXRvcnkgb24gb25jZSB7Ci0gICAgc2FtcGxlLmJpbgotfQotbG9nIG1hbmRhdG9yeSBv biBvbmNlIHsKICAgICBzYW1wbGUuY29udHJvbAogICAgIHNhbXBsZS5sb25nLm9uZQogICAgIHNh bXBsZS5mbG9hdC5vbmUKQEAgLTY5LDYgKzY4LDEyIEBAIGxvZyBtYW5kYXRvcnkgb24gb25jZSB7 CiAgICAgc2FtcGxlLnN0cmluZy5odWxsbwogICAgIHNhbXBsZS5iaW4KIH0KK2xvZyBtYW5kYXRv cnkgb24gb25jZSB7CisgICAgc2FtcGxlLnN0cmluZy5odWxsbworfQorbG9nIG1hbmRhdG9yeSBv biBvbmNlIHsKKyAgICBzYW1wbGUuYmluCit9CiBFbmQtb2YtRmlsZQogCiBwbWR1bXBsb2cgLXMg JHRtcCAyPiYxIFwKZGlmZiAtLWdpdCBhL3FhLzQ2NS5vdXQuNCBiL3FhLzQ2NS5vdXQuNApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTA3YzdjCi0tLSAvZGV2L251bGwKKysr IGIvcWEvNDY1Lm91dC40CkBAIC0wLDAgKzEsMjAgQEAKK1FBIG91dHB1dCBjcmVhdGVkIGJ5IDQ2 NQorW1ZlcnNpb24gZm9yIFBDUCAzLjguMTEgb3IgbGF0ZXJdCisKK1syNzIgYnl0ZXNdCitUSU1F U1RBTVAgIDI5LjAuMzEgKHNhbXBsZS5zdHJpbmcuaHVsbG8pOiB2YWx1ZSAiaHVsbG8gd29ybGQh IgorICAgICAgICAgICAgICAyOS4wLjMwIChzYW1wbGUuc3RyaW5nLm51bGwpOiB2YWx1ZSAiIgor ICAgICAgICAgICAgICAyOS4wLjI1IChzYW1wbGUuZG91YmxlLm9uZSk6IHZhbHVlIDEKKyAgICAg ICAgICAgICAgMjkuMC4xNSAoc2FtcGxlLmZsb2F0Lm9uZSk6IHZhbHVlIDEKKyAgICAgICAgICAg ICAgMjkuMC4xMCAoc2FtcGxlLmxvbmcub25lKTogdmFsdWUgMQorICAgICAgICAgICAgICAyOS4w LjYgKHNhbXBsZS5iaW4pOgorICAgICAgICAgICAgICAgIGluc3QgWzEwMCBvciAiYmluLTEwMCJd IHZhbHVlIDEwMAorICAgICAgICAgICAgICAgIGluc3QgWzIwMCBvciAiYmluLTIwMCJdIHZhbHVl IDIwMAorICAgICAgICAgICAgICAgIGluc3QgWzMwMCBvciAiYmluLTMwMCJdIHZhbHVlIDMwMAor ICAgICAgICAgICAgICAgIGluc3QgWzQwMCBvciAiYmluLTQwMCJdIHZhbHVlIDQwMAorICAgICAg ICAgICAgICAgIGluc3QgWzUwMCBvciAiYmluLTUwMCJdIHZhbHVlIDUwMAorICAgICAgICAgICAg ICAgIGluc3QgWzYwMCBvciAiYmluLTYwMCJdIHZhbHVlIDYwMAorICAgICAgICAgICAgICAgIGlu c3QgWzcwMCBvciAiYmluLTcwMCJdIHZhbHVlIDcwMAorICAgICAgICAgICAgICAgIGluc3QgWzgw MCBvciAiYmluLTgwMCJdIHZhbHVlIDgwMAorICAgICAgICAgICAgICAgIGluc3QgWzkwMCBvciAi YmluLTkwMCJdIHZhbHVlIDkwMAorICAgICAgICAgICAgICAyOS4wLjAgKHNhbXBsZS5jb250cm9s KTogdmFsdWUgMApkaWZmIC0tZ2l0IGEvcWEvNDY2IGIvcWEvNDY2CmluZGV4IDVmOWFhYzAuLmYy OTA1NjUgMTAwNzU1Ci0tLSBhL3FhLzQ2NgorKysgYi9xYS80NjYKQEAgLTE1LDE1ICsxNSwxMSBA QCBlY2hvICJRQSBvdXRwdXQgY3JlYXRlZCBieSAkc2VxIgogLiAuL2NvbW1vbi5jaGVjawogLiAu L2xvY2FsY29uZmlnCiAKLWlmIFsgJFBDUF9FT0VfVkVSIC1lcSAyMDAwIC1vIFwKLSAgICBcKCAk UENQX0VPRV9WRVIgLWdlIDY1MDAgLWEgJFBDUF9FT0VfVkVSIC1sZSA2NTAxIFwpIF0gOyB0aGVu Ci0gICAgZWNobyAiVGhpcyB0ZXN0IGlzIGFwcGxpY2FibGUgb24gUENQIDIuMSBvciBJcml4IDYu NS4yIG9yIGxhdGVyIiA+ICRzZXEubm90cnVuCi0gICAgZWNobyAiJHNlcTogW25vdCBydW5dIGBj YXQgJHNlcS5ub3RydW5gIgotICAgIGV4aXQgMAotZmkKLQogcm0gLWYgJHNlcS5vdXQKLWlmIFsg JFBDUF9WRVIgLWdlIDM4MTAgXQoraWYgWyAkUENQX1ZFUiAtZ2UgMzgxMSBdCit0aGVuCisgICAg bG4gJHNlcS5vdXQuMyAkc2VxLm91dCB8fCBleGl0IDEKK2VsaWYgWyAkUENQX1ZFUiAtZ2UgMzgx MCBdCiB0aGVuCiAgICAgbG4gJHNlcS5vdXQuMSAkc2VxLm91dCB8fCBleGl0IDEKIGVsc2UKZGlm ZiAtLWdpdCBhL3FhLzQ2Ni5vdXQuMyBiL3FhLzQ2Ni5vdXQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41MDU4OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvcWEvNDY2Lm91dC4z CkBAIC0wLDAgKzEsMjkgQEAKK1FBIG91dHB1dCBjcmVhdGVkIGJ5IDQ2NgorCitHcm91cCBbNyBt ZXRyaWNzXSB7CisJc2FtcGxlLnN0cmluZy5odWxsbworCXNhbXBsZS5zdHJpbmcubnVsbAorCXNh bXBsZS5kb3VibGUub25lCisJc2FtcGxlLmZsb2F0Lm9uZQorCXNhbXBsZS5sb25nLm9uZQorCXNh bXBsZS5iaW4KKwlzYW1wbGUuY29udHJvbAorfSBsb2dnZWQgb25jZTogMjcyIGJ5dGVzCisKK01l dHJpYyBzYW1wbGUuY29udHJvbCBsb2dnZWQgZXZlcnkgMC41MDAgc2VjOiA0MCBieXRlcyBvciA2 LjU5IE1ieXRlcy9kYXkKKworR3JvdXAgWzIgbWV0cmljc10geworCXNhbXBsZS5sb25nLm9uZQor CXNhbXBsZS5jb250cm9sCit9IGxvZ2dlZCBldmVyeSAxIHNlYzogNjAgYnl0ZXMgb3IgNC45NCBN Ynl0ZXMvZGF5CisKK0dyb3VwIFs2IG1ldHJpY3NdIHsKKwlzYW1wbGUuc3RyaW5nLmh1bGxvCisJ c2FtcGxlLnN0cmluZy5udWxsCisJc2FtcGxlLmRvdWJsZS5vbmUKKwlzYW1wbGUuZmxvYXQub25l CisJc2FtcGxlLmJpbgorCXNhbXBsZS5jb250cm9sCit9IGxvZ2dlZCBldmVyeSAyIHNlYzogMjUy IGJ5dGVzIG9yIDEwLjM4IE1ieXRlcy9kYXkKK3BtbG9nZ2VyOiBFbmQgb2YgcnVuIHRpbWUsIGV4 aXRpbmcKKwpkaWZmIC0tZ2l0IGEvcWEvNzI2IGIvcWEvNzI2Cm5ldyBmaWxlIG1vZGUgMTAwNzU1 CmluZGV4IDAwMDAwMDAuLmI1NjM1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9xYS83MjYKQEAgLTAs MCArMSw3MiBAQAorIyEvYmluL3NoCisjIFBDUCBRQSBUZXN0IE5vLiA3MjYKKyMgRXhlcmNpc2Ug b3B0aW1hbCBwbWxvZ2dlciBoYW5kbGluZyBvZiBjb25maWcgZHVwbGljYXRlcworIyAobWV0cmlj cyBhbmQgaW5zdGFuY2VzKS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0IFJlZCBIYXQuCisjCisK K3NlcT1gYmFzZW5hbWUgJDBgCitlY2hvICJRQSBvdXRwdXQgY3JlYXRlZCBieSAkc2VxIgorCisj IGdldCBzdGFuZGFyZCBlbnZpcm9ubWVudCwgZmlsdGVycyBhbmQgY2hlY2tzCisuIC4vY29tbW9u LnByb2R1Y3QKKy4gLi9jb21tb24uZmlsdGVyCisuIC4vY29tbW9uLmNoZWNrCisKK3Rlc3QgJFBD UF9WRVIgLWdlIDM4MTEgfHwgX25vdHJ1biBOZWVkIG5ld2VyIHBtbG9nZ2VyIHZlcnNpb24KKwor c3RhdHVzPTEJIyBmYWlsdXJlIGlzIHRoZSBkZWZhdWx0IQorJHN1ZG8gcm0gLXJmICR0bXAuKiAk c2VxLmZ1bGwKK3RyYXAgInJtIC1mICR0bXAuKjsgZXhpdCBcJHN0YXR1cyIgMCAxIDIgMyAxNQor CisjIHJlYWwgUUEgdGVzdCBzdGFydHMgaGVyZQorY2F0IDw8RW5kLW9mLUZpbGUgfCBwbWxvZ2dl ciAtciAtbCAkdG1wLmxvZyAtVCAxc2VjICR0bXAKK2xvZyBtYW5kYXRvcnkgb24gb25jZSB7Cisg ICAgc2FtcGxlLmNvbnRyb2wKK30KK2xvZyBtYW5kYXRvcnkgb24gb25jZSB7CisgICAgc2FtcGxl Lmxvbmcub25lCit9Citsb2cgbWFuZGF0b3J5IG9uIG9uY2UgeworICAgIHNhbXBsZS5mbG9hdC5v bmUKK30KK2xvZyBtYW5kYXRvcnkgb24gb25jZSB7CisgICAgc2FtcGxlLmRvdWJsZS5vbmUKK30K K2xvZyBtYW5kYXRvcnkgb24gb25jZSB7CisgICAgc2FtcGxlLnN0cmluZy5udWxsCit9Citsb2cg bWFuZGF0b3J5IG9uIG9uY2UgeworICAgIHNhbXBsZS5iaW4gWyAiYmluLTcwMCIgXQorICAgIHNh bXBsZS5iaW4gWyAiYmluLTgwMCIgXQorICAgIHNhbXBsZS5iaW4gWyAiYmluLTEwMCIgXQorfQor bG9nIG1hbmRhdG9yeSBvbiBvbmNlIHsKKyAgICBzYW1wbGUuY29udHJvbAorICAgIHNhbXBsZS5s b25nLm9uZQorICAgIHNhbXBsZS5mbG9hdC5vbmUKKyAgICBzYW1wbGUuZG91YmxlLm9uZQorICAg IHNhbXBsZS5zdHJpbmcubnVsbAorICAgIHNhbXBsZS5zdHJpbmcuaHVsbG8KKyAgICBzYW1wbGUu YmluIFsgImJpbi0xMDAiLCAiYmluLTUwMCIgXQorfQorbG9nIG1hbmRhdG9yeSBvbiBvbmNlIHsK KyAgICBzYW1wbGUuYmluIFsgImJpbi01MDAiIF0KK30KK2xvZyBtYW5kYXRvcnkgb24gb25jZSB7 CisgICAgc2FtcGxlLnN0cmluZy5odWxsbworfQorRW5kLW9mLUZpbGUKK2VjaG8gInBtbG9nZ2Vy IGxvZyBmaWxlIGNvbnRlbnRzIiA+PiAkc2VxLmZ1bGwKK2NhdCAkdG1wLmxvZyA+PiAkc2VxLmZ1 bGwKKworZWNobyAicG1sb2dnZXIgYXJjaGl2ZSBjb250ZW50cyIgPj4gJHNlcS5mdWxsCitwbWR1 bXBsb2cgLXMgJHRtcCAyPiYxIFwKK3wgdGVlIC1hICRzZXEuZnVsbCBcCit8IF9maWx0ZXJfcG1k dW1wbG9nIFwKK3wgc2VkIC1lICcxLC9wbWNkLnBtbG9nZ2VyLmFyY2hpdmUvZCcKKworIyBzdWNj ZXNzLCBhbGwgZG9uZQorc3RhdHVzPTAKK2V4aXQKZGlmZiAtLWdpdCBhL3FhLzcyNi5vdXQgYi9x YS83MjYub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlY2EzNWEKLS0t IC9kZXYvbnVsbAorKysgYi9xYS83MjYub3V0CkBAIC0wLDAgKzEsMTQgQEAKK1FBIG91dHB1dCBj cmVhdGVkIGJ5IDcyNgorCitbMjMyIGJ5dGVzXQorVElNRVNUQU1QICAyOS4wLjMxIChzYW1wbGUu c3RyaW5nLmh1bGxvKTogdmFsdWUgImh1bGxvIHdvcmxkISIKKyAgICAgICAgICAgICAgMjkuMC4z MCAoc2FtcGxlLnN0cmluZy5udWxsKTogdmFsdWUgIiIKKyAgICAgICAgICAgICAgMjkuMC4yNSAo c2FtcGxlLmRvdWJsZS5vbmUpOiB2YWx1ZSAxCisgICAgICAgICAgICAgIDI5LjAuMTUgKHNhbXBs ZS5mbG9hdC5vbmUpOiB2YWx1ZSAxCisgICAgICAgICAgICAgIDI5LjAuMTAgKHNhbXBsZS5sb25n Lm9uZSk6IHZhbHVlIDEKKyAgICAgICAgICAgICAgMjkuMC42IChzYW1wbGUuYmluKToKKyAgICAg ICAgICAgICAgICBpbnN0IFsxMDAgb3IgImJpbi0xMDAiXSB2YWx1ZSAxMDAKKyAgICAgICAgICAg ICAgICBpbnN0IFs1MDAgb3IgImJpbi01MDAiXSB2YWx1ZSA1MDAKKyAgICAgICAgICAgICAgICBp bnN0IFs3MDAgb3IgImJpbi03MDAiXSB2YWx1ZSA3MDAKKyAgICAgICAgICAgICAgICBpbnN0IFs4 MDAgb3IgImJpbi04MDAiXSB2YWx1ZSA4MDAKKyAgICAgICAgICAgICAgMjkuMC4wIChzYW1wbGUu Y29udHJvbCk6IHZhbHVlIDAKZGlmZiAtLWdpdCBhL3FhL2dyb3VwIGIvcWEvZ3JvdXAKaW5kZXgg YTVmZDgxNi4uMjg4MTM1NiAxMDA2NDQKLS0tIGEvcWEvZ3JvdXAKKysrIGIvcWEvZ3JvdXAKQEAg LTg3OSw2ICs4NzksNyBAQCBhdmFoaQogNzIzIHBtZGEucHJvYyBsb2NhbCBvc3MKIDcyNCBwbWZp bmQgbG9jYWwgb3NzCiA3MjUgcG1kYS5qYmQyIGxvY2FsIG9zcworNzI2IHBtbG9nZ2VyIHBtZHVt cGxvZyBsb2NhbCBvc3MKIDczMyBwbWllIHBtdmFsIHBtZHVtcGxvZyBsb2NhbCBvc3MKIDczNSBw bWRhLnByb2MgbG9jYWwgb3NzCiA3MzYgcG1sb2dyZXdyaXRlIGxvY2FsIG9zcwpkaWZmIC0tZ2l0 IGEvc3JjL3BtbG9nZ2VyL3NyYy9jYWxsYmFjay5jIGIvc3JjL3BtbG9nZ2VyL3NyYy9jYWxsYmFj ay5jCmluZGV4IDAzMTk0ZDEuLjgwOWUxYjcgMTAwNjQ0Ci0tLSBhL3NyYy9wbWxvZ2dlci9zcmMv Y2FsbGJhY2suYworKysgYi9zcmMvcG1sb2dnZXIvc3JjL2NhbGxiYWNrLmMKQEAgLTMxNyw3ICsz MTcsNyBAQCBsb29rdXBUYXNrQ2FjaGVOYW1lcyhwbUlEIHBtaWQsIGNoYXIgKioqbmFtZXNwdHIp CiAKICAgICBmb3IgKHRwID0gdGFza2xpc3Q7IHRwICE9IE5VTEw7IHRwID0gdHAtPnRfbmV4dCkg ewogCWZvciAoaSA9IDA7IGkgPCB0cC0+dF9udW1wbWlkOyBpKyspIHsKLQkgICAgaWYgKHRwLT50 X3BtaWRsaXN0W2ldICE9IHBtaWQgfHwgdHAtPnRfbmFtZWxpc3RbaV0gPT0gTlVMTCkKKwkgICAg aWYgKHRwLT50X3BtaWRsaXN0W2ldICE9IHBtaWQpCiAJCWNvbnRpbnVlOwogCSAgICBsZW4gKz0g c3RybGVuKHRwLT50X25hbWVsaXN0W2ldKSArIDE7CiAJICAgIG51bW5hbWVzKys7CkBAIC0zMjgs NyArMzI4LDcgQEAgbG9va3VwVGFza0NhY2hlTmFtZXMocG1JRCBwbWlkLCBjaGFyICoqKm5hbWVz cHRyKQogICAgIGRhdGEgPSAoY2hhciAqKW5hbWVzICsgKG51bW5hbWVzICogc2l6ZW9mKG5hbWVz WzBdKSk7CiAgICAgZm9yICh0cCA9IHRhc2tsaXN0LCBsZW4gPSAwOyB0cCAhPSBOVUxMOyB0cCA9 IHRwLT50X25leHQpIHsKIAlmb3IgKGkgPSAwOyBpIDwgdHAtPnRfbnVtcG1pZDsgaSsrKSB7Ci0J ICAgIGlmICh0cC0+dF9wbWlkbGlzdFtpXSAhPSBwbWlkIHx8IHRwLT50X25hbWVsaXN0W2ldID09 IE5VTEwpCisJICAgIGlmICh0cC0+dF9wbWlkbGlzdFtpXSAhPSBwbWlkKQogCQljb250aW51ZTsK IAkgICAgbmFtZXNbbGVuKytdID0gZGF0YTsKIAkgICAgc3RyY3B5KGRhdGEsIHRwLT50X25hbWVs aXN0W2ldKTsKZGlmZiAtLWdpdCBhL3NyYy9wbWxvZ2dlci9zcmMvZG9wZHUuYyBiL3NyYy9wbWxv Z2dlci9zcmMvZG9wZHUuYwppbmRleCAyNThhMWFiLi41NDRiMWU4IDEwMDY0NAotLS0gYS9zcmMv cG1sb2dnZXIvc3JjL2RvcGR1LmMKKysrIGIvc3JjL3BtbG9nZ2VyL3NyYy9kb3BkdS5jCkBAIC0x LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBSZWQgSGF0LiAgQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IFJlZCBIYXQuICBBbGwgUmln aHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAxOTk1LTIwMDEgU2lsaWNvbiBHcmFwaGlj cywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIAogICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKQEAg LTgwLDExICs4MCw4IEBAIHJlYWxpdHlfY2hlY2sodm9pZCkKIAkgICAgfQogCX0KICAgICB9Ci0K LSAgICAKIH0KIAotLyogQ2FsbCB0aGlzIGluIGRieCB0byBkdW1wIHRoZSB0YXNrIGxpc3QgKGRi eCBkb2Vzbid0IGtub3cgYWJvdXQgc3Rkb3V0KSAqLwogdm9pZAogZHVtcGl0KHZvaWQpCiB7CkBA IC0xNTMsMTYgKzE1MCw2IEBAIGRpZShjaGFyICpuYW1lLCBpbnQgc3RzKQogICAgIGV4aXQoMSk7 CiB9CiAKLXN0YXRpYyB2b2lkCi1saW5rYmFjayh0YXNrX3QgKnRwKQotewotICAgIGZldGNoY3Rs X3QJKmZjcDsKLQotICAgIC8qIGxpbmsgdGhlIG5ldyBmZXRjaCBncm91cHMgYmFjayB0byB0aGVp ciB0YXNrICovCi0gICAgZm9yIChmY3AgPSB0cC0+dF9mZXRjaDsgZmNwICE9IE5VTEw7IGZjcCA9 IGZjcC0+Zl9uZXh0KQotCWZjcC0+Zl9hdXggPSAodm9pZCAqKXRwOwotfQotCiBvcHRyZXFfdCAq CiBmaW5kb3B0cmVxKHBtSUQgcG1pZCwgaW50IGluc3QpCiB7CkBAIC0xODAsNyArMTY3LDcgQEAg ZmluZG9wdHJlcShwbUlEIHBtaWQsIGludCBpbnN0KQogICAgICAqIHN0cnVjdHVyZXMgbHlpbmcg YWJvdXQsIGkuZS4gTUFZQkUgKG1hbmRhdG9yeSkgaXMgdGhlIGRlZmF1bHQsCiAgICAgICogYW5k IGRvZXMgbm90IGhhdmUgdG8gYmUgZXhwbGljaXRseSBzdG9yZWQsIHdoaWxlIE9GRiAoYWR2aXNv cnkpCiAgICAgICogcmV2ZXJ0cyB0byBNQVlCRSAobWFuZGF0b3J5KS4KLSAgICAgKiBUaGVyZSBp cyBvbmUgZXhlY3B0aW9uIHRvIHRoZSBhYm92ZSBhc3N1bXB0aW9uLCBuYW1lbHkgZm9yCisgICAg ICogVGhlcmUgaXMgb25lIGV4Y2VwdGlvbiB0byB0aGUgYWJvdmUgYXNzdW1wdGlvbiwgbmFtZWx5 IGZvcgogICAgICAqIGNhc2VzIHdoZXJlIHRoZSBpbml0aWFsIHNwZWNpZmljYXRpb24gaW5jbHVk ZXMgImFsbCIgaW5zdGFuY2VzLAogICAgICAqIHRoZW4gc29tZSBsYXRlciBjb25jdXJyZW50IHNw ZWNpZmljYXRpb24gbWF5IHJlZmVyIHRvIHNwZWNpZmljCiAgICAgICogaW5zdGFuY2VzIC4uLiBp biB0aGlzIGNhc2UsIHRoZSBzcGVjaWZpYyBvcHRyZXFfdCBzdHJ1Y3R1cmUgaXMKQEAgLTc0Niwz MSArNzMzLDYgQEAgdXBkYXRlX21ldHJpYyhwbVZhbHVlU2V0ICp2c3AsIGludCByZXFzdGF0ZSwg aW50IG1mbGFncywgdGFza190ICoqcmVzdWx0KQogICAgIHJldHVybiAwOwogfQogCi0vKiBHaXZl biBhIHN0YXRlIGFuZCBhIGRlbHRhLCByZXR1cm4gaW4gcmVzdWx0IHRoZSBmaXJzdCBtYXRjaGlu ZyB0YXNrLgotICogUmV0dXJuIHRydWUgaWYgYSBtYXRjaGluZyB0YXNrIHdhcyBmb3VuZAotICov Ci1zdGF0aWMgaW50Ci1maW5kX3Rhc2soaW50IHN0YXRlLCBpbnQgZGVsdGEsIHRhc2tfdCAqKnJl c3VsdCkKLXsKLSAgICB0YXNrX3QJKnRwOwotICAgIGludAkJdGRlbHRhOwotCi0gICAgLyogTmV2 ZXIgcmV0dXJuIGEgIm9uY2Ugb25seSIgdGFzaywgaXQgbWF5IGhhdmUgZ29uZSBvZmYgYWxyZWFk eSBhbmQganVzdAotICAgICAqIGJlIGhhbmdpbmcgYXJvdW5kCi0gICAgICogVE9ETzogY2xlYW51 cCBvbmNlIG9ubHkgdGFza3MgYWZ0ZXIgY2FsbGJhY2sgaW52b2tlZAotICAgICAqLwotICAgIGlm IChkZWx0YSA9PSAwKQotCXJldHVybiAwOwotCi0gICAgZm9yICh0cCA9IHRhc2tsaXN0OyB0cCAh PSBOVUxMOyB0cCA9IHRwLT50X25leHQpIHsKLQl0ZGVsdGEgPSB0cC0+dF9kZWx0YS50dl9zZWMg KiAxMDAwICsgKHRwLT50X2RlbHRhLnR2X3VzZWMgLyAxMDAwKTsKLQlpZiAoc3RhdGUgPT0gKHRw LT50X3N0YXRlICYgMHgzKSAmJiBkZWx0YSA9PSB0ZGVsdGEpCi0JICAgIGJyZWFrOwotICAgIH0K LSAgICAqcmVzdWx0ID0gdHA7Ci0gICAgcmV0dXJuIHRwICE9IE5VTEw7Ci19Ci0KIC8qIFJldHVy biBhIG1hc2sgY29udGFpbmluZyB0aGUgaGlzdG9yeSBmbGFncyBmb3IgYSBnaXZlbiBtZXRyaWMv aW5zdGFuY2UuCiAgKiB0aGUgaGlzdG9yeSBmbGFncyBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBtZXRy aWMvaW5zdGFuY2UgaXMgaW4gdGhlIGxvZyBhdCBhbGwKICAqIGFuZCB3aGV0aGVyIHRoZSBsYXN0 IGZldGNoIG9mIHRoZSBtZXRyaWMvaW5zdGFuY2Ugd2FzIHN1Y2Nlc3NmdWwuCkBAIC03ODEsNyAr NzQzLDcgQEAgZmluZF90YXNrKGludCBzdGF0ZSwgaW50IGRlbHRhLCB0YXNrX3QgKipyZXN1bHQp CiBzdGF0aWMgaW50CiBnZXRoaXN0ZmxhZ3MocG1JRCBwbWlkLCBpbnQgaW5zdCkKIHsKLSAgICBf X3BtSGFzaE5vZGUJCSpocDsKKyAgICBfX3BtSGFzaE5vZGUJKmhwOwogICAgIHBtaWRoaXN0X3QJ CSpwaHA7CiAgICAgaW5zdGhpc3RfdAkJKmlocDsKICAgICBpbnQJCQlpLCBmb3VuZDsKQEAgLTEw NTEsNiArMTAxMyw3IEBAIGRvX2NvbnRyb2woX19wbVBEVSAqcGIpCiAJLyogdXBkYXRlIHRoZSBs b2dnaW5nIHN0YXR1cyBvZiBtZXRyaWNzICovCiAKIAl0YXNrX3QJCSpuZXd0cCA9IE5VTEw7IC8q IHRhc2sgZm9yIG1ldHJpY3MvaW5zdHMgaW4gcmVxdWVzdCAqLworCXN0cnVjdCB0aW1ldmFsCXRk ZWx0YSA9IHsgMCB9OwogCWludAkJbmV3dGFzazsKIAlpbnQJCW1mbGFnczsKIApAQCAtMTA2OSw4 ICsxMDMyLDE2IEBAIGRvX2NvbnRyb2woX19wbVBEVSAqcGIpCiAJCVBNTENfU0VUX01BTkQocmVx c3RhdGUsIDEpOwogCX0KIAotCS8qIHRyeSB0byBmaW5kIGFuIGV4aXN0aW5nIHRhc2sgZm9yIHRo ZSByZXF1ZXN0ICovCi0JbmV3dGFzayA9ICFmaW5kX3Rhc2socmVxc3RhdGUsIGRlbHRhLCAmbmV3 dHApOworCS8qIHRyeSB0byBmaW5kIGFuIGV4aXN0aW5nIHRhc2sgZm9yIHRoZSByZXF1ZXN0CisJ ICogTmV2ZXIgcmV0dXJuIGEgIm9uY2Ugb25seSIgdGFzaywgaXQgbWF5IGhhdmUgZ29uZSBvZmYg YWxyZWFkeSBhbmQganVzdAorCSAqIGJlIGhhbmdpbmcgYXJvdW5kIGxpa2UgYSBiYWQgc21lbGwu CisJICovCisJaWYgKGRlbHRhICE9IDApIHsKKwkgICAgdGRlbHRhLnR2X3NlYyA9IGRlbHRhIC8g MTAwMDsKKwkgICAgdGRlbHRhLnR2X3VzZWMgPSAoZGVsdGEgJSAxMDAwKSAqIDEwMDA7CisJICAg IG5ld3RwID0gZmluZHRhc2socmVxc3RhdGUsICZ0ZGVsdGEpOworCX0KKwluZXd0YXNrID0gKG5l d3RwID09IE5VTEwpOwogCiAJZm9yIChpID0gMDsgaSA8IHJlcXVlc3QtPm51bXBtaWQ7IGkrKykg ewogCSAgICB2c3AgPSByZXF1ZXN0LT52c2V0W2ldOwpAQCAtMTExMiwxNCArMTA4MywxMyBAQCBk b19jb250cm9sKF9fcG1QRFUgKnBiKQogCQkvKiB1c2Ugb25seSB0aGUgTUFORC9BRFYgYW5kIE9O L09GRiBiaXRzIG9mIHJlcXN0YXRlICovCiAJCW5ld3RwLT50X3N0YXRlID0gcmVxc3RhdGUgJiAw eDM7CiAJCWlmIChQTUxDX0dFVF9PTihyZXFzdGF0ZSkpIHsKLQkJICAgIG5ld3RwLT50X2RlbHRh LnR2X3NlYyA9IGRlbHRhIC8gMTAwMDsKLQkJICAgIG5ld3RwLT50X2RlbHRhLnR2X3VzZWMgPSAo ZGVsdGEgJSAxMDAwKSAqIDEwMDA7Ci0JCSAgICBuZXd0cC0+dF9hZmlkID0gX19wbUFGcmVnaXN0 ZXIoJm5ld3RwLT50X2RlbHRhLCAodm9pZCAqKW5ld3RwLAorCQkgICAgbmV3dHAtPnRfZGVsdGEg PSB0ZGVsdGE7CisJCSAgICBuZXd0cC0+dF9hZmlkID0gX19wbUFGcmVnaXN0ZXIoJnRkZWx0YSwg KHZvaWQgKiluZXd0cCwKIAkJCQkJICAgICAgIGxvZ19jYWxsYmFjayk7CiAJCX0KIAkJZWxzZQog CQkgICAgbmV3dHAtPnRfZGVsdGEudHZfc2VjID0gbmV3dHAtPnRfZGVsdGEudHZfdXNlYyA9IDA7 Ci0JCWxpbmtiYWNrKG5ld3RwKTsJLyogVE9ETzogcmVhbGx5IG5lZWRlZD8gKG5vKSAqLworCQls aW5rYmFjayhuZXd0cCk7CiAJICAgIH0KIAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3BtbG9n Z2VyL3NyYy9ncmFtLnkgYi9zcmMvcG1sb2dnZXIvc3JjL2dyYW0ueQppbmRleCA3YjNmZWI0Li43 NTE4ZTFmIDEwMDY0NAotLS0gYS9zcmMvcG1sb2dnZXIvc3JjL2dyYW0ueQorKysgYi9zcmMvcG1s b2dnZXIvc3JjL2dyYW0ueQpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTMtMjAxNCBSZWQgSGF0LgogICogQ29weXJpZ2h0IChjKSAxOTk1LTIwMDEgU2lsaWNvbiBHcmFw aGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIAogICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK QEAgLTMxLDIyICszMiwxNyBAQAogI2luY2x1ZGUgImltcGwuaCIKICNpbmNsdWRlICJsb2dnZXIu aCIKIAotaW50CQlteXN0YXRlID0gR0xPQkFMOworaW50CQlteXN0YXRlID0gR0xPQkFMOwkvKiBj b25maWcgZmlsZSBwYXJzZXIgc3RhdGUgKi8KIAogX19wbUhhc2hDdGwJcG1faGFzaDsKIHRhc2tf dAkJKnRhc2tsaXN0OwotZmV0Y2hjdGxfdAkqZmV0Y2hyb290OwogCi1zdGF0aWMgaW50CXN0czsK K3N0YXRpYyB0YXNrX3QJKnRwOwogc3RhdGljIGludAludW1pbnN0Owogc3RhdGljIGludAkqaW50 bGlzdDsKIHN0YXRpYyBjaGFyCSoqZXh0bGlzdDsKLXN0YXRpYyB0YXNrX3QJKnRwOwotc3RhdGlj IGZldGNoY3RsX3QJKmZwOwotc3RhdGljIGludAludW12YWxpZDsKLXN0YXRpYyBpbnQJd2FybiA9 IDE7Ci0KLWV4dGVybiBpbnQJbGluZW5vOworc3RhdGljIGludAlzdGF0ZTsJCQkvKiBsb2dnaW5n IHN0YXRlLCBjdXJyZW50IGJsb2NrICovCitzdGF0aWMgY2hhcgkqbWV0cmljTmFtZTsJCS8qIGN1 cnJlbnQgbWV0cmljLCBjdXJyZW50IGJsb2NrICovCiAKIHR5cGVkZWYgc3RydWN0IF9obCB7CiAg ICAgc3RydWN0IF9obAkqaGxfbmV4dDsKQEAgLTU0LDE1ICs1MCwxOCBAQCB0eXBlZGVmIHN0cnVj dCBfaGwgewogICAgIGludAkJaGxfbGluZTsKIH0gaG9zdGxpc3RfdDsKIAotc3RhdGljIGhvc3Rs aXN0X3QJKmhsX3Jvb3QgPSBOVUxMOwotc3RhdGljIGhvc3RsaXN0X3QJKmhsX2xhc3QgPSBOVUxM Oworc3RhdGljIGhvc3RsaXN0X3QJKmhsX3Jvb3Q7CitzdGF0aWMgaG9zdGxpc3RfdAkqaGxfbGFz dDsKIHN0YXRpYyBob3N0bGlzdF90CSpobHA7CiBzdGF0aWMgaG9zdGxpc3RfdAkqcHJldmhscDsK LXN0YXRpYyBpbnQJCW9wbWFzayA9IDA7Ci1zdGF0aWMgaW50CQlzcGVjbWFzayA9IDA7Ci1zdGF0 aWMgaW50CQlhbGxvdzsKLXN0YXRpYyBpbnQJCXN0YXRlID0gMDsKLXN0YXRpYyBjaGFyCQkqIG1l dHJpY05hbWU7CitzdGF0aWMgaW50CQlvcG1hc2s7CQkvKiBvcGVyYXRpb25zIG1hc2sgKi8KK3N0 YXRpYyBpbnQJCXNwZWNtYXNrOwkvKiBzcGVjaWZpY2F0aW9ucyBtYXNrICovCitzdGF0aWMgaW50 CQlhbGxvdzsJCS8qIGhvc3QgYWxsb3cvZGlzYWxsb3cgc3RhdGUgKi8KKworc3RhdGljIGludCBs b29rdXBfbWV0cmljX25hbWUoY29uc3QgY2hhciAqKTsKK3N0YXRpYyB2b2lkIGFjdGl2YXRlX25l d19tZXRyaWMoY29uc3QgY2hhciAqKTsKK3N0YXRpYyB2b2lkIGFjdGl2YXRlX2NhY2hlZF9tZXRy aWMoY29uc3QgY2hhciAqLCBpbnQpOworCiAlfQogJXVuaW9uIHsKICAgICBsb25nIGx2YWw7CkBA IC0xMDcsNDAgKzEwNiwzNSBAQCBzcGVjCQk6IHN0bXQKIAogc3RtdAkJOiBkb3doYXQgc29tZW1l dHJpY3MJCQkJCiAJCXsKLSAgICAgICAgICAgICAgICAgICAgbXlzdGF0ZSA9IEdMT0JBTDsKLSAg ICAgICAgICAgICAgICAgICAgaWYgKG51bXZhbGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBQTUxDX1NFVF9NQVlCRSh0cC0+dF9zdGF0ZSwgMCk7CS8qIGNsZWFyIHJlcSAqLwotICAgICAg ICAgICAgICAgICAgICAgICAgdHAtPnRfbmV4dCA9IHRhc2tsaXN0OwotICAgICAgICAgICAgICAg ICAgICAgICAgdGFza2xpc3QgPSB0cDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50X2Zl dGNoID0gZmV0Y2hyb290OwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmcCA9IGZldGNo cm9vdDsgZnAgIT0gTlVMTDsgZnAgPSBmcC0+Zl9uZXh0KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIGxpbmsgZmV0Y2hjdGwgYmFjayB0byB0YXNrICovCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnAtPmZfYXV4ID0gKHZvaWQgKil0cDsKLQotICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKFBNTENfR0VUX09OKHN0YXRlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cC0+dF9hZmlkID0gX19wbUFGcmVnaXN0ZXIoJnRwLT50X2RlbHRhLCAKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKil0cCwg Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxvZ19jYWxsYmFjayk7Ci0JCSAgICB9Ci0JCSAgICBlbHNlCi0JCQlmcmVlKHRwKTsKLSAgICAg ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGZldGNocm9vdCA9IE5VTEw7Ci0g ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMDsKKwkJICAgIG15c3RhdGUgPSBHTE9CQUw7CisJ CSAgICBzdGF0ZSA9IDA7CiAgICAgICAgICAgICAgICAgfQogCQk7CiAKIGRvd2hhdAkJOiBsb2dv cHQgYWN0aW9uCQkKIAkJewotICAgICAgICAgICAgICAgICAgICBpZiAoKHRwID0gKHRhc2tfdCAq KWNhbGxvYygxLCBzaXplb2YodGFza190KSkpID09IE5VTEwpIHsKLQkJCWNoYXIgZW1lc3NbMjU2 XTsKLQkJCXNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLCAibWFsbG9jIGZhaWxlZDogJXMi LCBvc3N0cmVycm9yKCkpOwotCQkJeXllcnJvcihlbWVzcyk7Ci0gICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgICAgdHAtPnRfZGVsdGEudHZfc2VjID0gJDIgLyAxMDAwOwot ICAgICAgICAgICAgICAgICAgICB0cC0+dF9kZWx0YS50dl91c2VjID0gMTAwMCAqICgkMiAlIDEw MDApOwotICAgICAgICAgICAgICAgICAgICB0cC0+dF9zdGF0ZSA9ICBzdGF0ZTsKLSAgICAgICAg ICAgICAgICB9CisJCSAgICBzdHJ1Y3QgdGltZXZhbCBkZWx0YTsKKworCQkgICAgZGVsdGEudHZf c2VjID0gJDIgLyAxMDAwOworCQkgICAgZGVsdGEudHZfdXNlYyA9IDEwMDAgKiAoJDIgJSAxMDAw KTsKKworCQkgICAgLyoKKwkJICAgICAqIFNlYXJjaCBmb3IgYW4gZXhpc3RpbmcgdGFzayBmb3Ig dGhpcyBzdGF0ZS9pbnRlcnZhbDsKKwkJICAgICAqIG9ubHkgYWxsb2NhdGUgYW5kIHNldHVwIGEg bmV3IHRhc2sgaWYgbm9uZSBleGlzdHMuCisJCSAgICAgKi8KKwkJICAgIGlmICgodHAgPSBmaW5k dGFzayhzdGF0ZSwgJmRlbHRhKSkgPT0gTlVMTCkgeworCQkJaWYgKCh0cCA9ICh0YXNrX3QgKilj YWxsb2MoMSwgc2l6ZW9mKHRhc2tfdCkpKSA9PSBOVUxMKSB7CisJCQkgICAgY2hhciBlbWVzc1sy NTZdOworCQkJICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLCAibWFsbG9jIGZhaWxl ZDogJXMiLCBvc3N0cmVycm9yKCkpOworCQkJICAgIHl5ZXJyb3IoZW1lc3MpOworCQkJfSBlbHNl IHsKKwkJCSAgICB0cC0+dF9kZWx0YSA9IGRlbHRhOworCQkJICAgIHRwLT50X3N0YXRlID0gc3Rh dGU7CisJCQkgICAgdHAtPnRfbmV4dCA9IHRhc2tsaXN0OworCQkJICAgIHRhc2tsaXN0ID0gdHA7 CisJCQl9CisJCSAgICB9CisJCX0KIAkJOwogCiBsb2dvcHQJCTogTE9HIApAQCAtMTk5LDcgKzE5 Myw3IEBAIHRpbWV1bml0cwk6IE1TRUMJCXsgJCQgPSAxOyB9CiAJCXwgSE9VUgkJeyAkJCA9IDM2 MDAwMDA7IH0KIAkJOwogCi1zb21lbWV0cmljcwk6IExCUkFDRSB7IG51bXZhbGlkID0gMDsgbXlz dGF0ZSA9IElOU1BFQzsgfSBtZXRyaWNsaXN0IFJCUkFDRQorc29tZW1ldHJpY3MJOiBMQlJBQ0Ug eyBteXN0YXRlID0gSU5TUEVDOyB9IG1ldHJpY2xpc3QgUkJSQUNFCiAJCXwgbWV0cmljc3BlYwog CQk7CiAKQEAgLTIwOCw0NiArMjAyLDM5IEBAIG1ldHJpY2xpc3QJOiBtZXRyaWNzcGVjCiAJCXwg bWV0cmljbGlzdCBDT01NQSBtZXRyaWNzcGVjCiAJCTsKIAotbWV0cmljc3BlYwk6IE5BTUUgCi0J CXsgCittZXRyaWNzcGVjCTogTkFNRQorCQl7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobWV0 cmljTmFtZSA9IHN0cmR1cCgkMSkpID09IE5VTEwpIHsKIAkJCWNoYXIgZW1lc3NbMjU2XTsKIAkJ CXNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLCAibWFsbG9jIGZhaWxlZDogJXMiLCBvc3N0 cmVycm9yKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgeXllcnJvcihlbWVzcyk7CiAJCSAg ICB9CiAgICAgICAgICAgICAgICAgfQotCQlvcHRpbnN0CQorCQlvcHRpbnN0CiAJCXsKKwkJICAg IGludCBpbmRleCwgc3RzOworCiAJCSAgICAvKgotCQkgICAgICogc2VhcmNoIGNhY2hlIGZvciBw cmV2aW91c2x5IHNlZW4gbWV0cmljcyBmb3IgdGhpcyB0YXNrCisJCSAgICAgKiBzZWFyY2ggbmFt ZXMgZm9yIHByZXZpb3VzbHkgc2VlbiBtZXRyaWNzIGZvciB0aGlzIHRhc2sKKwkJICAgICAqIChu b3RlIHRoYXQgbmFtZSBtYXkgYmUgbm9uLXRlcm1pbmFsIGluIHRoZSBQTU5TIGhlcmUpOworCQkg ICAgICogaWYgYWxyZWFkeSBmb3VuZCBpbiB0aGlzIHRhc2ssIHNraXAgbmFtZXNwYWNlIFBEVXMu CiAJCSAgICAgKi8KLQkJICAgIGludAkJajsKLQkJICAgIGZvciAoaiA9IDA7IGogPCB0cC0+dF9u dW1wbWlkOyBqKyspIHsKLQkJCWlmICh0cC0+dF9uYW1lbGlzdFtqXSAhPSBOVUxMICYmCi0JCQkg ICAgc3RyY21wKHRwLT50X25hbWVsaXN0W2pdLCBtZXRyaWNOYW1lKSA9PSAwKSB7Ci0JCQkgICAg YnJlYWs7Ci0JCQl9Ci0JCSAgICB9Ci0JCSAgICBpZiAoaiA8IHRwLT50X251bXBtaWQpIHsKLQkJ CS8qIGZvdW5kIGluIGNhY2hlICovCi0JCQlkb21ldHJpYyhtZXRyaWNOYW1lKTsKLQkJICAgIH0K LQkJICAgIGVsc2UgewotCQkgICAgICAgIC8qCi0JCQkgKiBlaXRoZXIgYSBuZXcgbWV0cmljLCBh bmQgc28gaXQgbWF5IGJlIGEKLQkJCSAqIG5vbi10ZXJtaW5hbCBpbiB0aGUgUE1OUwotCQkJICov Ci0JCQlpZiAoKHN0cyA9IHBtVHJhdmVyc2VQTU5TKG1ldHJpY05hbWUsIGRvbWV0cmljKSkgPCAw ICkgeworCQkgICAgaWYgKChpbmRleCA9IGxvb2t1cF9tZXRyaWNfbmFtZShtZXRyaWNOYW1lKSkg PCAwKSB7CisJCQlpZiAoKHN0cyA9IHBtVHJhdmVyc2VQTU5TKG1ldHJpY05hbWUsIGFjdGl2YXRl X25ld19tZXRyaWMpKSA8IDAgKSB7CiAJCQkgICAgY2hhciBlbWVzc1syNTZdOwotCQkJICAgIHNu cHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLCAiUHJvYmxlbSB3aXRoIGxvb2t1cCBmb3IgbWV0 cmljIFwiJXNcIiAiCi0JCQkJCSAgICAiLi4uIGxvZ2dpbmcgbm90IGFjdGl2YXRlZCIsbWV0cmlj TmFtZSk7CisJCQkgICAgc25wcmludGYoZW1lc3MsIHNpemVvZihlbWVzcyksCisJCQkJICAgICJQ cm9ibGVtIHdpdGggbG9va3VwIGZvciBtZXRyaWMgXCIlc1wiICIKKwkJCQkgICAgIi4uLiBsb2dn aW5nIG5vdCBhY3RpdmF0ZWQiLCBtZXRyaWNOYW1lKTsKIAkJCSAgICB5eXdhcm4oZW1lc3MpOwog CQkJICAgIGZwcmludGYoc3RkZXJyLCAiUmVhc29uOiAlc1xuIiwgcG1FcnJTdHIoc3RzKSk7CiAJ CQl9CiAJCSAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGZyZWVpbnN0KCZudW1pbnN0LCBpbnRs aXN0LCBleHRsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgZnJlZSAobWV0cmljTmFtZSk7Ci0g ICAgICAgICAgICAgICAgfQorCQkgICAgZWxzZSB7CS8qIG5hbWUgaXMgY2FjaGVkIGFscmVhZHks IGhhbmRsZSBpbnN0YW5jZXMgKi8KKwkJCWFjdGl2YXRlX2NhY2hlZF9tZXRyaWMobWV0cmljTmFt ZSwgaW5kZXgpOworCQkgICAgfQorCQkgICAgZnJlZWluc3QoJm51bWluc3QsIGludGxpc3QsIGV4 dGxpc3QpOworCQkgICAgZnJlZShtZXRyaWNOYW1lKTsKKwkJfQogCQk7CiAKIG9wdGluc3QJCTog TFNRQiBpbnN0YW5jZWxpc3QgUlNRQgpAQCAtMjc2LDYgKzI2Myw4IEBAIGN0bAkJOiBhbGxvdyBo b3N0bGlzdCBDT0xPTiBvcGVyYXRpb24gU0VNSUNPTE9OCiAJCXsKICAgICAgICAgICAgICAgICAg ICAgcHJldmhscCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaGxwID0gaGxfcm9v dDsgaGxwICE9IE5VTEw7IGhscCA9IGhscC0+aGxfbmV4dCkgeworCQkJaW50IHN0czsKKwogICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZobHAgIT0gTlVMTCkgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZyZWUocHJldmhscC0+aGxfbmFtZSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJlZShwcmV2aGxwKTsKQEAgLTMwOSw5ICsyOTgsMTEgQEAgaG9zdGxpc3QJ OiBob3N0CiAKIGhvc3QJCTogaG9zdHNwZWMKIAkJewotICAgICAgICAgICAgICAgICAgICBobHAg PSAoaG9zdGxpc3RfdCAqKW1hbGxvYyhzdHMgPSBzaXplb2YoaG9zdGxpc3RfdCkpOworCQkgICAg c2l6ZV90IHN6ID0gc2l6ZW9mKGhvc3RsaXN0X3QpOworCisgICAgICAgICAgICAgICAgICAgIGhs cCA9IChob3N0bGlzdF90ICopbWFsbG9jKHN6KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhs cCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfX3BtTm9NZW0oImFkZGluZyBu ZXcgaG9zdCIsIHN0cywgUE1fRkFUQUxfRVJSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9f cG1Ob01lbSgiYWRkaW5nIG5ldyBob3N0Iiwgc3osIFBNX0ZBVEFMX0VSUik7CiAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGhsX2xhc3QgIT0gTlVMTCkgewog ICAgICAgICAgICAgICAgICAgICAgICAgaGxfbGFzdC0+aGxfbmV4dCA9IGhscDsKQEAgLTM2NCw3 OCArMzU1LDc5IEBAIG9wCQk6IEFEVklTT1JZCQl7IG9wbWFzayB8PSBQTV9PUF9MT0dfQURWOyB9 CiAlJQogCiAvKgorICogU2VhcmNoIHRoZSBjYWNoZSBmb3IgcHJldmlvdXNseSBzZWVuIG1ldHJp Y3MgZm9yIGFjdGl2ZSB0YXNrLgorICogUmV0dXJucyAtMSBpZiBub3QgZm91bmQsIGVsc2UgYW4g aW5kZXggaW50byB0cC0+dF9uYW1lbGlzdC4KKyAqLworc3RhdGljIGludAorbG9va3VwX21ldHJp Y19uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaW50CQlqOworCisgICAgZm9yIChqID0g MDsgaiA8IHRwLT50X251bXBtaWQ7IGorKykKKwlpZiAoc3RyY21wKHRwLT50X25hbWVsaXN0W2pd LCBuYW1lKSA9PSAwKQorCSAgICByZXR1cm4gajsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qCiAg KiBBc3N1bWVkIGNhbGxpbmcgY29udGV4dCAuLi4KLSAqCXRwCQl0aGUgY29ycmVjdCB0YXNrIGZv ciB0aGUgcmVxdWVzdGVkIG1ldHJpYworICoJdHAJCXRhc2sgZm9yIHRoZSByZXF1ZXN0ZWQgbWV0 cmljCiAgKgludW1pbnN0CQludW1iZXIgb2YgaW5zdGFuY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlz IHJlcXVlc3QKICAqCWV4dGxpc3RbXQlleHRlcm5hbCBpbnN0YW5jZSBuYW1lcyBpZiBudW1pbnN0 ID4gMAogICoJaW50bGlzdFtdCWludGVybmFsIGluc3RhbmNlIGlkZW50aWZpZXIgaWYgbnVtaW5z dCA+IDAgYW5kCiAgKgkJCWNvcnJlc3BvbmRpbmcgZXh0bGlzdFtdIGVudHJ5IGlzIE5VTEwKICAq LwotCi12b2lkCi1kb21ldHJpYyhjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIHZvaWQKK2FjdGl2 YXRlX2NhY2hlZF9tZXRyaWMoY29uc3QgY2hhciAqbmFtZSwgaW50IGluZGV4KQogewotICAgIGlu dAkJc3RzID0gMDsJLyogaW5pdGlhbGl6ZSB0byBwYW5kZXIgdG8gZ2NjICovCisgICAgaW50CQlz dHMgPSAwOwogICAgIGludAkJaW5zdDsKICAgICBpbnQJCWk7CiAgICAgaW50CQlqOwotICAgIGlu dAkJZHVwID0gLTE7Ci0gICAgaW50CQlza2lwOworICAgIGludAkJc2tpcCA9IDA7CiAgICAgcG1J RAlwbWlkOwogICAgIHBtRGVzYwkqZHA7CiAgICAgb3B0cmVxX3QJKnJxcDsKLSAgICBleHRlcm4g Y2hhcgkqY2hrX2VtZXNzW107Ci0JY2hhciBlbWVzc1sxMDI0XTsKLQotICAgIC8qCi0gICAgICog c2VhcmNoIGNhY2hlIGZvciBwcmV2aW91c2x5IHNlZW4gbWV0cmljcyBmb3IgdGhpcyB0YXNrCi0g ICAgICovCi0gICAgZm9yIChqID0gMDsgaiA8IHRwLT50X251bXBtaWQ7IGorKykgewotCWlmICh0 cC0+dF9uYW1lbGlzdFtqXSAhPSBOVUxMICYmCi0JICAgIHN0cmNtcCh0cC0+dF9uYW1lbGlzdFtq XSwgbmFtZSkgPT0gMCkgewotCSAgICBkdXAgPSBqOwotCSAgICBicmVhazsKLQl9Ci0gICAgfQor ICAgIGNoYXIJZW1lc3NbMTAyNF07CiAKICAgICAvKgotICAgICAqIG5lZWQgbmV3IG1hbGxvYydk IHBtRGVzYywgZXZlbiBpZiBtZXRyaWMgZm91bmQgaW4gY2FjaGUKKyAgICAgKiBuZWVkIG5ldyBt YWxsb2MnZCBwbURlc2MsIGV2ZW4gaWYgbWV0cmljIGZvdW5kIGluIGNhY2hlLCBhcworICAgICAq IHRoZSBmZXRjaGN0bCBrZWVwcyBpdHMgb3duIChub24tcmVhbGxvYy1tb3ZhYmxlISkgcG9pbnRl ci4KICAgICAgKi8KICAgICBkcCA9IChwbURlc2MgKiltYWxsb2Moc2l6ZW9mKHBtRGVzYykpOwog ICAgIGlmIChkcCA9PSBOVUxMKQogCWdvdG8gbm9tZW07CiAKLSAgICBpZiAoZHVwID09IC0xKSB7 Ci0KLQkvKiBDYXN0IGF3YXkgY29uc3QsIHBtTG9va3VwTmFtZSBzaG91bGQgbmV2ZXIgbW9kaWZ5 IG5hbWUgKi8KKyAgICBpZiAoaW5kZXggPCAwKSB7CiAJaWYgKChzdHMgPSBwbUxvb2t1cE5hbWUo MSwgKGNoYXIgKiopJm5hbWUsICZwbWlkKSkgPCAwIHx8IHBtaWQgPT0gUE1fSURfTlVMTCkgewot ICAgICAgICAgICAgc25wcmludGYoZW1lc3MsIHNpemVvZihlbWVzcyksICJNZXRyaWMgXCIlc1wi IGlzIHVua25vd24gLi4uIG5vdCBsb2dnZWQiLCBuYW1lKTsKLQkgICAgZ290byBkZWZlcjsKKwkg ICAgc25wcmludGYoZW1lc3MsIHNpemVvZihlbWVzcyksCisJCSAgICAiTWV0cmljIFwiJXNcIiBp cyB1bmtub3duIC4uLiBub3QgbG9nZ2VkIiwgbmFtZSk7CisJICAgIGdvdG8gc25hcmY7CiAJfQot CiAJaWYgKChzdHMgPSBwbUxvb2t1cERlc2MocG1pZCwgZHApKSA8IDApIHsKLQkgICAgc25wcmlu dGYoZW1lc3MsIHNpemVvZihlbWVzcyksICJEZXNjcmlwdGlvbiB1bmF2YWlsYWJsZSBmb3IgbWV0 cmljIFwiJXNcIiAuLi4gbm90IGxvZ2dlZCIsIG5hbWUpOwotCi0JICAgIGdvdG8gZGVmZXI7CisJ ICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLAorCQkgICAgIkRlc2NyaXB0aW9uIHVu YXZhaWxhYmxlIGZvciBtZXRyaWMgXCIlc1wiIC4uLiBub3QgbG9nZ2VkIiwKKwkJICAgIG5hbWUp OworCSAgICBnb3RvIHNuYXJmOwogCX0KICAgICB9CiAgICAgZWxzZSB7Ci0JKmRwID0gdHAtPnRf ZGVzY2xpc3RbZHVwXTsKLQlwbWlkID0gdHAtPnRfcG1pZGxpc3RbZHVwXTsKKwkqZHAgPSB0cC0+ dF9kZXNjbGlzdFtpbmRleF07CisJcG1pZCA9IHRwLT50X3BtaWRsaXN0W2luZGV4XTsKICAgICB9 CiAKICAgICB0cC0+dF9udW1wbWlkKys7Ci0gICAgdHAtPnRfcG1pZGxpc3QgPSAocG1JRCAqKXJl YWxsb2ModHAtPnRfcG1pZGxpc3QsIHRwLT50X251bXBtaWQgKiBzaXplb2YocG1JRCkpOwotICAg IGlmICh0cC0+dF9wbWlkbGlzdCA9PSBOVUxMKQotCWdvdG8gbm9tZW07CiAgICAgdHAtPnRfbmFt ZWxpc3QgPSAoY2hhciAqKilyZWFsbG9jKHRwLT50X25hbWVsaXN0LCB0cC0+dF9udW1wbWlkICog c2l6ZW9mKGNoYXIgKikpOwogICAgIGlmICh0cC0+dF9uYW1lbGlzdCA9PSBOVUxMKQogCWdvdG8g bm9tZW07CisgICAgaWYgKCh0cC0+dF9uYW1lbGlzdFt0cC0+dF9udW1wbWlkLTFdID0gc3RyZHVw KG5hbWUpKSA9PSBOVUxMKQorCWdvdG8gbm9tZW07CisgICAgdHAtPnRfcG1pZGxpc3QgPSAocG1J RCAqKXJlYWxsb2ModHAtPnRfcG1pZGxpc3QsIHRwLT50X251bXBtaWQgKiBzaXplb2YocG1JRCkp OworICAgIGlmICh0cC0+dF9wbWlkbGlzdCA9PSBOVUxMKQorCWdvdG8gbm9tZW07CiAgICAgdHAt PnRfZGVzY2xpc3QgPSAocG1EZXNjICopcmVhbGxvYyh0cC0+dF9kZXNjbGlzdCwgdHAtPnRfbnVt cG1pZCAqIHNpemVvZihwbURlc2MpKTsKICAgICBpZiAodHAtPnRfZGVzY2xpc3QgPT0gTlVMTCkK IAlnb3RvIG5vbWVtOwotICAgIGlmICgodHAtPnRfbmFtZWxpc3RbdHAtPnRfbnVtcG1pZC0xXSA9 IHN0cmR1cChuYW1lKSkgPT0gTlVMTCkKLQlnb3RvIG5vbWVtOwogICAgIHRwLT50X3BtaWRsaXN0 W3RwLT50X251bXBtaWQtMV0gPSBwbWlkOwogICAgIHRwLT50X2Rlc2NsaXN0W3RwLT50X251bXBt aWQtMV0gPSAqZHA7CS8qIHN0cnVjdCBhc3NpZ25tZW50ICovCiAKQEAgLTQ0NCw3ICs0MzYsNyBA QCBkb21ldHJpYyhjb25zdCBjaGFyICpuYW1lKQogCWdvdG8gbm9tZW07CiAgICAgcnFwLT5yX2Rl c2MgPSBkcDsKICAgICBycXAtPnJfbnVtaW5zdCA9IG51bWluc3Q7Ci0gICAgc2tpcCA9IDA7CisK ICAgICBpZiAobnVtaW5zdCkgewogCS8qCiAJICogbWFsbG9jIGhlcmUsIGFuZCBrZWVwIC4uLiBn ZXRzIGJ1cmllZCBpbiBvcHRGZXRjaCBkYXRhIHN0cnVjdHVyZXMKQEAgLTQ1Nyw3ICs0NDksOSBA QCBkb21ldHJpYyhjb25zdCBjaGFyICpuYW1lKQogCSAgICBpZiAoZXh0bGlzdFtpXSAhPSBOVUxM KSB7CiAJCXN0cyA9IHBtTG9va3VwSW5Eb20oZHAtPmluZG9tLCBleHRsaXN0W2ldKTsKIAkJaWYg KHN0cyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgc25wcmludGYoZW1lc3MsIHNpemVvZihl bWVzcyksICJJbnN0YW5jZSBcIiVzXCIgaXMgbm90IGRlZmluZWQgZm9yIHRoZSBtZXRyaWMgXCIl c1wiIiwgZXh0bGlzdFtpXSwgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGVt ZXNzLCBzaXplb2YoZW1lc3MpLAorCQkJIkluc3RhbmNlIFwiJXNcIiBpcyBub3QgZGVmaW5lZCBm b3IgdGhlIG1ldHJpYyBcIiVzXCIiLAorCQkJZXh0bGlzdFtpXSwgbmFtZSk7CiAgICAgICAgICAg ICAgICAgICAgIHl5d2FybihlbWVzcyk7CiAJCSAgICBycXAtPnJfbnVtaW5zdC0tOwogCQkgICAg Y29udGludWU7CkBAIC00NjgsNyArNDYyLDkgQEAgZG9tZXRyaWMoY29uc3QgY2hhciAqbmFtZSkK IAkJY2hhcgkqcDsKIAkJc3RzID0gcG1OYW1lSW5Eb20oZHAtPmluZG9tLCBpbnRsaXN0W2ldLCAm cCk7CiAJCWlmIChzdHMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGVtZXNz LCBzaXplb2YoZW1lc3MpLCAiSW5zdGFuY2UgXCIlZFwiIGlzIG5vdCBkZWZpbmVkIGZvciB0aGUg bWV0cmljIFwiJXNcIiIsIGludGxpc3RbaV0sIG5hbWUpOworICAgICAgICAgICAgICAgICAgICBz bnByaW50ZihlbWVzcywgc2l6ZW9mKGVtZXNzKSwKKwkJCSJJbnN0YW5jZSBcIiVkXCIgaXMgbm90 IGRlZmluZWQgZm9yIHRoZSBtZXRyaWMgXCIlc1wiIiwKKwkJCWludGxpc3RbaV0sIG5hbWUpOwog ICAgICAgICAgICAgICAgICAgICB5eXdhcm4oZW1lc3MpOwogCQkgICAgcnFwLT5yX251bWluc3Qt LTsKIAkJICAgIGNvbnRpbnVlOwpAQCAtNDc3LDcgKzQ3Myw5IEBAIGRvbWV0cmljKGNvbnN0IGNo YXIgKm5hbWUpCiAJCWluc3QgPSBpbnRsaXN0W2ldOwogCSAgICB9CiAJICAgIGlmICgoc3RzID0g Y2hrX29uZSh0cCwgcG1pZCwgaW5zdCkpIDwgMCkgewotICAgICAgICAgICAgICAgIHNucHJpbnRm KGVtZXNzLCBzaXplb2YoZW1lc3MpLCAiSW5jb21wYXRpYmxlIHJlcXVlc3QgZm9yIG1ldHJpYyBc IiVzXCIgYW5kIGluc3RhbmNlIFwiJXNcIiIsIG5hbWUsIGV4dGxpc3RbaV0pOworICAgICAgICAg ICAgICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLAorCQkJIkluY29tcGF0aWJsZSBy ZXF1ZXN0IGZvciBtZXRyaWMgXCIlc1wiIgorCQkJImFuZCBpbnN0YW5jZSBcIiVzXCIiLCBuYW1l LCBleHRsaXN0W2ldKTsKICAgICAgICAgICAgICAgICB5eXdhcm4oZW1lc3MpOwogICAgICAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGNoa19lbWVzc1stc3RzXSk7CiAgICAgICAg ICAgICAgICAgcnFwLT5yX251bWluc3QtLTsKQEAgLTQ5MCw3ICs0ODgsOCBAQCBkb21ldHJpYyhj b25zdCBjaGFyICpuYW1lKQogICAgIH0KICAgICBlbHNlIHsKIAlpZiAoKHN0cyA9IGNoa19hbGwo dHAsIHBtaWQpKSA8IDApIHsKLSAgICAgICAgICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1l c3MpLCAiSW5jb21wYXRpYmxlIHJlcXVlc3QgZm9yIG1ldHJpYyBcIiVzXCIiLCBuYW1lKTsKKyAg ICAgICAgICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLAorCQkgICAgIkluY29tcGF0 aWJsZSByZXF1ZXN0IGZvciBtZXRyaWMgXCIlc1wiIiwgbmFtZSk7CiAgICAgICAgICAgICB5eXdh cm4oZW1lc3MpOwogCiAJICAgIHNraXAgPSAxOwpAQCAtNDk4LDM0ICs0OTcsMTggQEAgZG9tZXRy aWMoY29uc3QgY2hhciAqbmFtZSkKICAgICB9CiAKICAgICBpZiAoIXNraXApIHsKLQlfX3BtT3B0 RmV0Y2hBZGQoJmZldGNocm9vdCwgcnFwKTsKKwlfX3BtT3B0RmV0Y2hBZGQoJnRwLT50X2ZldGNo LCBycXApOwogCWlmICgoc3RzID0gX19wbUhhc2hBZGQocG1pZCwgKHZvaWQgKilycXAsICZwbV9o YXNoKSkgPCAwKSB7Ci0JICAgIHNucHJpbnRmKGVtZXNzLCBzaXplb2YoZW1lc3MpLCAiX19wbUhh c2hBZGQgZmFpbGVkIGZvciBtZXRyaWMgXCIlc1wiIC4uLiBsb2dnaW5nIG5vdCBhY3RpdmF0ZWQi LCBuYW1lKTsKLQorCSAgICBzbnByaW50ZihlbWVzcywgc2l6ZW9mKGVtZXNzKSwgIl9fcG1IYXNo QWRkIGZhaWxlZCAiCisJCSAgICAiZm9yIG1ldHJpYyBcIiVzXCIgLi4uIGxvZ2dpbmcgbm90IGFj dGl2YXRlZCIsIG5hbWUpOwogCSAgICBnb3RvIHNuYXJmOwogCX0KLQludW12YWxpZCsrOworCXRw LT50X251bXZhbGlkKys7CiAgICAgfQogICAgIGVsc2UgewogCWZyZWUoZHApOwogCWZyZWUocnFw KTsKICAgICB9Ci0KLSAgICByZXR1cm47Ci0KLWRlZmVyOgotICAgIC8qIEVYQ0VQVElPTiBQQ1Ag Mi4wCi0gICAgICogVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIHdpbGwgc29ydCBhbGwgbG9nZ2lu ZyByZXF1ZXN0IGludG8gImdvb2QiIGFuZAotICAgICAqICJiYWQiIChsaWtlIHBtaWUpIC4uLiB0 aGUgImJhZCIgb25lcyBhcmUgImRlZmVycmVkIiBhbmQgYXQgc29tZSBwb2ludAotICAgICAqIGxh dGVyIHBtbG9nZ2VyIHdvdWxkIChwZXJpb2RpY2FsbHkpIHJldmlzaXQgdGhlICJkZWZlcnJlZCIg b25lcyBhbmQgc2VlCi0gICAgICogaWYgdGhleSBjYW4gYmUgYWRkZWQgdG8gdGhlICJnb29kIiBz ZXQuCi0gICAgICovCi0gICAgaWYgKHdhcm4pIHsKLSAgICAgICAgeXl3YXJuKGVtZXNzKTsKLSAg ICAgICAgZnByaW50ZihzdGRlcnIsICJSZWFzb246ICVzXG4iLCBwbUVyclN0cihzdHMpKTsKLSAg ICB9Ci0gICAgaWYgKGRwICE9IE5VTEwpCi0gICAgICAgIGZyZWUoZHApOwogICAgIHJldHVybjsK IAogbm9tZW06CkBAIC01MzUsNiArNTE4LDMyIEBAIG5vbWVtOgogc25hcmY6CiAgICAgeXl3YXJu KGVtZXNzKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlYXNvbjogJXNcbiIsIHBtRXJyU3RyKHN0 cykpOwotICAgIGZyZWUoZHApOworICAgIGlmIChkcCAhPSBOVUxMKQorICAgICAgICBmcmVlKGRw KTsKICAgICByZXR1cm47CiB9CisKK3N0YXRpYyB2b2lkCithY3RpdmF0ZV9uZXdfbWV0cmljKGNv bnN0IGNoYXIgKm5hbWUpCit7CisgICAgYWN0aXZhdGVfY2FjaGVkX21ldHJpYyhuYW1lLCBsb29r dXBfbWV0cmljX25hbWUobmFtZSkpOworfQorCisvKgorICogQ29tcGxldGUgdGhlIGRlbGF5ZWQg cHJvY2Vzc2luZyBvZiB0YXNrIGVsZW1lbnRzLCB3aGljaCBjYW4gb25seQorICogYmUgZG9uZSBv bmNlIGFsbCBjb25maWd1cmF0aW9uIGZpbGUgcGFyc2luZyBpcyBjb21wbGV0ZS4KKyAqLwordm9p ZAoreXllbmQodm9pZCkKK3sKKyAgICB0YXNrX3QgKnByZXY7CisKKyAgICBmb3IgKHRwID0gcHJl diA9IHRhc2tsaXN0OyB0cCAhPSBOVUxMOyBwcmV2ID0gdHAsIHRwID0gdHAtPnRfbmV4dCkgewor CWlmICh0cC0+dF9udW12YWxpZCA9PSAwKQorCSAgICBjb250aW51ZTsKKwlsaW5rYmFjayh0cCk7 CisJUE1MQ19TRVRfTUFZQkUodHAtPnRfc3RhdGUsIDApOwkvKiBjbGVhciByZXEgKi8KKwlpZiAo UE1MQ19HRVRfT04odHAtPnRfc3RhdGUpKQorCSAgICB0cC0+dF9hZmlkID0gX19wbUFGcmVnaXN0 ZXIoJnRwLT50X2RlbHRhLCAodm9pZCAqKXRwLCBsb2dfY2FsbGJhY2spOworICAgIH0KK30KZGlm ZiAtLWdpdCBhL3NyYy9wbWxvZ2dlci9zcmMvbG9nZ2VyLmggYi9zcmMvcG1sb2dnZXIvc3JjL2xv Z2dlci5oCmluZGV4IDdjMTM2YjkuLjk2NWUwMTEgMTAwNjQ0Ci0tLSBhL3NyYy9wbWxvZ2dlci9z cmMvbG9nZ2VyLmgKKysrIGIvc3JjL3BtbG9nZ2VyL3NyYy9sb2dnZXIuaApAQCAtMSw0ICsxLDUg QEAKIC8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgUmVkIEhhdC4KICAqIENvcHlyaWdodCAoYykg MTk5NS0yMDAxIFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg KiAKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CkBAIC0xMCwxMiArMTEsNyBAQAogICogV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC SUxJVFkKICAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICogZm9yIG1vcmUgZGV0YWlscy4KLSAqIAotICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYWxvbmcKLSAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0gKiA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiAgKi8KLQogI2lmbmRlZiBf TE9HR0VSX0gKICNkZWZpbmUgX0xPR0dFUl9ICiAKQEAgLTI0LDEzICsyMCwxNiBAQAogI2luY2x1 ZGUgPGFzc2VydC5oPgogCiAvKgotICogYSB0YXNrIGlzIGEgYnVuZGxlIG9mIGZldGNoZXMgdG8g YmUgZG9uZSB0b2dldGhlcgorICogYSB0YXNrIGlzIGEgYnVuZGxlIG9mIGZldGNoZXMgdG8gYmUg ZG9uZSB0b2dldGhlciAtIGl0CisgKiBvcmlnaW5hbGx5IGNvcnJlc3BvbmRlZCBvbmUtdG8tb25l IHdpdGggYSBjb25maWd1cmF0aW9uCisgKiBmaWxlIGN1cmx5LWJyYWNlLWVuY2xvc2VkIGJsb2Nr LCBidXQgbm8gbG9uZ2VyIGRvZXMuCiAgKi8KLXR5cGVkZWYgc3RydWN0IF90YXNrIHsKLSAgICBz dHJ1Y3QgX3Rhc2sJKnRfbmV4dDsKK3R5cGVkZWYgc3RydWN0IHRhc2tfcyB7CisgICAgc3RydWN0 IHRhc2tfcwkqdF9uZXh0OwogICAgIHN0cnVjdCB0aW1ldmFsCXRfZGVsdGE7CiAgICAgaW50CQkJ dF9zdGF0ZTsJLyogbG9nZ2luZyBzdGF0ZSAqLwogICAgIGludAkJCXRfbnVtcG1pZDsKKyAgICBp bnQJCQl0X251bXZhbGlkOwogICAgIHBtSUQJCSp0X3BtaWRsaXN0OwogICAgIGNoYXIJCSoqdF9u YW1lbGlzdDsKICAgICBwbURlc2MJCSp0X2Rlc2NsaXN0OwpAQCAtMTE4LDEzICsxMTcsMTUgQEAg ZXh0ZXJuIHZvaWQgeXllcnJvcihjaGFyICopOwogZXh0ZXJuIHZvaWQgeXl3YXJuKGNoYXIgKik7 CiBleHRlcm4gaW50IHl5bGV4KHZvaWQpOwogZXh0ZXJuIGludCB5eXBhcnNlKHZvaWQpOwotZXh0 ZXJuIHZvaWQgZG9tZXRyaWMoY29uc3QgY2hhciAqKTsKK2V4dGVybiB2b2lkIHl5ZW5kKHZvaWQp OwogZXh0ZXJuIHZvaWQgYnVpbGRpbnN0KGludCAqLCBpbnQgKiosIGNoYXIgKioqLCBpbnQsIGNo YXIgKik7CiBleHRlcm4gdm9pZCBmcmVlaW5zdChpbnQgKiwgaW50ICosIGNoYXIgKiopOworZXh0 ZXJuIHZvaWQgbGlua2JhY2sodGFza190ICopOworZXh0ZXJuIHRhc2tfdCAqZmluZHRhc2soaW50 LCBzdHJ1Y3QgdGltZXZhbCAqKTsKK2V4dGVybiBvcHRyZXFfdCAqZmluZG9wdHJlcShwbUlELCBp bnQpOwogZXh0ZXJuIHZvaWQgbG9nX2NhbGxiYWNrKGludCwgdm9pZCAqKTsKIGV4dGVybiBpbnQg Y2hrX29uZSh0YXNrX3QgKiwgcG1JRCwgaW50KTsKIGV4dGVybiBpbnQgY2hrX2FsbCh0YXNrX3Qg KiwgcG1JRCk7Ci1leHRlcm4gb3B0cmVxX3QgKmZpbmRvcHRyZXEocG1JRCwgaW50KTsKIGV4dGVy biBpbnQgbmV3dm9sdW1lKGludCk7CiBleHRlcm4gdm9pZCBkaXNjb25uZWN0KGludCk7CiAjaWYg Q0FOX1JFQ09OTkVDVApAQCAtMTM1LDYgKzEzNiw3IEBAIGV4dGVybiB2b2lkIHJ1bl9kb25lKGlu dCxjaGFyICopOwogZXh0ZXJuIF9fcG1QRFUgKnJld3JpdGVfcGR1KF9fcG1QRFUgKiwgaW50KTsK IGV4dGVybiBpbnQgcHV0bWFyayh2b2lkKTsKIGV4dGVybiBpbnQgZG9fZmx1c2godm9pZCk7Citl eHRlcm4gdm9pZCBkdW1waXQodm9pZCk7CiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KIGV4dGVy biBjaGFyIHBtbGNfaG9zdFtdOwpkaWZmIC0tZ2l0IGEvc3JjL3BtbG9nZ2VyL3NyYy9wbWxvZ2dl ci5jIGIvc3JjL3BtbG9nZ2VyL3NyYy9wbWxvZ2dlci5jCmluZGV4IDRkNzBlNzcuLmQ0YzZkMGYg MTAwNjQ0Ci0tLSBhL3NyYy9wbWxvZ2dlci9zcmMvcG1sb2dnZXIuYworKysgYi9zcmMvcG1sb2dn ZXIvc3JjL3BtbG9nZ2VyLmMKQEAgLTc1MSwxMCArNzUxLDkgQEAgT3B0aW9uczpcblwKIAogICAg IGlmICh5eXBhcnNlKCkgIT0gMCkKIAlleGl0KDEpOwotCi0gICAgaWYgKCBjb25maWdmaWxlICE9 IE5VTEwgKSB7CisgICAgaWYgKGNvbmZpZ2ZpbGUgIT0gTlVMTCkKIAlmY2xvc2UoeXlpbik7Ci0g ICAgfQorICAgIHl5ZW5kKCk7CiAKICNpZmRlZiBQQ1BfREVCVUcKICAgICBmcHJpbnRmKHN0ZGVy ciwgIkNvbmZpZyBwYXJzZWRcbiIpOwpAQCAtNzYyLDcgKzc2MSw2IEBAIE9wdGlvbnM6XG5cCiAK ICAgICBmcHJpbnRmKHN0ZGVyciwgIlN0YXJ0aW5nICVzbG9nZ2VyIGZvciBob3N0IFwiJXNcIiB2 aWEgXCIlc1wiXG4iLAogICAgICAgICAgICAgcHJpbWFyeSA/ICJwcmltYXJ5ICIgOiAiIiwgcG1j ZF9ob3N0LCBwbWNkX2hvc3RfY29ubik7Ci0KICNpZmRlZiBQQ1BfREVCVUcKICAgICBpZiAocG1E ZWJ1ZyAmIERCR19UUkFDRV9MT0cpIHsKIAlmcHJpbnRmKHN0ZGVyciwgIm9wdEZldGNoIENvc3Qg UGFyYW1ldGVyczogcG1pZD0lZCBpbmRvbT0lZCBmZXRjaD0lZCBzY29wZT0lZFxuIiwKZGlmZiAt LWdpdCBhL3NyYy9wbWxvZ2dlci9zcmMvdXRpbC5jIGIvc3JjL3BtbG9nZ2VyL3NyYy91dGlsLmMK aW5kZXggMGRmYzQ3ZC4uYjgxMmVlNiAxMDA2NDQKLS0tIGEvc3JjL3BtbG9nZ2VyL3NyYy91dGls LmMKKysrIGIvc3JjL3BtbG9nZ2VyL3NyYy91dGlsLmMKQEAgLTcwLDMgKzcwLDMzIEBAIGZyZWVp bnN0KGludCAqbnVtaW5zdCwgaW50ICppbnRsaXN0LCBjaGFyICoqZXh0bGlzdCkKIAkqbnVtaW5z dCA9IDA7CiAgICAgfQogfQorCisvKgorICogR2l2ZW4gYSBsb2dnaW5nIHN0YXRlIGFuZCBhbiBp bnRlcnZhbCwgcmV0dXJuIGEgbWF0Y2hpbmcgdGFzaworICogb3IgTlVMTCBpZiBub25lIGV4aXN0 cyBmb3IgdGhhdCB2YWx1ZSBwYWlyLgorICovCit0YXNrX3QgKgorZmluZHRhc2soaW50IHN0YXRl LCBzdHJ1Y3QgdGltZXZhbCAqZGVsdGEpCit7CisgICAgdGFza190CSp0cDsKKworICAgIGZvciAo dHAgPSB0YXNrbGlzdDsgdHAgIT0gTlVMTDsgdHAgPSB0cC0+dF9uZXh0KSB7CisJaWYgKHN0YXRl ID09ICh0cC0+dF9zdGF0ZSAmIDB4MykgJiYKKwkgICAgZGVsdGEtPnR2X3NlYyA9PSB0cC0+dF9k ZWx0YS50dl9zZWMgJiYKKwkgICAgZGVsdGEtPnR2X3VzZWMgPT0gdHAtPnRfZGVsdGEudHZfdXNl YykKKwkgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0cDsKK30KKworLyoKKyAqIExpbmsg dGhlIG5ldyBmZXRjaCBncm91cHMgYmFjayB0byB0aGVpciB0YXNrIHN0cnVjdHVyZQorICovCit2 b2lkCitsaW5rYmFjayh0YXNrX3QgKnRwKQoreworICAgIGZldGNoY3RsX3QJKmZjcDsKKworICAg IGZvciAoZmNwID0gdHAtPnRfZmV0Y2g7IGZjcCAhPSBOVUxMOyBmY3AgPSBmY3AtPmZfbmV4dCkK KwlmY3AtPmZfYXV4ID0gKHZvaWQgKil0cDsKK30K ------=_Part_7510567_377964548.1390291461364-- From nscott@redhat.com Tue Jan 21 02:31:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0EAE87F3F for ; Tue, 21 Jan 2014 02:31:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E5CD8304048 for ; Tue, 21 Jan 2014 00:31:21 -0800 (PST) X-ASG-Debug-ID: 1390293080-04cb6c750825470001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id Xj5hkSX0NumpG2F8 for ; Tue, 21 Jan 2014 00:31:20 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0L8VKb2027213; Tue, 21 Jan 2014 03:31:20 -0500 Date: Tue, 21 Jan 2014 03:31:20 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> In-Reply-To: References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> Subject: Re: braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: Jn2U1zhQyjBQD/OW0MmXAKQogrUiWA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390293080 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144317 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > nathans wrote: > > > Personally, I was unconvinced that the recent round of suggestions was a > > step forward, so for me definitely not "replaced" ... > > > I do still have a strong preference for Plan A; everything stated > > there matches my current thinking re the ideal long term approach we > > should take ("Plan A" being: > > http://oss.sgi.com/pipermail/pcp/2013-September/003963.html) > > That message spells out a number of capability/user-interface > desiderata, without much of a proposal for implementation mechanics. > Since that message, further conversation indicates Nathan believes > that libpcp would be a good place for all the intelligence needed to > overcome the many complex issues he lists. > > My recent message assumed approximately the same desiderata, and Hmmm - not really convinced of that. In terms of functionality, to me it feels that the latter is a subset of the former. And quite a significant subset in ways that I value (multi-archives, no daemons for archives, and the direct talk-to-pmcd live mode). > proposed a specific two-staged implementation. Here, libpcp does not > carry any significant complexity, only the single-growing-archive case > ("stage 1", "-a ARCHIVE"). > For the more-complex cases ("stage 2"), Issues with overloading existing context types are also of concern in terms of shoe-horning different semantics onto the existing mechanics of calls as fundamental as pmNewContext (which mandates one archive only for ARCHIVE contexts, and mandates failure in the case of a down host in the HOST context case - neither of which are semantics that we want here). We can use flags (which I feel is attempting to shoe- horn a big, important concept into places we shouldn't), or we can use the more clear barrier that a separate context type would be. In practice, I don't really know how it will turn out - it feels like a BIG change, in terms of impact on the client tool code & on libpcp code beneath that, hence my initial preference for a new context type. This offers very clear back-compat behaviour for pmNewContext - "this tool does not support this yet" kind of thing, which I'm convinced we will need for all tools of complexity > pminfo/pmprobe - i.e. most of 'em. > all the intelligence would be loaded into a server process, to whom The complexity has to live *somewhere* and there's no real difference if its in libpcp or in some daemon, from a maintenance POV. Housing it directly in libpcp does offer the no-daemon-needed flexibility to clients (and pmproxy is a client, as is pmwebd) - so it seems an easy choice to me. IMO, it is a major limitation for clients to require the presence of a server when replaying (multiple) archives (transparently) & another usability failing to mandate that everything now has to be logged to an archive, somewhere, before clients can access the data. > pcp clients would connect using a slightly extended pcp wire protocol, > but the same "-h SERVER" user interface. *nod*, any/all proposals need protocol changes. Nobody's fleshed any of these out yet, but they're the same kinds of PDU changes whatever way we choose to go. They are more critically important in the latter approach, because everything requires PDUs to a daemon, whereas that's not the default mode in the former model - but both will need 'em. Last, but not least wrt usability (for some folks anyway - it doesn't bother me after all this time) - we can move away from -h to -u with this new context type, in a controlled, backward-compatible way, over time. > So we need to resolve which of these should be pursued. However, for > brolley's purposes, initial focus on the single-growing-archive case > seems to be common to both possible paths. *nod*, definitely worth further work being done there (looks like kenj has invested significant effort on that path already, a few years ago, from a recent scan in some of the affected code). Securing the pmlc / pmlogger connection is something else that could be tackled early on - it is needed no matter what. Similarly, user auth for pmproxy needs to be tackled. Doing these things first will also give us time to get a deeper understanding of the issues, existing protocols, and so on. cheers. -- Nathan From fche@redhat.com Tue Jan 21 08:19:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3BB9D29DF8 for ; Tue, 21 Jan 2014 08:19:16 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 243A3304043 for ; Tue, 21 Jan 2014 06:19:13 -0800 (PST) X-ASG-Debug-ID: 1390313949-04cbb05baa36000001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4bnGmVndmn0PKn9i for ; Tue, 21 Jan 2014 06:19:09 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0LEJ86G009877 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 21 Jan 2014 09:19:09 -0500 Received: from fche.csb (vpn-61-164.rdu2.redhat.com [10.10.61.164]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0LEJ7XS017073; Tue, 21 Jan 2014 09:19:07 -0500 Received: by fche.csb (Postfix, from userid 2569) id C43A858391; Tue, 21 Jan 2014 09:19:06 -0500 (EST) Date: Tue, 21 Jan 2014 09:19:06 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Dave Brolley , pcp@oss.sgi.com Subject: Re: braindump on unified-context / live-logging Message-ID: <20140121141906.GB22174@redhat.com> X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390313949 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Nathan - > [...] > > My recent message assumed approximately the same desiderata, and > > Hmmm - not really convinced of that. In terms of functionality, to > me it feels that the latter is a subset of the former. And quite a > significant subset in ways that I value (multi-archives, no daemons > for archives, and the direct talk-to-pmcd live mode). Actually, I mentioned explicitly the multi-archives support via the new server. "no daemons for archives" was to be different only for the multiple-archives case, and it's not a "functionality" subset but perhaps a logistical simplification. "direct talk-to-pmcd" was to be done via the same new server process, possibly using an dynamically-reconfigured archive there as an intermediary. And this enables functionality that your scheme doesn't: automatically archiving data that any live-mode client asks for, so that transitions between the long-past, the just-past, and live-mode are seamless. > [...] > > all the intelligence would be loaded into a server process, to whom > > The complexity has to live *somewhere* and there's no real difference > if its in libpcp or in some daemon, from a maintenance POV. Housing > it directly in libpcp does offer the no-daemon-needed flexibility to > clients (and pmproxy is a client, as is pmwebd) - so it seems an easy > choice to me. As we discussed in IRC, one downside of that approach is the necessity to encode all the configurability of that intelligence within a new C API, or else to hard-code it all within libpcp. (It would be unappealing to feed a complicated configuration file to libpcp, no?) > IMO, it is a major limitation for clients to require the presence of > a server when replaying (multiple) archives (transparently) Why? Servers don't need to be expensive to start up. They can share resource between multiple clients. By having the administrator of the site-specific logging infrastructure configure them once, the clients don't have to be repeatedly configured. > another usability failing to mandate that everything now has to be > logged to an archive, somewhere, before clients can access the data. The use of an archive as an intermediary would be hidden from clients, so would be barely visible, let alone a failing. > Last, but not least wrt usability (for some folks anyway - it doesn't > bother me after all this time) - we can move away from -h to -u with > this new context type, in a controlled, backward-compatible way, over > time. With my proposed scheme, current (-h live-mode) clients would work identically: no user interface, nor API use changes, just a different -h parameter (to talk to the live-archive server rather than pmcd). Current -a single-archive clients, likewise. It's all backward-compatible. It's only the new permutations, those formerly forbidden by PMAPI (live-mode on -a, time-seeking on -h), which the stage-1 & stage-2 extensions would allow. > *nod*, definitely worth further work being done there (looks like > kenj has invested significant effort on that path already, a few > years ago, from a recent scan in some of the affected code). > Securing the pmlc / pmlogger connection is something else that could > be tackled early on - it is needed no matter what. Similarly, user > auth for pmproxy needs to be tackled. Doing these things first will > also give us time to get a deeper understanding of the issues, > existing protocols, and so on. Those are good ideas. - FChE From nscott@redhat.com Tue Jan 21 22:11:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0FC0A29E05 for ; Tue, 21 Jan 2014 22:11:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id CE8A7304053 for ; Tue, 21 Jan 2014 20:11:35 -0800 (PST) X-ASG-Debug-ID: 1390363891-04bdf030eb6b9a0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id HA2UQiPWoy0qxzmK for ; Tue, 21 Jan 2014 20:11:31 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0M4BUWH026394 for ; Tue, 21 Jan 2014 23:11:30 -0500 Date: Tue, 21 Jan 2014 23:11:30 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <138912744.8642869.1390363890467.JavaMail.root@redhat.com> In-Reply-To: <1072006307.8642840.1390363866784.JavaMail.root@redhat.com> Subject: pcp updates: fche merge, qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: fche merge, qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: fche merge, qa Thread-Index: yDPPoXd7z1lfZxwVhmbblBZJeLYd8Q== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1390363891 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144347 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev man/man1/pmmgr.1 | 5 ++++ qa/844 | 41 ++++++++++++++++++++++++++++++++++++++++ qa/844.out | 3 ++ qa/group | 1 src/pmdas/linux/proc_net_snmp.c | 14 ++++++++----- src/pmdas/linux/proc_net_snmp.h | 4 +-- src/pmmgr/pmmgr.cxx | 35 +++++++++++++++++++++++++++++++++- src/pmmgr/pmmgr.options | 3 ++ src/pmmgr/rc_pmmgr | 2 - 9 files changed, 99 insertions(+), 9 deletions(-) commit 86590fd0132a6a0103f0de58c9fb8e47b3532f49 Author: Nathan Scott Date: Wed Jan 22 15:08:41 2014 +1100 Add test 844 exercising the unexpected-ICMP-packet-type pmdalinux fix commit 2cc28a99c1211aad661f945a1cdfd70ab03baacc Merge: 9b20ba6 91136b3 Author: Nathan Scott Date: Wed Jan 22 09:08:15 2014 +1100 Merge branch 'fche/dev' of ../pcpfans into dev commit 91136b3b6c9338d506c217e21b7c4a34c0af8671 Author: Frank Ch. Eigler Date: Mon Jan 20 21:43:40 2014 -0500 RHBZ1055818: correct SEGV in pmda/linux for overlarge icmpmsg type On linux, /proc/net/snmp | grep IcmpMsg normally contains a few ordinal-indexed counters, whose indexes can be larger than than the pcp pmda likes. This could lead to SEGVs or mild memory corruption. The new code adds an explicit limit check, and bumps up the limits to 256 (related to the kernel __ICMPMSG_MIB_MAX) than the misused SNMP_PERLINE (which only limits how many different message type counters may be listed on the same line - not their ordinal values). commit 7479d921da7c1f028e4e8ec3bbc760b04831a494 Author: Frank Ch. Eigler Date: Thu Jan 16 13:24:52 2014 -0500 pmmgr: add -l LOGFILE option Supporting this directly within pmmgr makes it unnecessary to use shell-level redirection from /etc/rc.d files, which can create the log files with inappropriate ownership. From nscott@redhat.com Wed Jan 22 05:11:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0B4CC7F67 for ; Wed, 22 Jan 2014 05:11:50 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CF9D18F8074 for ; Wed, 22 Jan 2014 03:11:46 -0800 (PST) X-ASG-Debug-ID: 1390389101-04bdf030ea7f080001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id MJAERDUAvNiE8LWZ for ; Wed, 22 Jan 2014 03:11:42 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0MBBfh7031204; Wed, 22 Jan 2014 06:11:41 -0500 Date: Wed, 22 Jan 2014 06:11:41 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <1928208964.8792365.1390389101189.JavaMail.root@redhat.com> In-Reply-To: <20140121141906.GB22174@redhat.com> References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> <20140121141906.GB22174@redhat.com> Subject: Re: braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: VuvBP6edSp430M+ybzDbumlggbjU8g== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1390389102 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144357 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Yo, ----- Original Message ----- > Hi, Nathan - > > > > [...] > > > My recent message assumed approximately the same desiderata, and > > > > Hmmm - not really convinced of that. In terms of functionality, to > > me it feels that the latter is a subset of the former. And quite a > > significant subset in ways that I value (multi-archives, no daemons > > for archives, and the direct talk-to-pmcd live mode). > > Actually, I mentioned explicitly the multi-archives support via the > new server. "no daemons for archives" was to be different only for > the multiple-archives case, and it's not a "functionality" subset but > perhaps a logistical simplification. "direct talk-to-pmcd" was to be > done via the same new server process, ^^^^^^^^^^^ (so, not direct to pmcd? probably we've got a terminology mismatch & are talking past each other here. Hmm - just realised that not being able to talk in the way I consider directly-client-to-pmcd is an even bigger problem than I'd thought before - see below [*]) > possibly using an > dynamically-reconfigured archive there as an intermediary. And this > enables functionality that your scheme doesn't: Minor point, but lets not talk about "yours" or "mine", please; there's multiple problems, and multiple potential solution vectors. I like to think more in terms of a big multi-dimensional search space from which we get to seek out an optimal solution, given tons of constraints, and lots of suggestions in the many dimensions. > automatically > archiving data that any live-mode client asks for, so that transitions > between the long-past, the just-past, and live-mode are seamless. Here, you're saying "enables xxx, and thats good", whereas I'm saying "mandates xxx, and thats bad" - I'm unconvinced that all tools that want the usability features we're talking about here should *have* to record the data first. We're fundamentally disagreeing on that aspect I think, and I'm certain the some-PMAPI-tool -> tell-pmlogger-what-to-log-when -> await-the-results-on-disk -> fetch-them-from-disk model is going to be more complex than the transition-from-log-direct-to-pmcd-fetch model). [*] Hmmm, thinking out loud - it just won't work at all, will it? - how does the client tool expand the available (live, now) namespace without talking to pmcd to know what to tell pmlogger to log in the first place? > > Last, but not least wrt usability (for some folks anyway - it doesn't > > bother me after all this time) - we can move away from -h to -u with > > this new context type, in a controlled, backward-compatible way, over > > time. > > With my proposed scheme, current (-h live-mode) clients would work > identically: no user interface, nor API use changes, just a different > -h parameter (to talk to the live-archive server rather than pmcd). To explain why I don't think this is correct (the backward-compatible assertions, in particular, trouble me - technically, the API might well allow the same old bits to be passed, but the *semantics* will become *so* different when using the new mode, that newer tools will have no sane pathway with old libpcp ... ugh, that's explained badly sorry) - I think it'd be worthwhile going through what the pmval code does now in live host context. Its a relatively simple tool, but I think it has just enough complexity to start showing where I think cracks will first appear. Ignoring all the libpcp magic that we'll need to make happen with whatever scheme we use, can you describe the changes that will be needed there to make host mode go back in time and then move forward to seamless live fetching? I literally do not think its possible with just a pmSetMode() addition, with current pmFetch semantics for live mode, and the way the current tools use it - see the call to __pmtimevalSleep(delta) in particular. And pmchart/pmie/etc are so much more complex than pmval (select loops, event loops, and so on - we can't sleep(3) in libpcp) - all the tools will have to change in non-trivial ways to support this. Thus, I think it makes more sense to introduce that new type of context and to define new semantics for any/all PMAPI routines that need new semantics, and update the tools one by one to use 'em. cheers. -- Nathan From fche@redhat.com Wed Jan 22 17:03:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EFA1E7F85 for ; Wed, 22 Jan 2014 17:03:12 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 62349AC004 for ; Wed, 22 Jan 2014 15:03:09 -0800 (PST) X-ASG-Debug-ID: 1390431787-04cbb05bab96d40001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id byzs3GpxDiPG5Izs for ; Wed, 22 Jan 2014 15:03:08 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0MN37v3029893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 22 Jan 2014 18:03:07 -0500 Received: from fche.csb (vpn-233-82.phx2.redhat.com [10.3.233.82]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0MN36ri019624; Wed, 22 Jan 2014 18:03:07 -0500 Received: by fche.csb (Postfix, from userid 2569) id 39980584EA; Wed, 22 Jan 2014 18:03:06 -0500 (EST) Date: Wed, 22 Jan 2014 18:03:06 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Dave Brolley , pcp@oss.sgi.com Subject: Re: braindump on unified-context / live-logging Message-ID: <20140122230306.GC22174@redhat.com> X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> <20140121141906.GB22174@redhat.com> <1928208964.8792365.1390389101189.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1928208964.8792365.1390389101189.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390431788 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Nathan - > > possibly using an > > dynamically-reconfigured archive there as an intermediary. And this > > enables functionality that your scheme doesn't: > > Minor point, but lets not talk about "yours" or "mine", please; there's > multiple problems, and multiple potential solution vectors. [...] (Of course - I was not being personal, just abbreviating to identify the schemes.) > > automatically > > archiving data that any live-mode client asks for, so that transitions > > between the long-past, the just-past, and live-mode are seamless. > > Here, you're saying "enables xxx, and thats good", whereas I'm saying > "mandates xxx, and thats bad" - I'm unconvinced that all tools that want > the usability features we're talking about here should *have* to record > the data first. Right. That should be another configurable option. > We're fundamentally disagreeing on that aspect I think, > and I'm certain the some-PMAPI-tool -> tell-pmlogger-what-to-log-when -> > await-the-results-on-disk -> fetch-them-from-disk model is going to be > more complex than the transition-from-log-direct-to-pmcd-fetch model). The model (what the client does & sees) would not be different. Whether there is a hidden pmlogger instance & managed at the server would not be visible to a classical client, except perhaps by latency. > [*] Hmmm, thinking out loud - it just won't work at all, will it? - how > does the client tool expand the available (live, now) namespace without > talking to pmcd to know what to tell pmlogger to log in the first place? Yes, that's a tricky point. The live-archive server would have to talk to a pmcd, in order to enumerate the PMNS. This could be done - indirectly, via a large extension of pmlc - but that seems clumsy or - directly - by grabbing the PMCD-host url from pmlc (already published) - then relaying pmns operations to it a la pmproxy In the first case, a pmFetch could be implemented by the live-archive server as a pmlc "log ... _metric-list" commands, then monitoring the live-archive. This would cause some latency for first-time metrics not already being collected fast enough, but it may well be tolerable. In the second case, a pmfetch could be implemented by relaying the operation to its direct pmcd connections, and optionally to pmlc for archiving. (At that point, the live-archive server could just log the values directly. At which point, maybe it's just a pmlogger+pmproxy hybrid we're arriving at.) > [...] > [pmval] a relatively simple tool, but I think it has just enough complexity > to start showing where I think cracks will first appear. Ignoring all > the libpcp magic that we'll need to make happen with whatever scheme we > use, can you describe the changes that will be needed there to make host > mode go back in time and then move forward to seamless live fetching? > I literally do not think its possible with just a pmSetMode() addition, > with current pmFetch semantics for live mode, and the way the current > tools use it - see the call to __pmtimevalSleep(delta) in particular. Just before, you were talking about backward-compatibility concerns. But now, we're talking about the showcase scenario of how existing clients could be minimally adapted to live-archiving: scrolling back and forth in time. IOW, what would be the minimal changes to pmval to have "pmval -h ..." support scrolling in time. (I don't know what you're referring to by "cracks".) OK, let's roll. getargs(): Collapse the isarch==0 and ==1 case as much as possible, including attempting calls such as pmGetArchiveLabel()/pmGetArchiveEnd() on host-context. New libpcp would turn those into RPCs to the live-archive-server (if so attached) to describe the time span of the available archives. Suitable fallback for non-live-archive-server connection. Do (undocumented!) pmTimeStateMode() for PM_CONTEXT_HOST too. main(): getvals(): No obvious need of change. That may be all, as far as the pmval.c changes are concerned. Things like this should start working: % pmval -S '-30 days' -d -h SERVERHOST foo.metric % pmval -S '-1hour' -T '-1min' -t '60sec' -h SERVERHOST foo.metric % pmval -g -h SERVERHOST foo.metric The latter would require that the pmtime machinery let the user switch between live mode (pause/run) and archive mode (back/pause/forward) modes in the GUI, but pmval.c per se may not need any serious modifications just for that. Is the above the sort of thing you were looking for? - FChE From nscott@redhat.com Thu Jan 23 00:46:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 399927FAF for ; Thu, 23 Jan 2014 00:46:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id CAA4BAC002 for ; Wed, 22 Jan 2014 22:46:38 -0800 (PST) X-ASG-Debug-ID: 1390459597-04bdf030e8b6c10001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 6cEXslzcJz0uCFFm for ; Wed, 22 Jan 2014 22:46:37 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0N6kb7S008531; Thu, 23 Jan 2014 01:46:37 -0500 Date: Thu, 23 Jan 2014 01:46:37 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <755457877.9851928.1390459597321.JavaMail.root@redhat.com> In-Reply-To: <20140122230306.GC22174@redhat.com> References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> <20140121141906.GB22174@redhat.com> <1928208964.8792365.1390389101189.JavaMail.root@redhat.com> <20140122230306.GC22174@redhat.com> Subject: Re: braindump on unified-context / live-logging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: braindump on unified-context / live-logging Thread-Index: a/tBMScft2WJJ5VESrK9abYDCI8Myw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1390459597 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144386 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hey guys, ----- Original Message ----- > > > [...] > > [pmval] a relatively simple tool, but I think it has just enough complexity > > to start showing where I think cracks will first appear. Ignoring all > > the libpcp magic that we'll need to make happen with whatever scheme we > > use, can you describe the changes that will be needed there to make host > > mode go back in time and then move forward to seamless live fetching? > > I literally do not think its possible with just a pmSetMode() addition, > > with current pmFetch semantics for live mode, and the way the current > > tools use it - see the call to __pmtimevalSleep(delta) in particular. > > Just before, you were talking about backward-compatibility concerns. > But now, we're talking about the showcase scenario of how existing > clients could be minimally adapted to live-archiving: scrolling back > and forth in time. IOW, what would be the minimal changes to pmval to > have "pmval -h ..." support scrolling in time. (I don't know what > you're referring to by "cracks".) Yep, sorry - its barely English that above paragraph of mine - more braindump than valid prose. Cracks just referred to "where I think things will start to not work as we'd hope/expect", as in... > ... > That may be all, as far as the pmval.c changes are concerned. Things > like this should start working: > > % pmval -S '-30 days' -d -h SERVERHOST foo.metric Assuming there's 30 days worth of data to be found, I think the above (thanks to that pesky __pmtimevalSleep in pmval.c) will take ~30 days to print its first live sample (default pmval sampling interval being 1 second). Am I missing something? (not sure why you went with "-d" here - doesn't help us AFAICT...?) That sleep is the central point here & it embodies the core problem, as I see it, which is that host context API callers will sleep before fetching (the sampling interval is implemented by the tool, and not inside libpcp). Changing that is a big change to live mode fetch semantics. Of course, no sleep is needed in archive mode - we want that data as rapidly as possible, but we now have one. So, as a user, what I'd expect to see the above invocation do is to dump out all that historical data immediately, and then begin the sampling of live data (assumes the tool sleeps in-between samples, such that each sample is taken at an appropriate time). > Is the above the sort of thing you were looking for? Yep, spot on - my brain functions best with examples for some reason & this made things clearer for me at least (in particular, wasn't sure if there were more extensive changes you had in mind) - thanks!! cheers. -- Nathan From John.Abel@ecolab.com Thu Jan 23 03:10:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2EFDA7F58 for ; Thu, 23 Jan 2014 03:10:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 975CFAC007 for ; Thu, 23 Jan 2014 01:10:09 -0800 (PST) X-ASG-Debug-ID: 1390468204-04cbb05baaad110001-S8gJnT Received: from na01-bl2-obe.outbound.protection.outlook.com (na01-bl2-ndr.ptr.protection.outlook.com [157.55.133.103]) by cuda.sgi.com with ESMTP id lFosNId1ZEBlYUgE (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Thu, 23 Jan 2014 01:10:05 -0800 (PST) X-Barracuda-Envelope-From: John.Abel@ecolab.com X-Barracuda-Apparent-Source-IP: 157.55.133.103 Received: from CO1PR06CA001.namprd06.prod.outlook.com (10.242.160.11) by CO1PR06MB047.namprd06.prod.outlook.com (10.242.162.144) with Microsoft SMTP Server (TLS) id 15.0.851.11; Thu, 23 Jan 2014 09:09:46 +0000 Received: from BL2FFO11FD029.protection.gbl (2a01:111:f400:7c09::131) by CO1PR06CA001.outlook.office365.com (2a01:111:e400:1014::11) with Microsoft SMTP Server (TLS) id 15.0.859.15 via Frontend Transport; Thu, 23 Jan 2014 09:09:45 +0000 Received: from esnmail3.ecolab.com (204.69.40.111) by BL2FFO11FD029.mail.protection.outlook.com (10.173.160.69) with Microsoft SMTP Server (TLS) id 15.0.847.12 via Frontend Transport; Thu, 23 Jan 2014 09:09:45 +0000 From: "Abel, John" To: "Abel, John" Date: Thu, 23 Jan 2014 03:06:52 -0600 Subject: RE: Hello Thread-Topic: Hello X-ASG-Orig-Subj: RE: Hello Thread-Index: AQHPGBWfGfbnohhF/UK2YCfrpmtWdZqSAtbo Message-ID: <1E060B637E4D524CA80C97D895F7A5141BA264DD62@useagan5502p.global.ecolab.corp> References: <1E060B637E4D524CA80C97D895F7A5141BA264DCD7@useagan5502p.global.ecolab.corp> In-Reply-To: <1E060B637E4D524CA80C97D895F7A5141BA264DCD7@useagan5502p.global.ecolab.corp> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US X-TM-AS-Product-Ver: SMEX-10.2.0.3262-7.500.1017-20452.006 X-TM-AS-Result: No--3.655800-0.000000-31 X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No Content-Type: multipart/alternative; boundary="_000_1E060B637E4D524CA80C97D895F7A5141BA264DD62useagan5502pg_" MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:204.69.40.111;CTRY:US;IPV:NLI;EFV:NLI;SFV:SPM;SFS:(10009001)(189002)(199002)(377454003)(61754003)(90146001)(74502001)(47446002)(84326002)(221733001)(81542001)(74662001)(16236675002)(93516002)(71186001)(87266001)(93136001)(74706001)(85852003)(31966008)(74366001)(74876001)(50986001)(69226001)(85306002)(87936001)(94316002)(221123001)(2656002)(81342001)(46102001)(325944007)(92566001)(54356001)(63696002)(77096001)(80022001)(20776003)(19580405001)(83322001)(76482001)(80976001)(512934002)(81686001)(6806004)(47736001)(4396001)(56776001)(55846006)(81816001)(49866001)(79102001)(51856001)(77982001)(92726001)(53416003)(33656001)(47976001)(224903001)(65816001)(83072002)(54316002)(59766001)(76786001)(15843345004)(76796001)(25786004)(19580395003)(67736003)(44976005)(53806001)(86362001)(56816005)(547204008)(487294004);DIR:OUT;SFP:1501;SCL:5;SRVR:CO1PR06MB047;H:esnmail3.ecolab.com;CLIP:204.69.40.111;FPR:;RD:esnmail3.ecolab.com;MX:1;A:1;LANG:en; X-Forefront-PRVS: 0100732B76 X-OriginatorOrg: ecolab.com X-Barracuda-Connect: na01-bl2-ndr.ptr.protection.outlook.com[157.55.133.103] X-Barracuda-Start-Time: 1390468204 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.52 X-Barracuda-Spam-Status: No, SCORE=0.52 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_ADDR_MATCH, HTML_MESSAGE, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144389 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address --_000_1E060B637E4D524CA80C97D895F7A5141BA264DD62useagan5502pg_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable ________________________________ From: Abel, John Sent: Thursday, January 23, 2014 2:32 AM To: Abel, John Subject: Hello Hello I use this way to contact you involving A business, if interested contact my private email: hin_ang@yahoo.com.hk for mor= e information.Thanks. CONFIDENTIALITY NOTICE: This e-mail communication and any attachments may c= ontain proprietary and privileged information for the use of the designated= recipients named above. Any unauthorized review, use, disclosure or distri= bution is prohibited. If you are not the intended recipient, please contact= the sender by reply e-mail and destroy all copies of the original message. --_000_1E060B637E4D524CA80C97D895F7A5141BA264DD62useagan5502pg_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
 
=  

From: Abel, John<= br> Sent: Thursday, January 23, 2014 2:32 AM
To: Abel, John
Subject: Hello

Hello I use this way to contact you involving A business, if interested contact my private email: hin_ang@yahoo.com= .hk for more information.Thanks.
CONFIDENTIALITY NOTICE: This e-mail communication and any attachments may c= ontain proprietary and privileged information for the use of the designated= recipients named above. Any unauthorized review, use, disclosure or distri= bution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and = destroy all copies of the original message. --_000_1E060B637E4D524CA80C97D895F7A5141BA264DD62useagan5502pg_-- From nscott@redhat.com Thu Jan 23 22:38:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C8C627F7E for ; Thu, 23 Jan 2014 22:38:24 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6E92DAC003 for ; Thu, 23 Jan 2014 20:38:21 -0800 (PST) X-ASG-Debug-ID: 1390538293-04bdf030e8dafb0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id PV8YjNACBKjBRSZU for ; Thu, 23 Jan 2014 20:38:13 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0O4cDit004012 for ; Thu, 23 Jan 2014 23:38:13 -0500 Date: Thu, 23 Jan 2014 23:38:13 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <348288350.10945753.1390538293433.JavaMail.root@redhat.com> In-Reply-To: <205882808.10945720.1390538272132.JavaMail.root@redhat.com> Subject: pcp updates: pmlogger MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: pmlogger Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp updates: pmlogger Thread-Index: 2MJSHQPi2eKQ/53GbTWKfF46Bebm0w== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390538293 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144416 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 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 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 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 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 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 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 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. From fche@redhat.com Fri Jan 24 17:02:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8D5E57FB4 for ; Fri, 24 Jan 2014 17:02:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0F472AC00E for ; Fri, 24 Jan 2014 15:02:00 -0800 (PST) X-ASG-Debug-ID: 1390604516-04cb6c7509e8620001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id aR2AYe06ft1djzSH for ; Fri, 24 Jan 2014 15:01:56 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0ON1uMw017017 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 24 Jan 2014 18:01:56 -0500 Received: from fche.csb (vpn-233-82.phx2.redhat.com [10.3.233.82]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0ON1td4013656; Fri, 24 Jan 2014 18:01:55 -0500 Received: by fche.csb (Postfix, from userid 2569) id 3E01D584EA; Fri, 24 Jan 2014 18:01:55 -0500 (EST) Date: Fri, 24 Jan 2014 18:01:55 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Dave Brolley , pcp@oss.sgi.com Subject: Re: braindump on unified-context / live-logging Message-ID: <20140124230155.GE22174@redhat.com> X-ASG-Orig-Subj: Re: braindump on unified-context / live-logging References: <20140108013956.GG15448@redhat.com> <52DD7596.3040306@redhat.com> <432966179.7346611.1390256190604.JavaMail.root@redhat.com> <1941937241.7520925.1390293080009.JavaMail.root@redhat.com> <20140121141906.GB22174@redhat.com> <1928208964.8792365.1390389101189.JavaMail.root@redhat.com> <20140122230306.GC22174@redhat.com> <755457877.9851928.1390459597321.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <755457877.9851928.1390459597321.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390604516 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - On Thu, Jan 23, 2014 at 01:46:37AM -0500, Nathan Scott wrote: > [...] > > % pmval -S '-30 days' -d -h SERVERHOST foo.metric > > Assuming there's 30 days worth of data to be found, I think the above > (thanks to that pesky __pmtimevalSleep in pmval.c) will take ~30 days > to print its first live sample (default pmval sampling interval being > 1 second). [...] That was just an example of how -h and -S can work together, not saying that this would be horribly sensible sort of output to wait through. > That sleep is the central point here & it embodies the core problem, > as I see it, which is that host context API callers will sleep > before fetching [...] So, as a user, what I'd expect to see the > above invocation do is to dump out all that historical data > immediately, and then begin the sampling of live data (assumes the > tool sleeps in-between samples, such that each sample is taken at an > appropriate time). This behavior would have to be managed by the client, and its most natural user interface would be % pmval -S '-30 days' -h SERVERHOST foo.metric (i.e., no -d). So then, pmval.c would have to detect as it's exhausted the historical archive and reached current time, which is something that the pmtime mechanism can tell it. In pmval's main loop, this part: /* wait till time for sample */ if (!gui && (pauseFlag || archive == NULL)) __pmtimevalSleep(delta); could be changed to trigger sleeping if we've caught up, e.g. if the last result-set's timestamp is within delta of the current time. But looking closer at it, in the live-archive-server case, we'd behave as though archive==NULL normally, so the final conditional could be even simpler. Nothing clever in libpcp, no inserted sleeps, as nature intended :-) By the way, wouldn't this issue affect intelligent-libpcp or live-archive-server approaches equally? Or were you thinking of PM_CONTEXT_UNIFIED-mode causing sleeps to be inserted within libpcp/pmFetch? - FChE From petershawki03@gmail.com Fri Jan 24 18:25:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 88E4A7F59 for ; Fri, 24 Jan 2014 18:25:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5E1748F8050 for ; Fri, 24 Jan 2014 16:25:05 -0800 (PST) X-ASG-Debug-ID: 1390609500-04bdf030eb105c50001-S8gJnT Received: from mail-ob0-f194.google.com (mail-ob0-f194.google.com [209.85.214.194]) by cuda.sgi.com with ESMTP id C8K6OcKtqVsGpqFf (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 24 Jan 2014 16:25:01 -0800 (PST) X-Barracuda-Envelope-From: petershawki03@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.194 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.194] Received: by mail-ob0-f194.google.com with SMTP id wp4so1285534obc.5 for ; Fri, 24 Jan 2014 16:25:00 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.194] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.194] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=ZhBxuJeqfntBxSLKi2BkXJPvYsDW5PRiCjrPKtuIoE8=; b=jyqQxhPsxqb/KY5h7wAjSYtbKJmZVwIPB1vjXZs9CeMvm8ksG/wX+zMkWFqSdFbWTc li00AzvZtNU+nyTQsSr0cpqEGDRtC3st4ZDqbKFPInV9TZIpsD0thi9PPleeLR/MVEga IrXW0koaP+PjW/DNaaoAgjmUzzmt9tvzXumN1TfO+8EyzvwfCx6zIYBOJR/+dqckQdOv iTSenyjEdzNEI+Cmaa2saizf0CV0h+fyRXNpxzH9jcffvjgEBq4G6L+llcBUdkjz0iUO EPwiX5UkQyEYEha00/HybVtAseFPC/pyYngkfhUJKZjx6U6xE5Q2V7LNIXFl6/TpVMi6 mqnQ== MIME-Version: 1.0 X-Received: by 10.182.117.195 with SMTP id kg3mr14143576obb.17.1390609500217; Fri, 24 Jan 2014 16:25:00 -0800 (PST) Sender: petershawki03@gmail.com Received: by 10.76.176.42 with HTTP; Fri, 24 Jan 2014 16:25:00 -0800 (PST) Date: Sat, 25 Jan 2014 00:25:00 +0000 X-Google-Sender-Auth: KLVujHD1gJua-oynrvkoK6mnz5g Message-ID: Subject: =?KOI8-R?B?98HbwSDTxc3Y0SDJzsbP0s3Bw8nR?= From: BR X-ASG-Orig-Subj: =?KOI8-R?B?98HbwSDTxc3Y0SDJzsbP0s3Bw8nR?= To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=089e0149c5064830a704f0c08175 X-Barracuda-Connect: mail-ob0-f194.google.com[209.85.214.194] X-Barracuda-Start-Time: 1390609500 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144445 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --089e0149c5064830a704f0c08175 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: base64 5M/Sz8fPyiDE0tXHLA0KDQrwz9bBzNXK09TBINDSz9PUydTFIM3FztEsIMXTzMkg3NTPINPPz8Ld xc7JxSDQ0snIz8TJ1CDLINfBzSwgzsXP1snEwc7Ozy4g8Q0K0M/M1d7JzCDXwdsgy8/O1MHL1CDe xdLF2iDpztTF0s7F1CDXxcIty8HUwczPx8EsINDPy8Eg0SDJ08vBzCDSz8TT1NfFzs7Jy8/XDQrN z8XHzyDQz8vPys7Px88gy8zJxc7UwS4g9yDL0sHUy8/NINfT1NXQydTFzNjOz80g08zP18UsIM3F ztEg2s/X1dQg4snMzMkNCvLPxNbF0tMgySDRINDSwcvUycvVwN3JyiDA0snT1CDJ2iD6wdDBxM7P yiDhxtLJy8kuIPUgzcXO0SDF09TYIMnOxs/SzcHDydEgzw0K18Hbxc0g0s/E09TXxc7OycvBLCDL z9TP0tnKINXNxdIg1yDB19TPzc/CyczYzs/KIMHXwdLJySDXIM3Pxcog09TSwc7FINMNCtbFzs/K IMkgycggxcTJztPU18XOzsHRIMTP3tggzc7Px88gzMXUIM7B2sHELCDP09TB18nXIMXHzyDT18/K 09TXwSDJIM/C3dXADQrT1c3N1SBFVVJPIDggzcnMzMnPziDF19LPINcgwsHOy8Ug1yDNz8XKINPU 0sHOxSDCxdogzsHTzMXEzsnLwS4g8SDFx88gzMneztnNDQrBxNfPy8HUz80sIMkg0SDOwcjP1tXT 2CDXINDPydPLxSDFx88g0s/E09TXxc7OycvP1ywg1MHLIN7UzyDRIM3Px9Ug0M/Nz97YINMNCsnT y8/NIM8gxcfPINPXz8rT1NfByCDJIMTFztjHySDXIMLBzsvFLCDQ0sXWxMUg3sXNIM/OINDPzNXe wcXUIMvPzsbJ08vP18HO2Q0KzsHbxcfPINDSwdfJ1MXM2NPU18EuIPDP08vPzNjL1SDFx88gzMne ztnNIMHE18/LwdTPzSDJIMTP18XSxc7O2c0gzMnDz80sDQrc1M8gzc/RIM/C0drBzs7P09TYIM/C xdPQxd7J18HU2Cwg3tTPwtkg3NTPIM7B08zFxMnFINDP0MHEwcXUINcg0sHT28nSxc7O1cANCtPF zdjALiDrz8fEwSDNz8ogy8zJxc7UIMLZzCDF3cUg1snXLCDPziDEwcwgzc7FIMDSycTJ3sXTy8/K INPJzM/KLCDLwcsgxcfPDQrBxNfPy8HULCDe1M/C2SDExcrT1NfP18HU2CDP1CDFx88gyc3Fzskg ySDPwtLBws/Uy8kg19PFyCDExczByCwgz9TOz9PR3cnI09ENCssgxcfPIMLJ2s7F09Ug1yDT19Ha ySDTIMXHzyDCz8zYztnNINrEz9LP19jFLiDwz9zUz83VINEgyc3FwCDOxc/CyM/Eyc3VwA0Kyc7G z9LNwcPJwCDJIMTPy9XNxc7U2Swgy8/Uz9LZxSDC1cTV1CDT0M/Tz8LT1NfP18HU2CDP09fPws/W xMXOycAgxcfPDQrT18/K09TXwSDJIMTFztjHySDXIMLBzsvFIMTM0SDXwdMuIOjP1NEg19kgzc/W xdTFIM7FINrOwdTYIM3PxcfPINDPy8/Kzs/Hzw0K1yDMycPPLCDOzyDOxSDCz8rUxdPYLCDRIMTF ytPU18nUxczYzs8g08TFzMHMINTdwdTFzNjOz8Ug0sHT08zFxM/Xwc7JxSwNCtDSxdbExSDexc0g 09fR2sHU2NPRINMg18HNySDXIM/Uzs/bxc7JySDEwc7Oz8fPINfP0NLP08EuIPEgxMHAINfBzSAx MDAlDQrHwdLBztTJwCDUz8fPLCDe1M8g09LFxNPU18EgKEVVUk8gOCDNyczMyc/OIMXX0s8pIMLV xNXUINfZ0MzB3sXO2SDLINfBzSDLwcsNCtTPzNjLzyDRINDPxNTXxdLWxMHAINfB28kgz9TOz9vF zsnRINMgzc/Fx88g0M/Lz8rOz8fPIMvMycXO1MEsINzUzyDOxSDJzcXF1A0K2s7B3sXOydEsIMXT zMkg19kg0M/M1d7JzMkgyc3RIM/UINLP1sTFzsnRIMnMySDC0sHLwSwgy8/Uz9LZyiDP2s7B3sHF 1Cwg3tTPDQrX2SDA0snEyd7F08vJINDSwdfPIMLZ1Ngg0NLFxNPUwdfMxc7ZINcgwsHOyyDXIMvB 3sXT1NfFINfZ1snX28nIDQrSz8TT1NfFzs7Jy8/XIM3PxcfPINDPy8/Kzs/HzyDLzMnFztTBLCDU xcgg0M/SINDPy8Eg19kg0M/Ey8zA3sXO2SDLINzUz8oNCtPFzdjFIMnaIMLZ19vJyCDSxdPQ1cLM ycsg88/XxdTTy8/HzyDzz8DawS4g8SDExczBwCDX08UsIN7UzyDXIN7FzM/Xxd7F08vJyA0K08nM wcgsIN7Uz8LZINXCxcTJ1NjT0Swg3tTPINzUzyDOwdPMxcTJxSDOxSDLz87GydPLz9fBztkgy8/S 0tXN0MnSz9fBzs7PxQ0K0NLB18nUxczY09TXzyDNz8XKINPU0sHO2Swg0M/Uz83VIN7UzywgxdPM ySDc1M8g0NLPydrPysTF1Cwg0SDOyd7Fx88gzsUNCtfZycfSwcDUINcgy8/Ow8UuIPTFzSDOxSDN xc7FxSwg0SDPwt/R087AINDPxNLPws7FxSwgy8HLINTPzNjLzyDRINPM2dvVIM/UDQrXwdMsINXL wdrB1yDT18/KIMnO1MXSxdMg1yDc1M/NINfP0NLP08UuIPDP1sHM1crT1MEg18XSztXU2NPRIMvP IM3OxSDLwcsNCs3P1s7PINPLz9LFxSDTIMnOxs/SzcHDycXKLCDLwcsg1cvB2sHOzyDOydbFLCDe 1M/C2SDP0NLFxMXMydTYINfB28kNCs/Uzs/bxc7J0SDTIM3PxcfPINDPy8/Kzs/HzyDLzMnFztTB Lg0KDQr3wdvFIMnN0ToNCu/U3sXT1NfPOg0K5sHNyczJ0ToNCg0K6c3RIM/Uw8E6DQrv1N7F09TX zzoNCubBzcnMydE6DQoNCunN0SDExcTBOg0K79TexdPU1886DQrmwc3JzMnROg0KDQrxINMgzsXU xdLQxc7Jxc0g1sTVINfB28XKIMnOxs/SzcHDycksIN7Uz8LZINDP2tfPzMnU2CDNzsUgz9DSxcTF zMnU2CDXwdvJDQrP1M7P28XOydEg0yDNz8XHzyDQz8vPys7Px88gy8zJxc7UwS4g9yDNz8XNINPM xcTVwN3FzSDTz8/C3cXOyckg0SDQz9vMwCDXwc0NCs7Fz8LIz8TJzdXAIMnOxs/SzcHDycAg0M/H ycLbxcfPIMkgxcfPINPFzdjALCDLz9TP0sHRINDPx8nCzMEg1yDB18HSyckuIPENCtTBy9bFINfZ 28zFzSD3wc0gy8/Qyckgzc/JyCDJxMXO1MnGycvBw8nJIMkgzc/KIMHE18/LwdQgzMnDxc7aycAg xMzRINfB28XHzw0K0M/E1NfF0tbExc7J0S4g/NTPIM/exc7YINfB1s7PLCDe1M8g0SDQxdLFxMHU 2CDc1NUgyc7Gz9LNwcPJwCDXwc0gz8Ig3NTPzQ0KzsHTzMXEyckg0M/LwSDOxSDT1MHMzyDTzMnb y8/NINDP2sTOzy4NCg0K4snMzMkg8s/E1sXS0yDc08vXwcrSLg0K --089e0149c5064830a704f0c08175 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+5M/Sz8fPyiDE0tXHLCZuYnNwOyA8YnI+PGJyPvDP1sHM1crT1MEg0NLP 09TJ1MUgzcXO0SwgxdPMySDc1M8g08/Pwt3FzsnFINDSycjPxMnUIMsg18HNLCDOxc/WycTBzs7P LiDxINDPzNXeycwg18HbIMvPztTBy9Qg3sXSxdog6c7UxdLOxdQg18XCLcvB1MHMz8fBLCDQz8vB INEgydPLwcwg0s/E09TXxc7OycvP1yDNz8XHzyDQz8vPys7Px88gy8zJxc7UwS4g9yDL0sHUy8/N INfT1NXQydTFzNjOz80g08zP18UsIM3FztEg2s/X1dQg4snMzMkg8s/E1sXS0yDJINEg0NLBy9TJ y9XA3cnKIMDSydPUIMnaIPrB0MHEzs/KIOHG0snLyS4g9SDNxc7RIMXT1Nggyc7Gz9LNwcPJ0SDP INfB28XNINLPxNPU18XOzsnLwSwgy8/Uz9LZyiDVzcXSINcgwdfUz83PwsnM2M7PyiDB18HSyckg 1yDNz8XKINPU0sHOxSDTINbFzs/KIMkgycggxcTJztPU18XOzsHRIMTP3tggzc7Px88gzMXUIM7B 2sHELCDP09TB18nXIMXHzyDT18/K09TXwSDJIM/C3dXAINPVzc3VICZldXJvOzggzcnMzMnPziDF 19LPINcgwsHOy8Ug1yDNz8XKINPU0sHOxSDCxdogzsHTzMXEzsnLwS4g8SDFx88gzMneztnNIMHE 18/LwdTPzSwgySDRIM7ByM/W1dPYINcg0M/J08vFIMXHzyDSz8TT1NfFzs7Jy8/XLCDUwcsg3tTP INEgzc/H1SDQz83P3tgg0yDJ08vPzSDPIMXHzyDT18/K09TXwcggySDExc7Yx8kg1yDCwc7LxSwg 0NLF1sTFIN7FzSDPziDQz8zV3sHF1CDLz87GydPLz9fBztkgzsHbxcfPINDSwdfJ1MXM2NPU18Eu IPDP08vPzNjL1SDFx88gzMneztnNIMHE18/LwdTPzSDJIMTP18XSxc7O2c0gzMnDz80sINzUzyDN z9Egz8LR2sHOzs/T1Nggz8LF09DF3snXwdTYLCDe1M/C2SDc1M8gzsHTzMXEycUg0M/QwcTBxdQg 1yDSwdPbydLFzs7VwCDTxc3YwC4g68/HxMEgzc/KIMvMycXO1CDC2cwgxd3FINbJ1ywgz84gxMHM IM3OxSDA0snEyd7F08vPyiDTyczPyiwgy8HLIMXHzyDBxNfPy8HULCDe1M/C2SDExcrT1NfP18HU 2CDP1CDFx88gyc3FzskgySDPwtLBws/Uy8kg19PFyCDExczByCwgz9TOz9PR3cnI09EgyyDFx88g wsnazsXT1SDXINPX0drJINMgxcfPIMLPzNjO2c0g2sTP0s/X2MUuIPDP3NTPzdUg0SDJzcXAIM7F z8LIz8TJzdXAIMnOxs/SzcHDycAgySDEz8vVzcXO1NksIMvP1M/S2cUgwtXE1dQg09DP08/C09TX z9fB1Nggz9PXz8LP1sTFzsnAIMXHzyDT18/K09TXwSDJIMTFztjHySDXIMLBzsvFIMTM0SDXwdMu IOjP1NEg19kgzc/WxdTFIM7FINrOwdTYIM3PxcfPINDPy8/Kzs/HzyDXIMzJw88sIM7PIM7FIMLP ytTF09gsINEgxMXK09TXydTFzNjOzyDTxMXMwcwg1N3B1MXM2M7PxSDSwdPTzMXEz9fBzsnFLCDQ 0sXWxMUg3sXNINPX0drB1NjT0SDTINfBzckg1yDP1M7P28XOyckgxMHOzs/HzyDXz9DSz9PBLiDx IMTBwCDXwc0gMTAwJSDHwdLBztTJwCDUz8fPLCDe1M8g09LFxNPU18EgKCZldXJvOzggzcnMzMnP ziDF19LPKSDC1cTV1CDX2dDMwd7FztkgyyDXwc0gy8HLINTPzNjLzyDRINDPxNTXxdLWxMHAINfB 28kgz9TOz9vFzsnRINMgzc/Fx88g0M/Lz8rOz8fPIMvMycXO1MEsINzUzyDOxSDJzcXF1CDazsHe xc7J0SwgxdPMySDX2SDQz8zV3snMySDJzdEgz9Qg0s/WxMXOydEgyczJIMLSwcvBLCDLz9TP0tnK IM/azsHewcXULCDe1M8g19kgwNLJxMnexdPLySDQ0sHXzyDC2dTYINDSxcTT1MHXzMXO2SDXIMLB zssg1yDLwd7F09TXxSDX2dbJ19vJyCDSz8TT1NfFzs7Jy8/XIM3PxcfPINDPy8/Kzs/HzyDLzMnF ztTBLCDUxcgg0M/SINDPy8Eg19kg0M/Ey8zA3sXO2SDLINzUz8og08XN2MUgydogwtnX28nIINLF 09DVwszJyyDzz9fF1NPLz8fPIPPPwNrBLiDxIMTFzMHAINfTxSwg3tTPINcg3sXMz9fF3sXTy8nI INPJzMHILCDe1M/C2SDVwsXEydTY09EsIN7UzyDc1M8gzsHTzMXEycUgzsUgy8/OxsnTy8/Xwc7Z IMvP0tLVzdDJ0s/Xwc7Oz8Ug0NLB18nUxczY09TXzyDNz8XKINPU0sHO2Swg0M/Uz83VIN7Uzywg xdPMySDc1M8g0NLPydrPysTF1Cwg0SDOyd7Fx88gzsUg19nJx9LBwNQg1yDLz87DxS4g9MXNIM7F IM3FzsXFLCDRIM/C39HTzsAg0M/E0s/CzsXFLCDLwcsg1M/M2MvPINEg08zZ29Ugz9Qg18HTLCDV y8Hawdcg09fPyiDJztTF0sXTINcg3NTPzSDXz9DSz9PFLiDwz9bBzNXK09TBINfF0s7V1NjT0SDL zyDNzsUgy8HLIM3P1s7PINPLz9LFxSDTIMnOxs/SzcHDycXKLCDLwcsg1cvB2sHOzyDOydbFLCDe 1M/C2SDP0NLFxMXMydTYINfB28kgz9TOz9vFzsnRINMgzc/Fx88g0M/Lz8rOz8fPIMvMycXO1MEu PGJyPg0KPGJyPvfB28Ugyc3ROiA8YnI+79TexdPU1886PGJyPubBzcnMydE6IDxicj4mbmJzcDs8 YnI+6c3RIM/Uw8E6IDxicj7v1N7F09TXzzogPGJyPubBzcnMydE6IDxicj48YnI+6c3RIMTFxME6 PGJyPu/U3sXT1NfPOjxicj7mwc3JzMnROiA8YnI+PGJyPvEg0yDOxdTF0tDFzsnFzSDWxNUg18Hb xcogyc7Gz9LNwcPJySwg3tTPwtkg0M/a18/MydTYIM3OxSDP0NLFxMXMydTYINfB28kgz9TOz9vF zsnRINMgzc/Fx88g0M/Lz8rOz8fPIMvMycXO1MEuIPcgzc/FzSDTzMXE1cDdxc0g08/Pwt3FzsnJ INEg0M/bzMAg18HNIM7Fz8LIz8TJzdXAIMnOxs/SzcHDycAg0M/HycLbxcfPIMkgxcfPINPFzdjA LCDLz9TP0sHRINDPx8nCzMEg1yDB18HSyckuIPEg1MHL1sUg19nbzMXNIPfBzSDLz9DJySDNz8nI IMnExc7UycbJy8HDyckgySDNz8ogwcTXz8vB1CDMycPFztrJwCDEzNEg18HbxcfPINDPxNTXxdLW xMXOydEuIPzUzyDP3sXO2CDXwdbOzywg3tTPINEg0MXSxcTB1Ngg3NTVIMnOxs/SzcHDycAg18HN IM/CINzUz80gzsHTzMXEyckg0M/LwSDOxSDT1MHMzyDTzMnby8/NINDP2sTOzy4gPGJyPg0KPGJy PuLJzMzJIPLPxNbF0tMg3NPL18HK0i48YnI+PGJyPjwvZGl2Pg0K --089e0149c5064830a704f0c08175-- From wwwrun@oss.sgi.com Fri Jan 24 18:47:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 754D27FA0; Fri, 24 Jan 2014 18:47:18 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1041] pmlogger lacks duplicate-elimination on metric-groups in config file Date: Sat, 25 Jan 2014 00:47:17 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@kenj.com.au X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390610838.6aDAe1.25540"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390610838.6aDAe1.25540 Date: Fri, 24 Jan 2014 18:47:18 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1041 Frank Ch. Eigler changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #2 from Frank Ch. Eigler --- nathans committed a nice fix -- You are receiving this mail because: You are on the CC list for the bug. --1390610838.6aDAe1.25540 Date: Fri, 24 Jan 2014 18:47:18 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1041
What Removed Added
Status NEW RESOLVED
Resolution --- FIXED

Comment # 2 on bug 1041 from
nathans committed a nice fix


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390610838.6aDAe1.25540-- From wwwrun@oss.sgi.com Fri Jan 24 18:47:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 3552B7FA1; Fri, 24 Jan 2014 18:47:55 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 919] ipv6 support Date: Sat, 25 Jan 2014 00:47:54 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: brolley@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390610875.6DbEF1.25643"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390610875.6DbEF1.25643 Date: Fri, 24 Jan 2014 18:47:55 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=919 Frank Ch. Eigler changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #1 from Frank Ch. Eigler --- support added several versions ago -- You are receiving this mail because: You are on the CC list for the bug. --1390610875.6DbEF1.25643 Date: Fri, 24 Jan 2014 18:47:55 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 919
What Removed Added
Status NEW RESOLVED
Resolution --- FIXED

Comment # 1 on bug 919 from
support added several versions ago


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390610875.6DbEF1.25643-- From wwwrun@oss.sgi.com Fri Jan 24 18:49:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id B9ABF7FA3; Fri, 24 Jan 2014 18:49:23 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1042] rpm pmda doesn't support multiple-version rpms Date: Sat, 25 Jan 2014 00:49:23 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: scox@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390610963.C4e8e2.25727"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390610963.C4e8e2.25727 Date: Fri, 24 Jan 2014 18:49:23 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1042 Frank Ch. Eigler changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #2 from Frank Ch. Eigler --- full rpm n-v-r-a string is now used as instance identifier -- You are receiving this mail because: You are on the CC list for the bug. --1390610963.C4e8e2.25727 Date: Fri, 24 Jan 2014 18:49:23 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1042
What Removed Added
Status NEW RESOLVED
Resolution --- FIXED

Comment # 2 on bug 1042 from
full rpm n-v-r-a string is now used as instance identifier


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390610963.C4e8e2.25727-- From wwwrun@oss.sgi.com Fri Jan 24 18:53:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 967E27FA1; Fri, 24 Jan 2014 18:53:08 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 935] libpcp should use getaddrinfo and iterate across results Date: Sat, 25 Jan 2014 00:53:08 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: brolley@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390611188.F4B4e54e1.25895"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390611188.F4B4e54e1.25895 Date: Fri, 24 Jan 2014 18:53:08 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=935 Frank Ch. Eigler changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #1 from Frank Ch. Eigler --- see libpcp/src/auxconnect.c iteration in __pmAuxConnectPMCDPort -- You are receiving this mail because: You are on the CC list for the bug. --1390611188.F4B4e54e1.25895 Date: Fri, 24 Jan 2014 18:53:08 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 935
What Removed Added
Status NEW RESOLVED
Resolution --- FIXED

Comment # 1 on bug 935 from
see libpcp/src/auxconnect.c iteration in __pmAuxConnectPMCDPort


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390611188.F4B4e54e1.25895-- From wwwrun@oss.sgi.com Fri Jan 24 19:08:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id C575D7FA6; Fri, 24 Jan 2014 19:08:06 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] New: pmchart very slow when Overview-panning 300MB 14-day archive file Date: Sat, 25 Jan 2014 01:08:05 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter cc classification Message-ID: Content-Type: multipart/alternative; boundary="1390612086.0C0f46DB0.27046"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390612086.0C0f46DB0.27046 Date: Fri, 24 Jan 2014 19:08:06 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 Bug ID: 1044 Summary: pmchart very slow when Overview-panning 300MB 14-day archive file Product: pcp Version: unspecified Hardware: All OS: Linux Status: NEW Severity: major Priority: P5 Component: pcp Assignee: fche@redhat.com Reporter: fche@redhat.com CC: pcp@oss.sgi.com Classification: Unclassified pmmgr normally generates relatively large merged-archive-* files. It seems that somewhere in the vicinity of 300MB, performance starts drastically dropping for operations like time-scrolling in pmchart, when a single Overview chart-set is active. For a peer server's 230MB merged-archive, time-panning (720 points, 60-second interval) takes a delightful second or so to redraw. For the troubled 300MB one, each takes more like 30-90 seconds (!!). Their pmloglabel -l output is almost identical: they contain two weeks' worth of data. A systemtap pf4.stp profiling run during the slow-refresh interval indicates many hits to backtraces such as these, implicating the __pmLogFetchInterp() function in libpcp/src/interp.c as a common root: 112 hits on cpu 0 __pmHashSearch+0x21 [libpcp.so.3] update_bounds.isra.1+0xcc [libpcp.so.3] __pmLogFetchInterp+0x1a9a [libpcp.so.3] __pmLogFetch+0x68f [libpcp.so.3] pmFetch+0xb6 [libpcp.so.3] _ZN10QmcContext5fetchEb+0x368 [pmchart] _ZN8QmcGroup5fetchEb+0xbd [pmchart] _ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5 [pmchart] _ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolStateE+0x308 [pmchart] _ZN11TimeControl19protocolMessageLoopEbPN6PmTime6PacketEP10QTcpSocketPNS_13 77 hits on cpu 0 __ntohpmValueBlock+0x2b [libpcp.so.3] __pmDecodeResult+0x1ba [libpcp.so.3] __pmLogRead+0x565 [libpcp.so.3] cache_read.isra.0+0x141 [libpcp.so.3] __pmLogFetchInterp+0x1a16 [libpcp.so.3] __pmLogFetch+0x68f [libpcp.so.3] pmFetch+0xb6 [libpcp.so.3] _ZN10QmcContext5fetchEb+0x368 [pmchart] _ZN8QmcGroup5fetchEb+0xbd [pmchart] _ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5 [pmchart] _ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolStateE+0x308 [pmchart] _ZN1 41 hits on cpu 0 __GI_memcpy+0x15b [libc-2.17.so] __GI__IO_file_xsgetn+0x113 [libc-2.17.so] fread+0x88 [libc-2.17.so] __pmLogRead+0x347 [libpcp.so.3] cache_read.isra.0+0x141 [libpcp.so.3] __pmLogFetchInterp+0x1a16 [libpcp.so.3] __pmLogFetch+0x68f [libpcp.so.3] pmFetch+0xb6 [libpcp.so.3] _ZN10QmcContext5fetchEb+0x368 [pmchart] _ZN8QmcGroup5fetchEb+0xbd [pmchart] _ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5 [pmchart] _ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolS -- You are receiving this mail because: You are on the CC list for the bug. --1390612086.0C0f46DB0.27046 Date: Fri, 24 Jan 2014 19:08:06 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"
Bug ID 1044
Summary pmchart very slow when Overview-panning 300MB 14-day archive file
Product pcp
Version unspecified
Hardware All
OS Linux
Status NEW
Severity major
Priority P5
Component pcp
Assignee fche@redhat.com
Reporter fche@redhat.com
CC pcp@oss.sgi.com
Classification Unclassified

pmmgr normally generates relatively large merged-archive-* files.  It seems
that somewhere in the vicinity of 300MB, performance starts drastically
dropping for operations like time-scrolling in pmchart, when a single Overview
chart-set is active.

For a peer server's 230MB merged-archive, time-panning (720 points, 60-second
interval) takes a delightful second or so to redraw.  For the troubled 300MB
one, each takes more like 30-90 seconds (!!).  Their pmloglabel -l output is
almost identical: they contain two weeks' worth of data.

A systemtap pf4.stp profiling run during the slow-refresh interval indicates
many hits to backtraces such as these, implicating the __pmLogFetchInterp()
function in libpcp/src/interp.c as a common root:

112 hits on cpu 0
__pmHashSearch+0x21 [libpcp.so.3]
update_bounds.isra.1+0xcc [libpcp.so.3]
__pmLogFetchInterp+0x1a9a [libpcp.so.3]
__pmLogFetch+0x68f [libpcp.so.3]
pmFetch+0xb6 [libpcp.so.3]
_ZN10QmcContext5fetchEb+0x368 [pmchart]
_ZN8QmcGroup5fetchEb+0xbd [pmchart]
_ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5
[pmchart]
_ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolStateE+0x308
[pmchart]
_ZN11TimeControl19protocolMessageLoopEbPN6PmTime6PacketEP10QTcpSocketPNS_13

77 hits on cpu 0
__ntohpmValueBlock+0x2b [libpcp.so.3]
__pmDecodeResult+0x1ba [libpcp.so.3]
__pmLogRead+0x565 [libpcp.so.3]
cache_read.isra.0+0x141 [libpcp.so.3]
__pmLogFetchInterp+0x1a16 [libpcp.so.3]
__pmLogFetch+0x68f [libpcp.so.3]
pmFetch+0xb6 [libpcp.so.3]
_ZN10QmcContext5fetchEb+0x368 [pmchart]
_ZN8QmcGroup5fetchEb+0xbd [pmchart]
_ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5
[pmchart]
_ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolStateE+0x308
[pmchart]
_ZN1

41 hits on cpu 0
__GI_memcpy+0x15b [libc-2.17.so]
__GI__IO_file_xsgetn+0x113 [libc-2.17.so]
fread+0x88 [libc-2.17.so]
__pmLogRead+0x347 [libpcp.so.3]
cache_read.isra.0+0x141 [libpcp.so.3]
__pmLogFetchInterp+0x1a16 [libpcp.so.3]
__pmLogFetch+0x68f [libpcp.so.3]
pmFetch+0xb6 [libpcp.so.3]
_ZN10QmcContext5fetchEb+0x368 [pmchart]
_ZN8QmcGroup5fetchEb+0xbd [pmchart]
_ZN12GroupControl29adjustArchiveWorldViewForwardEPN6PmTime6PacketEb+0x1c5
[pmchart]
_ZN11TimeControl15protocolMessageEbPN6PmTime6PacketEP10QTcpSocketPNS_13ProtocolS


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390612086.0C0f46DB0.27046-- From noreply@release.debian.org Sat Jan 25 10:39:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 723F97F80 for ; Sat, 25 Jan 2014 10:39:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id F4184AC003 for ; Sat, 25 Jan 2014 08:39:22 -0800 (PST) X-ASG-Debug-ID: 1390667957-04cbb05ba9108c90001-S8gJnT Received: from picconi.debian.org (picconi.debian.org [5.153.231.3]) by cuda.sgi.com with ESMTP id wDYGpTZUbIg4y1BV (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sat, 25 Jan 2014 08:39:18 -0800 (PST) X-Barracuda-Envelope-From: noreply@release.debian.org X-Barracuda-Apparent-Source-IP: 5.153.231.3 Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by picconi.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1W76GK-00030j-1V for pcp@packages.debian.org; Sat, 25 Jan 2014 16:39:16 +0000 Received: from release by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W76GH-00077o-4z; Sat, 25 Jan 2014 16:39:13 +0000 From: Debian testing watch Precedence: bulk X-Trille: 0.120315.1711 Subject: pcp 3.8.10 MIGRATED to testing X-Testing-Watch-Package: pcp X-ASG-Orig-Subj: pcp 3.8.10 MIGRATED to testing X-Testing-Watch-Version: 3.8.10 To: pcp@packages.debian.org Message-Id: Sender: Release Managers Date: Sat, 25 Jan 2014 16:39:13 +0000 Delivered-To: pcp@packages.debian.org X-Barracuda-Connect: picconi.debian.org[5.153.231.3] X-Barracuda-Start-Time: 1390667958 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144466 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header FYI: The status of the pcp source package in Debian's testing distribution has changed. Previous version: 3.8.9 Current version: 3.8.10 -- This email is automatically generated once a day. As the installation of new packages into testing happens multiple times a day you will receive later changes on the next day. See http://release.debian.org/testing-watch/ for more information. From wwwrun@oss.sgi.com Sun Jan 26 11:24:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id E4E397F5A; Sun, 26 Jan 2014 11:24:25 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file Date: Sun, 26 Jan 2014 17:24:25 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390757065.65ada0.20501"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390757065.65ada0.20501 Date: Sun, 26 Jan 2014 11:24:25 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 --- Comment #1 from Frank Ch. Eigler --- Some more data, from pmchart -Dinterp., running an initial then time-panned refresh: % grep reads:.forward fast-Dinterp.log __pmLogFetchInterp: log reads: forward 28 backwards 0 __pmLogFetchInterp: log reads: forward 0 backwards 44 __pmLogFetchInterp: log reads: forward 0 backwards 29 __pmLogFetchInterp: log reads: forward 8 backwards 14 __pmLogFetchInterp: log reads: forward 15 backwards 0 __pmLogFetchInterp: log reads: forward 32 backwards 0 __pmLogFetchInterp: log reads: forward 0 backwards 35 __pmLogFetchInterp: log reads: forward 0 backwards 20 __pmLogFetchInterp: log reads: forward 12 backwards 4 __pmLogFetchInterp: log reads: forward 26 backwards 0 [... and many others, with small forward / backward numbers ...] % grep reads:.forward slow-Dinterp.log [... out the same, then ...] __pmLogFetchInterp: log reads: forward 8 backwards 69 __pmLogFetchInterp: log reads: forward 16 backwards 75 __pmLogFetchInterp: log reads: forward 0 backwards 114 __pmLogFetchInterp: log reads: forward 8 backwards 114 [...100 lines later...] __pmLogFetchInterp: log reads: forward 16 backwards 1559 __pmLogFetchInterp: log reads: forward 0 backwards 1599 __pmLogFetchInterp: log reads: forward 8 backwards 1599 __pmLogFetchInterp: log reads: forward 16 backwards 1604 __pmLogFetchInterp: log reads: forward 0 backwards 1644 [...100 lines later...] __pmLogFetchInterp: log reads: forward 0 backwards 3084 __pmLogFetchInterp: log reads: forward 8 backwards 3084 __pmLogFetchInterp: log reads: forward 16 backwards 3089 __pmLogFetchInterp: log reads: forward 0 backwards 3129 __pmLogFetchInterp: log reads: forward 8 backwards 3129 [...500 lines later...] __pmLogFetchInterp: log reads: forward 16 backwards 7096 __pmLogFetchInterp: log reads: forward 0 backwards 7134 __pmLogFetchInterp: log reads: forward 7 backwards 7134 __pmLogFetchInterp: log reads: forward 16 backwards 7141 __pmLogFetchInterp: log reads: forward 18931 backwards 2718 __pmLogFetchInterp: log reads: forward 18916 backwards 2718 __pmLogFetchInterp: log reads: forward 18901 backwards 2718 __pmLogFetchInterp: log reads: forward 18886 backwards 2718 __pmLogFetchInterp: log reads: forward 18875 backwards 2717 Whoa dude! -- You are receiving this mail because: You are on the CC list for the bug. --1390757065.65ada0.20501 Date: Sun, 26 Jan 2014 11:24:25 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"

Comment # 1 on bug 1044 from
Some more data, from pmchart -Dinterp., running an initial then time-panned
refresh:

% grep reads:.forward fast-Dinterp.log 
__pmLogFetchInterp: log reads: forward 28 backwards 0
__pmLogFetchInterp: log reads: forward 0 backwards 44
__pmLogFetchInterp: log reads: forward 0 backwards 29
__pmLogFetchInterp: log reads: forward 8 backwards 14
__pmLogFetchInterp: log reads: forward 15 backwards 0
__pmLogFetchInterp: log reads: forward 32 backwards 0
__pmLogFetchInterp: log reads: forward 0 backwards 35
__pmLogFetchInterp: log reads: forward 0 backwards 20
__pmLogFetchInterp: log reads: forward 12 backwards 4
__pmLogFetchInterp: log reads: forward 26 backwards 0
[... and many others, with small forward / backward numbers ...]

% grep reads:.forward slow-Dinterp.log
[... out the same, then ...]
__pmLogFetchInterp: log reads: forward 8 backwards 69
__pmLogFetchInterp: log reads: forward 16 backwards 75
__pmLogFetchInterp: log reads: forward 0 backwards 114
__pmLogFetchInterp: log reads: forward 8 backwards 114
[...100 lines later...]
__pmLogFetchInterp: log reads: forward 16 backwards 1559
__pmLogFetchInterp: log reads: forward 0 backwards 1599
__pmLogFetchInterp: log reads: forward 8 backwards 1599
__pmLogFetchInterp: log reads: forward 16 backwards 1604
__pmLogFetchInterp: log reads: forward 0 backwards 1644
[...100 lines later...]
__pmLogFetchInterp: log reads: forward 0 backwards 3084
__pmLogFetchInterp: log reads: forward 8 backwards 3084
__pmLogFetchInterp: log reads: forward 16 backwards 3089
__pmLogFetchInterp: log reads: forward 0 backwards 3129
__pmLogFetchInterp: log reads: forward 8 backwards 3129
[...500 lines later...]
__pmLogFetchInterp: log reads: forward 16 backwards 7096
__pmLogFetchInterp: log reads: forward 0 backwards 7134
__pmLogFetchInterp: log reads: forward 7 backwards 7134
__pmLogFetchInterp: log reads: forward 16 backwards 7141
__pmLogFetchInterp: log reads: forward 18931 backwards 2718
__pmLogFetchInterp: log reads: forward 18916 backwards 2718
__pmLogFetchInterp: log reads: forward 18901 backwards 2718
__pmLogFetchInterp: log reads: forward 18886 backwards 2718
__pmLogFetchInterp: log reads: forward 18875 backwards 2717

Whoa dude!


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390757065.65ada0.20501-- From wwwrun@oss.sgi.com Sun Jan 26 14:27:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 294DB7F5F; Sun, 26 Jan 2014 14:27:45 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file Date: Sun, 26 Jan 2014 20:27:44 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: kenj@internode.on.net X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390768065.35CEFbE02.28700"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390768065.35CEFbE02.28700 Date: Sun, 26 Jan 2014 14:27:45 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 Ken McDonell changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kenj@internode.on.net --- Comment #2 from Ken McDonell --- Frank, Are the long forwards and backwards reads for a specific metric, or for more than one metric? Unfortunately without the archive these sort of problems have proven nigh-on-impossible to debug in the past ... in this case I'd need the good and the bad archive. Looks like reading to a mark record or reading to end of archive to me, which sometimes is necessary to find a bound (that may not exist in the archive) for a COUNTER or INSTANT metric. But the code is supposed to remember the state of these scans, so doing it multiple times is definitely broken. We have lots of QA coverage in this area, so this is probably a subtle corner case. -- You are receiving this mail because: You are on the CC list for the bug. --1390768065.35CEFbE02.28700 Date: Sun, 26 Jan 2014 14:27:45 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1044
What Removed Added
CC   kenj@internode.on.net

Comment # 2 on bug 1044 from
Frank,

Are the long forwards and backwards reads for a specific metric, or for more
than one metric?

Unfortunately without the archive these sort of problems have proven
nigh-on-impossible to debug in the past ... in this case I'd need the good and
the bad archive.

Looks like reading to a mark record or reading to end of archive to me, which
sometimes is necessary to find a bound (that may not exist in the archive) for
a COUNTER or INSTANT metric.  But the code is supposed to remember the state of
these scans, so doing it multiple times is definitely broken.  We have lots of
QA coverage in this area, so this is probably a subtle corner case.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390768065.35CEFbE02.28700-- From wwwrun@oss.sgi.com Mon Jan 27 07:54:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 1F4717F67; Mon, 27 Jan 2014 07:54:53 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file Date: Mon, 27 Jan 2014 13:54:52 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390830893.dF1eFC2f1.13130"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390830893.dF1eFC2f1.13130 Date: Mon, 27 Jan 2014 07:54:53 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 --- Comment #3 from Frank Ch. Eigler --- % pmval $metric -U slow-archive >/dev/null # slow-archive sent to kenj already behaves differently for different metrics. For proc.runq.sleeping, it runs in seconds. For hinv.*, pmcd.*, it runs in ten minutes. Maybe the problem is limited to or made worse by the the "once"-logged values. -- You are receiving this mail because: You are on the CC list for the bug. --1390830893.dF1eFC2f1.13130 Date: Mon, 27 Jan 2014 07:54:53 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"

Comment # 3 on bug 1044 from
% pmval $metric -U slow-archive >/dev/null  # slow-archive sent to kenj already

behaves differently for different metrics.  For proc.runq.sleeping, it runs in
seconds.  For hinv.*, pmcd.*, it runs in ten minutes.  Maybe the problem is 
limited to or made worse by the the "once"-logged values.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390830893.dF1eFC2f1.13130-- From fche@redhat.com Mon Jan 27 14:28:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EDCDC7F6F for ; Mon, 27 Jan 2014 14:28:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id BD4E78F804B for ; Mon, 27 Jan 2014 12:28:19 -0800 (PST) X-ASG-Debug-ID: 1390854498-04bdf030eb1758f0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id BhxWRaDePsjidVRe for ; Mon, 27 Jan 2014 12:28:19 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0RKSI66003899 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 27 Jan 2014 15:28:18 -0500 Received: from fche.csb (vpn-233-82.phx2.redhat.com [10.3.233.82]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0RKSImw003649 for ; Mon, 27 Jan 2014 15:28:18 -0500 Received: by fche.csb (Postfix, from userid 2569) id E57F658119; Mon, 27 Jan 2014 15:28:17 -0500 (EST) To: pcp@oss.sgi.com Subject: Re: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file References: X-ASG-Orig-Subj: Re: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file From: fche@redhat.com (Frank Ch. Eigler) Date: Mon, 27 Jan 2014 15:28:17 -0500 In-Reply-To: (bugzilla-daemon@oss.sgi.com's message of "Mon, 27 Jan 2014 13:54:52 +0000") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390854499 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 bugzilla-daemon@oss.sgi.com writes: > % pmval $metric -U slow-archive >/dev/null # slow-archive sent to kenj already > > behaves differently for different metrics. [...] (Sorry, make that pmval $metric -t 60 -a slow-archive) - FChE From wwwrun@oss.sgi.com Mon Jan 27 21:14:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 4BA167F77; Mon, 27 Jan 2014 21:14:51 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1046] New: pmlogger heavy duplication in .meta output Date: Tue, 28 Jan 2014 03:14:48 +0000 X-Bugzilla-Reason: CC AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@oss.sgi.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter cc classification Message-ID: Content-Type: multipart/alternative; boundary="1390878891.B8A4e2d20.16982"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390878891.B8A4e2d20.16982 Date: Mon, 27 Jan 2014 21:14:51 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1046 Bug ID: 1046 Summary: pmlogger heavy duplication in .meta output Product: pcp Version: unspecified Hardware: All OS: Linux Status: NEW Severity: major Priority: P5 Component: pcp Assignee: pcp@oss.sgi.com Reporter: fche@redhat.com CC: pcp@oss.sgi.com Classification: Unclassified When the instance domain of a logged metric changes a little, pmlogger appears to dump the whole reported set to the .meta file, not just the differences. This can make the .meta file grow quite rapidly. For example, take my config file, please: % cat config.pmlogger.procs log mandatory on default { proc.psinfo.cmd } % pmlogger -r -u -t 10 -c config.pmlogger.procs foo & % grep Metric pmlogger.log Metric proc.psinfo.cmd logged every 10 sec: 4128 bytes or 34.01 Mbytes/day [... after a few minutes kill the logger ...] % pmloglabel -L foo Log Label (Log Format Version 2) Performance metrics from host very.elastic.org commencing Mon Jan 27 22:00:22.769 2014 ending Mon Jan 27 22:07:42.772 2014 Archive timezone: EST+5 % ls -al foo* -rw-r--r--. 1 fche users 183660 Jan 27 22:07 foo.0 -rw-r--r--. 1 fche users 312 Jan 27 22:07 foo.index -rw-r--r--. 1 fche users 76675 Jan 27 22:07 foo.meta % strings foo.meta |sort | uniq -c [... note a great deal of duplication ... about eight sets in this one ...] -- You are receiving this mail because: You are on the CC list for the bug. You are the assignee for the bug. --1390878891.B8A4e2d20.16982 Date: Mon, 27 Jan 2014 21:14:51 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"
Bug ID 1046
Summary pmlogger heavy duplication in .meta output
Product pcp
Version unspecified
Hardware All
OS Linux
Status NEW
Severity major
Priority P5
Component pcp
Assignee pcp@oss.sgi.com
Reporter fche@redhat.com
CC pcp@oss.sgi.com
Classification Unclassified

When the instance domain of a logged metric changes a little, pmlogger
appears to dump the whole reported set to the .meta file, not just the
differences.  This can make the .meta file grow quite rapidly.

For example, take my config file, please:

% cat config.pmlogger.procs 
log mandatory on default { proc.psinfo.cmd }

% pmlogger -r -u -t 10 -c config.pmlogger.procs foo &

% grep Metric pmlogger.log
Metric proc.psinfo.cmd logged every 10 sec: 4128 bytes or 34.01 Mbytes/day

[... after a few minutes kill the logger ...]

% pmloglabel -L foo
Log Label (Log Format Version 2)
Performance metrics from host very.elastic.org
  commencing Mon Jan 27 22:00:22.769 2014
  ending     Mon Jan 27 22:07:42.772 2014
Archive timezone: EST+5

% ls -al foo*
-rw-r--r--. 1 fche users 183660 Jan 27 22:07 foo.0
-rw-r--r--. 1 fche users    312 Jan 27 22:07 foo.index
-rw-r--r--. 1 fche users  76675 Jan 27 22:07 foo.meta
% strings foo.meta |sort | uniq -c

[... note a great deal of duplication ... about eight sets in this one ...]


You are receiving this mail because:
  • You are on the CC list for the bug.
  • You are the assignee for the bug.
--1390878891.B8A4e2d20.16982-- From wwwrun@oss.sgi.com Mon Jan 27 22:39:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id DA7357F7D; Mon, 27 Jan 2014 22:39:34 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1046] pmlogger heavy duplication in .meta output Date: Tue, 28 Jan 2014 04:39:34 +0000 X-Bugzilla-Reason: CC AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: kenj@internode.on.net X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@oss.sgi.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390883974.DBc4F2.21430"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390883974.DBc4F2.21430 Date: Mon, 27 Jan 2014 22:39:34 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1046 Ken McDonell changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kenj@internode.on.net --- Comment #1 from Ken McDonell --- I am not sure there is much that can be done about this in terms of a "quick fix" ... we need to be able to create the state of the instance domain at a point in time, for requests that can start at an arbitrary point in the archive, and proceed forwards or backwards by arbitrary time increments. I would expect that changing pmlogger to record simple deltas will not do the job. We'd a redesign of how this is handled in libpcp, then make the changes to pmlogger to accommodate this ... it is a big task, but not impossible. -- You are receiving this mail because: You are on the CC list for the bug. You are the assignee for the bug. --1390883974.DBc4F2.21430 Date: Mon, 27 Jan 2014 22:39:34 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1046
What Removed Added
CC   kenj@internode.on.net

Comment # 1 on bug 1046 from
I am not sure there is much that can be done about this in terms of a "quick
fix" ... we need to be able to create the state of the instance domain at a
point in time, for requests that can start at an arbitrary point in the
archive, and proceed forwards or backwards by arbitrary time increments.

I would expect that changing pmlogger to record simple deltas will not do the
job.

We'd a redesign of how this is handled in libpcp, then make the changes to
pmlogger to accommodate this ... it is a big task, but not impossible.


You are receiving this mail because:
  • You are on the CC list for the bug.
  • You are the assignee for the bug.
--1390883974.DBc4F2.21430-- From fche@redhat.com Tue Jan 28 06:16:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1034C7F84 for ; Tue, 28 Jan 2014 06:16:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E8802304062 for ; Tue, 28 Jan 2014 04:16:42 -0800 (PST) X-ASG-Debug-ID: 1390911399-04cb6c7509186d80001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 1x5qEnlft4xK6J27 for ; Tue, 28 Jan 2014 04:16:39 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0SCGZvo015562 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 28 Jan 2014 07:16:35 -0500 Received: from fche.csb (vpn-233-82.phx2.redhat.com [10.3.233.82]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0SCGZtl030824; Tue, 28 Jan 2014 07:16:35 -0500 Received: by fche.csb (Postfix, from userid 2569) id D7F345814E; Tue, 28 Jan 2014 07:16:34 -0500 (EST) Date: Tue, 28 Jan 2014 07:16:34 -0500 From: "Frank Ch. Eigler" To: pcp@oss.sgi.com Cc: kenj@internode.on.net Subject: pcp archive format documentation Message-ID: <20140128121634.GB1185@redhat.com> X-ASG-Orig-Subj: pcp archive format documentation Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390911399 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - These last two pcp-archive-related bugs made me search around for formal documentation of the archive file format, but I couldn't find any. If we are to fix some of these problems, we'll need to come up with some specs, so we have more than de-facto ("whatever the current libpcp, libpcpi, pmlogger, pmlog* functions each accept/create") since those will change. (That is, unless we imagine doing something drastic like switching away from these files as the preferred form.) - FChE From scox@redhat.com Tue Jan 28 17:31:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5C1C87FA7 for ; Tue, 28 Jan 2014 17:31:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BBCBEAC00C for ; Tue, 28 Jan 2014 15:31:42 -0800 (PST) X-ASG-Debug-ID: 1390951898-04cb6c75081b2b90001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id YMJGhYyz5EiHStLs for ; Tue, 28 Jan 2014 15:31:38 -0800 (PST) X-Barracuda-Envelope-From: scox@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0SNVbWK022592 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 28 Jan 2014 18:31:37 -0500 Received: from [10.10.58.248] (vpn-58-248.rdu2.redhat.com [10.10.58.248]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0SNVaA2016047 for ; Tue, 28 Jan 2014 18:31:37 -0500 Message-ID: <52E83DD8.5020403@redhat.com> Date: Tue, 28 Jan 2014 18:31:36 -0500 From: Stan Cox User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: PCP Subject: programmer's guide python documentation Content-Type: text/plain; charset=windows-1252; format=flowed X-ASG-Orig-Subj: programmer's guide python documentation Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1390951898 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is a writeup to be added to the programmer's guide for the python api (site-packages/pcp/pmapi.py). The "For more information see the C function description" lines all point back to the C function writeup. The index entries add an entry for "pmEntry python", e.g. pmNameAll function pmNameAll Function pmNameAll Python PMAPI Python Procedural Interface The following sections describe all of the PMAPI functions that provide access to the PCP infrastructure on behalf of a client application: • PMAPI Name Space services • PMAPI metric description services • PMAPI instance domain services • PMAPI context services • PMAPI timezone services • PMAPI metrics services • PMAPI record-mode services • PMAPI archive-specific services • PMAPI time control services • PMAPI ancillary support services PMAPI Name Space Services pmGetChildren Function [name1, name2...] = pmGetChildren(name) Return names of children for the given PMNS node name. Given a full pathname to a node in the current PMNS, as identified by name, return a tuple containing the relative names of all the immediate descendents of name in the current PMNS. For more information see the C function description. pmGetChildrenStatus Function ([name1, name2...],[status1, status2...]) = pmGetChildrenStatus(name) Return names and status of children for the given metric name. Given a full pathname to a node in the current PMNS, as identified by name, return a tuple containing the relative names and statuses of all the immediate descendents of name in the current PMNS. For more information see the C function description. pmGetPMNSLocation Function int loc = pmGetPMNSLocation() Return the namespace location type. Returns whether a PMNS is an archive cpmapi.PMNS_ARCHIVE, a local PMNS file cpmapi.PMNS_LOCAL, or a remote PMCD cpmapi.PMNS_REMOTE. The constants are available by importing cpmapi. For more information see the C function description. pmLoadNameSpace Function int status = pmLoadNameSpace(filename) Load a local namespace. Load a local tailored Name Space from filename. For more information see the C function description. pmLookupName Function c_uint pmid [] = pmLookupName("MetricName") c_uint pmid [] = pmLookupName(("MetricName1", "MetricName2", ...)) e.g. pmid = pmLookupName(("hinv.ncpu","kernel.all.load")) Lookup pmIDs from a list of metric names. Return an array of associated PMIDs corresponding to a tuple of MetricNames. The returned pmid tuple is passed to pmLookupDescs and pmFetch. For more information see the C function description. pmNameAll Function [name1, name2...] = pmNameAll(pmid_id) Return a tuple of all metric names having this identical pmid. For more information see the C function description. pmNameID Function str name = pmNameID(pmid) Return a metric name corresponding to a pmid. For more information see the C function description. pmTraversePMNS Function int status = pmTraversePMNS(name, traverse_callback) Perform a depth first traversal of the PMNS by scanning namespace, depth first, and call a python function traverse_callback for each node. For more information see the C function description. pmUnLoadNameSpace Function pmUnLoadNameSpace("NameSpace") If a local PMNS was loaded with pmLoadNameSpace, calling pmUnloadNameSpace forces all subsequent Name Space functions to use the distributed PMNS. For more information see the C function description. PMAPI Metrics Description Services pmLookupDesc Function pmDesc* pmdesc = pmLookupDesc(c_uint pmid) Lookup a metric description structure pmDesc corresponding to pmid. The returned pmdesc is passed to pmExtractValue and pmLookupInDom. For more information see the C function description. pmLookupDescs Function (pmDesc* pmdesc)[] = pmLookupDescs(c_uint pmids[N]) (pmDesc* pmdesc)[] = pmLookupDescs(c_uint pmid) Similar to pmLookupDesc but does a metric description lookup for each element in a PMID array pmids. pmLookupDescs python function pmLookupInDomText Function "instance" = pmLookupInDomText(pmDesc pmdesc) Lookup the description text about the performance metrics pmDesc pmdesc. The default is a one line summary; for a more verbose description add an optional second parameter cpmapi.PM_TEXT_HELP. The constant is available by importing cpmapi. For more information see the C function description. pmLookupText Function "desc" = pmLookupText(pmID pmid) Lookup the description text about the performance metrics pmID pmid. The default is a one line summary; for a more verbose description add an optional second parameter cpmapi.PM_TEXT_HELP. The constant is available by importing cpmapi. For more information see the C function description. PMAPI Instance Domain Services pmGetInDom Function ([instance1, instance2...] [name1, name2...]) pmGetInDom(pmDesc pmdesc) Return the list of instances and a list of instance names for an instance domain pmdesc. For more information see the C function description. pmLookupInDom Function int instid = pmLookupInDom(pmDesc pmdesc, "Instance") Return the instance id corresponding to "Instance" in the instance domain pmdesc. For more information see the C function description. pmNameInDom Function "string" = pmNameInDom(pmDesc pmdesc, c_uint instid) Return the text name of an instance corresponding to an instance domain pmdesc with instance identifier instid. For more information see the C function description. PMAPI Context Services pmNewContext Function This is unimplemented. A new context is established when a pmContext object is created. For more information see the C function description. pmDestroyContext Function This is unimplemented. The context is destroyed when the pmContext object is destroyed. For more information see the C function description. pmDupContext Function pmContext context = pmDupContext() This is unimplemented. Context changes are handled by the individual methods in a pmContext class instance. For more information see the C function description. pmUseContext Function This is unimplemented. Context changes are handled by the individual methods in a pmContext class instance. For more information see the C function description. pmWhichContext Function int ctx_idx = pmWhichContext() Returns the handle of the current PMAPI context. For more information see the C function description. pmAddProfile Function int status = pmAddProfile(pmDesc pmdesc, c_uint instid) int status = pmAddProfile(pmDesc pmdesc, [c_uint instid]) add the list of instances instid to the instance profile of the instance pmdesc. For more information see the C function description. pmDelProfile Function int status = pmDelProfile(pmDesc pmdesc, c_uint instid) int status = pmDelProfile(pmDesc pmdesc, [c_uint instid]) delete the list of instances instid from the instance profile of the instance domain pmdesc. For more information see the C function description. pmSetMode Function int status = pmSetMode(mode, timeVal timeval, int delta) Define the collection time and mode for reading archive files. mode is defined in the c_api.PM_MODE* constants defined in by importing cpmapi. For more information see the C function description. pmReconnectContext Function int status = pmReconnectContext() Reestablish the connection for the context. For more information see the C function description. pmGetContextHostName Function "hostname" = pmGetContextHostName() Retrieve the hostname for the given context. PMAPI Timezone Services pmNewContextZone Function pmNewContextZone() Query and set the current reporting timezone. For more information see the C function description. pmNewZone Function int tz_handle = pmNewZone(int tz) Create new zone handle and set reporting timezone for the timezone defined by tz. For more information see the C function description. pmUseZone Function int status = pmUseZone(int tz_handle) Sets the current reporting timezone defined by timezone tz_handle. For more information see the C function description. pmWhichZone Function "zone string" = pmWhichZone() Return the current reporting timezone. For more information see the C function description. pmLocaltime Function struct tm *pmLocaltime (int seconds); Convert the date and time for a reporting timezone. pmCtime Function "time string" = pmCtime (int seconds) Format the date and time for a reporting timezone. PMAPI Metrics Services pmFetch Function pmResult* pmresult = pmFetch(c_uint pmid[]) Fetch a pmResult corresponding to a pmid list, which is returned from pmLookupName. The returned pmresult is passed to pmExtractValue. For more information see the C function description. pmFreeResult Function pmFreeResult(pmResult* pmresult) Free a pmresult previously allocated by pmFetch. For more information see the C function description. pmStore Function pmResult* pmresult = pmStore(pmResult* pmresult) The inverse of pmFetch. For more information see the C function description. PMAPI Archive-Specific Services pmGetArchiveLabel Function int loglabel = pmGetArchiveLabel() Get the label record from the archive. For more information see the C function description. pmGetArchiveEnd Function int status = pmGetArchiveEnd() Get the last recorded timestamp from the archive. For more information see the C function description. pmGetInDomArchive Function ((instance1, instance2...) (name1, name2...)) pmGetInDom(pmDesc pmdesc) Get the instance IDs and names for the union of all instances for the instance domain pmdesc that can be found in the archive log. For more information see the C function description. pmLookupInDomArchive Function c_uint instid = pmLookupInDomArchive(pmDesc pmdesc, "Instance") Return the instance id in pmdesc corresponding to Instance. For more information see the C function description. pmNameInDomArchive Function "string" = pmNameInDomArchive(pmDesc pmdesc, c_uint instid) Return the text name of an instance corresponding to an instance domain pmdesc with instance identifier instid. For more information see the C function description. pmFetchArchive Function pmResult* pmresult = pmFetchArchive() Fetch measurements from the target source. For more information see the C function description. PMAPI Ancilliary Support Services pmGetConfig Function "string" = pmGetConfig ("env variable") Return value for environment variable "env variable" from environment or pcp config file. pmErrStr Function "string" = pmErrStr (int error_code) Return error string for error code. For more information see the C function description. pmExtractValue Function pmAtomValue = pmExtractValue(int valfmt, const pmValue * ival, int itype, pmAtomValue *oval, int otype) e.g. pmExtractValue(results.contents.get_valfmt(i), results.contents.get_vlist(i, 0), descs[i].contents.type, c_api.PM_TYPE_FLOAT) Extract a value from a pmValue struct ival stored in format valfmt (see pmFetch), and convert its type from itype to otype. For more information see the C function description. pmConvScale Function pmAtomValue = pmConvScale(int itype, pmAtomValue value, pmDesc* pmdesc , int descidx, int otype) e.g. pmConvScale(c_api.PM_TYPE_FLOAT, pmAtomValue, pmDesc*, 3, c_api.PM_SPACE_MBYTE) Convert a value pointed to by pmdesc entry descidx to a different scale otype. For more information see the C function description. pmUnitsStr Function "units string" = pmUnitsStr(pmUnits pmunits) Translate a pmUnits struct pmunits to a readable string. For more information see the C function description. pmIDStr Function "ID string" = pmIDStr(int pmID) Translate a pmID pmid to a readable string. For more information see the C function description. pmInDomStr Function "indom" = pmGetInDom(pmDesc pmdesc) Translate an instance domain ID pointed to by a pmDesc pmdesc to a readable string. For more information see the C function description. pmTypeStr Function "type" = pmTypeStr(int type) Translate a performance metric type to a readable string. Constants are available for the types, e.g. c_api.PM_TYPE_FLOAT, by importing cpmapi. For more information see the C function description. pmAtomStr Function "value" = pmAtomStr(atom, type) Translate a pmAtomValue atom having performance metric type to a readable string. Constants are available for the types, e.g. c_api.PM_TYPE_U32, by importing cpmapi. For more information see the C function description. pmPrintValue Function pmPrintValue(FILE* file, pmResultpmresult, pmdesc, vset_index, vlist_index, min_wid e.g. pmPrintValue(file, value, pmdesc, vset_index, vlist_index, min_width) Print the value of a pmresult pointed to by vset_index/vlist_index and described by pmdesc. The format of a pmResult is described in pmResult For more information see the C function description. pmflush Function int status = pmFlush() flush the internal buffer shared with pmprintf. For more information see the C function description. pmprintf Function append message to internal buffer for later printing. For more information see the C function description. pmSortInstances Function pmSortInstances (pmResult* pmresult) sort all metric instances in result returned by pmFetch. For more information see the C function description. pmParseInterval Function (struct timeval, "error message") = pmParseInterval("time string") parse a "time string" into a timeval struct. For more information see the C function description. pmParseMetricSpec Function (pmMetricSpec metricspec ,errormsg) = pmParseMetricSpec("metric specification", isa e.g. (result,errormsg) = pmParseMetricSpec("hinv.ncpu", 0, "localhost") Parse a "metric specification" into a pmMetricSpec struct. For more information see the C function description. From nscott@redhat.com Tue Jan 28 23:43:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9337D7F95 for ; Tue, 28 Jan 2014 23:43:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 18A93AC004 for ; Tue, 28 Jan 2014 21:43:29 -0800 (PST) X-ASG-Debug-ID: 1390974205-04cb6c750a1bb7a0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id xpClRCQuIK28eCNW for ; Tue, 28 Jan 2014 21:43:25 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0T5hOPR027940 for ; Wed, 29 Jan 2014 00:43:24 -0500 Date: Wed, 29 Jan 2014 00:43:24 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <2079478185.15183762.1390974204857.JavaMail.root@redhat.com> In-Reply-To: <1288830274.15173866.1390972567394.JavaMail.root@redhat.com> Subject: Multi-lib support problem & possible fix MIME-Version: 1.0 X-ASG-Orig-Subj: Multi-lib support problem & possible fix Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Multi-lib support problem & possible fix Thread-Index: 0ipK1ld2vXj1dlcvdhOhKBwSTcJrrg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390974205 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144592 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, A recent automated tool run here within Red Hat has found a problem with the pcp-libs package which prevents it from being installed "multilib". IOW, one cannot install both 32 and 64 bit versions of the libraries at the same time, which is desirable in some situations (3rd parties linking with 32 bit variants, wanting their binaries to run on the 64 bit version of the platform, for example). It would be good to address this. In RPM-land, in order for this to work, the files from the two pcp-libs packages need to either be entirely without overlap (in terms of the lib64/32 directories used) or they need to have exactly the same contents between the two rpms. There is a section of /etc/pcp.conf which doesn't meet this need and that is these two lines ... PCP_LIB_DIR=/usr/lib64 PCP_LIB32_DIR=/usr/lib I initially looked at simply removing these, since they are not used in the source code directly. However, I later on found they are used in builddefs/buildmacros, which might be used when a third party is building software using pcp-libs (esp. PMDAs - and possibly just linking 'em - as was done for pmdaoracle in the past - *sigh*). So, I became a little uncomfortable removing these lines from pcp.conf, and looked about for an alternative. One possible alternative, which I'm suggesting we attempt, is to split pcp-libs into two packages - a pcp-libs with the shared library binaries, and a pcp-conf with the config and build-config files it has now. If this works, I think it is the simplest way to tackle the problem, although as Frank most accurately describes it, its "a gloriously gross hack" (sounds like a challenge!). It relies on the property that it is OK to have either of the two pcp.conf variants installed (but only one - either of which can satisfy the RPM dependency, at least in theory). One other plus to this inglorious hack, is that its also been recommended to us as a way to tackle a library issue in the Debian packaging, over here, again via pcp.conf: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=654616 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655440 So, at least for some makefile components, we'd be able to share the solution between the rpm and deb platforms. Thoughts? Alternatives? thanks! -- Nathan From nscott@redhat.com Tue Jan 28 23:55:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 698667F9A for ; Tue, 28 Jan 2014 23:55:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 04F5EAC004 for ; Tue, 28 Jan 2014 21:55:49 -0800 (PST) X-ASG-Debug-ID: 1390974948-04cbb05bab1d6120001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id aOMfc0WvsxzF1wOr for ; Tue, 28 Jan 2014 21:55:48 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0T5tltb029764; Wed, 29 Jan 2014 00:55:47 -0500 Date: Wed, 29 Jan 2014 00:55:47 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: pcp@oss.sgi.com Message-ID: <814405757.15186719.1390974947716.JavaMail.root@redhat.com> In-Reply-To: <20140128121634.GB1185@redhat.com> References: <20140128121634.GB1185@redhat.com> Subject: Re: [pcp] pcp archive format documentation MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp archive format documentation Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp archive format documentation Thread-Index: 6uK8UT8xm99pm4fYBucqd1Bya9uOEg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390974948 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144593 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Hi - > > These last two pcp-archive-related bugs made me search around for > formal documentation of the archive file format, but I couldn't find > any. If we are to fix some of these problems, we'll need to come up > with some specs, so we have more than de-facto ("whatever the current > libpcp, libpcpi, pmlogger, pmlog* functions each accept/create") since > those will change. Some documentation about the metadata and temporal index file formats sounds like a wonderful idea. The data format is described via proxy in pmFetch(3) and in the books, where pmResult formats are detailed, but these other aspects are not documented AFAIK. And there are some aspects of the data file (label, mark records) which are not deeply discussed there too. > (That is, unless we imagine doing something drastic like switching > away from these files as the preferred form.) We might imagine it, but always we will need backward compatibility; so whatever happens this documentation will be extremely useful. If diagrams would help (svg or what-not) consider the Programmers Guide as a possible home for the docs too. Very happy to offer my limited svg drawing skills (used for other PG docs) if sketch diagrams could be made. thanks! -- Nathan From pcp-announce-bounces@oss.sgi.com Wed Jan 29 00:38:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from oss.sgi.com (localhost [IPv6:::1]) by oss.sgi.com (Postfix) with ESMTP id CE5D17F9E; Wed, 29 Jan 2014 00:38:04 -0600 (CST) X-Original-To: pcp-announce@oss.sgi.com Delivered-To: pcp-announce@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 99FDD7F60 for ; Wed, 29 Jan 2014 00:38:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 736E430406B for ; Tue, 28 Jan 2014 22:38:03 -0800 (PST) X-ASG-Debug-ID: 1390977478-04cb6c75081bd020001-87ZIJf Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id mp5fKs9NX1nbIFc2 for ; Tue, 28 Jan 2014 22:37:58 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0T6bwAt004189 for ; Wed, 29 Jan 2014 01:37:58 -0500 Date: Wed, 29 Jan 2014 01:37:58 -0500 (EST) From: Nathan Scott To: pcp-announce@oss.sgi.com Message-ID: <332929372.15201496.1390977478246.JavaMail.root@redhat.com> In-Reply-To: <616707971.15193563.1390975975636.JavaMail.root@redhat.com> MIME-Version: 1.0 X-ASG-Orig-Subj: Performance Co-Pilot 3.8.12 released X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Performance Co-Pilot 3.8.12 released Thread-Index: ZTgkOCEKIXoivP37ce+NO5jNPrtM/w== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1390977478 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Subject: [pcp-announce] Performance Co-Pilot 3.8.12 released X-BeenThere: pcp-announce@oss.sgi.com X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Nathan Scott List-Id: pcp announcements List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pcp-announce-bounces@oss.sgi.com Sender: pcp-announce-bounces@oss.sgi.com Hi all, An important issue was found in the 3.8.10 release affecting the metrics namespace for new installations (not upgrades) of PCP. To address this quickly, as well as incorporate all the good work done in that last few weeks, we've released 3.8.12 much earlier than we usually would. http://oss.sgi.com/projects/pcp/ ftp://oss.sgi.com/projects/pcp/download/ In addition to the PMNS file fix referenced above, there has been further work been done on optimizing pmlogger(1) and an important fix has been made to the Linux kernel SNMP procfs file parser, amongst other things. pcp-3.8.12 (29 January 2014) - Fix recent (3.8.10) regression for certain platforms where important PMNS files ended up not being installed. Impact is on new installs only, not upgrades (so my QA missed it). - pmmgr: add -l (logfile) option to fix a permissions issue. - pmdalinux: fix sigsegv on certain icmp procfs file lines. - Further improvements to pmlogger internal data structures dealing with configuration files with duplicate metrics and/or instances - improved in terms of network fetching, as well as on-disk data layout (all backwards compatible). - pmdarpm: added cumulative rpm.total.{count,bytes} metrics. - Add man pages for all of the PMDAs currently missing one. -- Nathan _______________________________________________ pcp-announce mailing list pcp-announce@oss.sgi.com http://oss.sgi.com/mailman/listinfo/pcp-announce From dak-unpriv@franck.debian.org Wed Jan 29 00:43:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A38C47F88 for ; Wed, 29 Jan 2014 00:43:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 35184AC004 for ; Tue, 28 Jan 2014 22:43:38 -0800 (PST) X-ASG-Debug-ID: 1390977816-04cbb05bac1d7420001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id dWheqDcbBnoFptRU (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 28 Jan 2014 22:43:36 -0800 (PST) X-Barracuda-Envelope-From: dak-unpriv@franck.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak-unpriv by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W8Os3-0001ZL-QB for pcp@oss.sgi.com; Wed, 29 Jan 2014 06:43:35 +0000 To: pcp@oss.sgi.com From: Debian FTP Masters Subject: Processing of pcp_3.8.12_i386.changes Date: Wed, 29 Jan 2014 06:43:35 +0000 X-ASG-Orig-Subj: Processing of pcp_3.8.12_i386.changes X-Debian: DAK X-DAK: DAK Precedence: bulk Auto-Submitted: auto-generated X-Debian-Package: pcp Message-Id: Sender: unprivileged ftp-master role account X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1390977816 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pcp-import-sheet2pcp_3.8.12_all.deb has incorrect size; deleting it Due to the errors above, the .changes file couldn't be processed. Please fix the problems for the upload to happen. Greetings, Your Debian queue daemon (running on host franck.debian.org) From dak-unpriv@franck.debian.org Wed Jan 29 00:49:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1CC167F88 for ; Wed, 29 Jan 2014 00:49:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E8DCD8F804C for ; Tue, 28 Jan 2014 22:49:04 -0800 (PST) X-ASG-Debug-ID: 1390978139-04bdf030ea1edd50001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id XuJ3DLPEjna8sHC3 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 28 Jan 2014 22:49:00 -0800 (PST) X-Barracuda-Envelope-From: dak-unpriv@franck.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak-unpriv by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W8OxH-0002VG-Lm for pcp@oss.sgi.com; Wed, 29 Jan 2014 06:48:59 +0000 To: pcp@oss.sgi.com From: Debian FTP Masters Subject: Processing of pcp_3.8.12_i386.changes Date: Wed, 29 Jan 2014 06:48:59 +0000 X-ASG-Orig-Subj: Processing of pcp_3.8.12_i386.changes X-Debian: DAK X-DAK: DAK Precedence: bulk Auto-Submitted: auto-generated X-Debian-Package: pcp Message-Id: Sender: unprivileged ftp-master role account X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1390978140 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pcp_3.8.12_i386.changes uploaded successfully to localhost along with the files: pcp_3.8.12.dsc pcp_3.8.12.tar.gz pcp_3.8.12_i386.deb libpcp3-dev_3.8.12_i386.deb libpcp3_3.8.12_i386.deb libpcp-gui2-dev_3.8.12_i386.deb libpcp-gui2_3.8.12_i386.deb libpcp-mmv1-dev_3.8.12_i386.deb libpcp-mmv1_3.8.12_i386.deb libpcp-pmda3-dev_3.8.12_i386.deb libpcp-pmda3_3.8.12_i386.deb libpcp-trace2-dev_3.8.12_i386.deb libpcp-trace2_3.8.12_i386.deb libpcp-import1-dev_3.8.12_i386.deb libpcp-import1_3.8.12_i386.deb python-pcp_3.8.12_i386.deb libpcp-pmda-perl_3.8.12_i386.deb libpcp-import-perl_3.8.12_i386.deb libpcp-logsummary-perl_3.8.12_i386.deb libpcp-mmv-perl_3.8.12_i386.deb pcp-import-sar2pcp_3.8.12_all.deb pcp-import-mrtg2pcp_3.8.12_all.deb pcp-import-sheet2pcp_3.8.12_all.deb pcp-import-iostat2pcp_3.8.12_all.deb pcp-import-collectl2pcp_3.8.12_i386.deb pcp-testsuite_3.8.12_i386.deb Greetings, Your Debian queue daemon (running on host franck.debian.org) From wwwrun@oss.sgi.com Wed Jan 29 00:51:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 4B25A7FA4; Wed, 29 Jan 2014 00:51:28 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] pmchart very slow when Overview-panning 300MB 14-day archive file Date: Wed, 29 Jan 2014 06:51:24 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: kenj@internode.on.net X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390978288.fa6d2.2609"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390978288.fa6d2.2609 Date: Wed, 29 Jan 2014 00:51:28 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 --- Comment #4 from Ken McDonell --- After modifying pmdumplog to report extended timestamps (Ddd DD Mmm HH:MM:SS.sss YYYY) with a new -x option, and fixing pmlogextract to correctly include records in the output archive (this was a bug), I now have a test case that uses a much smaller archive ... kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow pmcd.numagents >/dev/null real 0m24.469s user 0m19.921s sys 0m4.532s kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow hinv.ncpu >/dev/null real 0m0.242s user 0m0.232s sys 0m0.004s kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow kernel.all.nprocs >/dev/null real 0m0.227s user 0m0.223s sys 0m0.004s kenj@bozo-vm:~/tmp$ pmlogsummary -y slow pmcd.numagents 5.000 661 none hinv.ncpu 4.000 22056 none kernel.all.nprocs 617.961 21392 none kenj@bozo-vm:~/tmp$ pmdumplog slow | grep mark | wc -l 663 kenj@bozo-vm:~/tmp$ pmdumplog -x slow | grep mark | tail -20 Fri Jan 24 19:35:34.486 2014 Fri Jan 24 19:56:06.572 2014 Fri Jan 24 20:35:26.576 2014 Fri Jan 24 21:11:58.682 2014 Fri Jan 24 21:31:32.020 2014 Fri Jan 24 22:06:52.404 2014 Fri Jan 24 23:06:21.748 2014 Fri Jan 24 23:10:02.467 2014 Fri Jan 24 23:19:16.265 2014 Sat Jan 25 00:21:45.616 2014 Sat Jan 25 00:37:29.268 2014 Sat Jan 25 00:40:47.391 2014 Sat Jan 25 00:59:58.838 2014 Sat Jan 25 01:37:22.873 2014 Sat Jan 25 09:16:52.833 2014 Sat Jan 25 09:20:10.371 2014 Sat Jan 25 09:23:20.100 2014 Sat Jan 25 09:26:31.592 2014 Sat Jan 25 09:54:43.677 2014 Sat Jan 25 09:57:57.201 2014 What this shows is that it is not the SIZE of the archive that is the problem, it is the large number of records in the archive and metrics that are logged ONCE each time pmlogger starts ... 661 instances of pmcd.numagents and 663 records. This is just a status update ... I'm onto the real debugging now ... 8^)> -- You are receiving this mail because: You are on the CC list for the bug. --1390978288.fa6d2.2609 Date: Wed, 29 Jan 2014 00:51:28 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"

Comment # 4 on bug 1044 from
After modifying pmdumplog to report extended timestamps (Ddd DD Mmm
HH:MM:SS.sss YYYY) with a new -x option, and fixing pmlogextract to correctly
include <mark> records in the output archive (this was a bug), I now have a
test case that uses a much smaller archive ...

kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow pmcd.numagents >/dev/null

real    0m24.469s
user    0m19.921s
sys    0m4.532s
kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow hinv.ncpu >/dev/null

real    0m0.242s
user    0m0.232s
sys    0m0.004s
kenj@bozo-vm:~/tmp$ time pmval -t 60 -a slow kernel.all.nprocs >/dev/null

real    0m0.227s
user    0m0.223s
sys    0m0.004s
kenj@bozo-vm:~/tmp$ pmlogsummary -y slow
pmcd.numagents  5.000 661 none
hinv.ncpu  4.000 22056 none
kernel.all.nprocs  617.961 21392 none
kenj@bozo-vm:~/tmp$ pmdumplog slow | grep mark | wc -l
663
kenj@bozo-vm:~/tmp$ pmdumplog -x slow | grep mark | tail -20
Fri Jan 24 19:35:34.486 2014  <mark>
Fri Jan 24 19:56:06.572 2014  <mark>
Fri Jan 24 20:35:26.576 2014  <mark>
Fri Jan 24 21:11:58.682 2014  <mark>
Fri Jan 24 21:31:32.020 2014  <mark>
Fri Jan 24 22:06:52.404 2014  <mark>
Fri Jan 24 23:06:21.748 2014  <mark>
Fri Jan 24 23:10:02.467 2014  <mark>
Fri Jan 24 23:19:16.265 2014  <mark>
Sat Jan 25 00:21:45.616 2014  <mark>
Sat Jan 25 00:37:29.268 2014  <mark>
Sat Jan 25 00:40:47.391 2014  <mark>
Sat Jan 25 00:59:58.838 2014  <mark>
Sat Jan 25 01:37:22.873 2014  <mark>
Sat Jan 25 09:16:52.833 2014  <mark>
Sat Jan 25 09:20:10.371 2014  <mark>
Sat Jan 25 09:23:20.100 2014  <mark>
Sat Jan 25 09:26:31.592 2014  <mark>
Sat Jan 25 09:54:43.677 2014  <mark>
Sat Jan 25 09:57:57.201 2014  <mark>


What this shows is that it is not the SIZE of the archive that is the problem,
it is the large number of <mark> records in the archive and metrics that are
logged ONCE each time pmlogger starts ... 661 instances of pmcd.numagents and
663 <mark> records.

This is just a status update ... I'm onto the real debugging now ... 8^)>


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390978288.fa6d2.2609-- From wwwrun@oss.sgi.com Wed Jan 29 00:52:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 92BBD7FA4; Wed, 29 Jan 2014 00:52:56 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1044] pmchart very slow when Overview-panning archive file with lots of records Date: Wed, 29 Jan 2014 06:52:55 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: kenj@internode.on.net X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: fche@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: short_desc Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1390978376.83D4ceb22.2720"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1390978376.83D4ceb22.2720 Date: Wed, 29 Jan 2014 00:52:56 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 Ken McDonell changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|pmchart very slow when |pmchart very slow when |Overview-panning 300MB |Overview-panning archive |14-day archive file |file with lots of | |records --- Comment #5 from Ken McDonell --- Updated title to better reflect the nature of the bug ... it is not related directly to the size of the archive. -- You are receiving this mail because: You are on the CC list for the bug. --1390978376.83D4ceb22.2720 Date: Wed, 29 Jan 2014 00:52:56 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1044
What Removed Added
Summary pmchart very slow when Overview-panning 300MB 14-day archive file pmchart very slow when Overview-panning archive file with lots of <mark> records

Comment # 5 on bug 1044 from
Updated title to better reflect the nature of the bug ... it is not related
directly to the size of the archive.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1390978376.83D4ceb22.2720-- From envelope@ftp-master.debian.org Wed Jan 29 01:04:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6A47529DF8 for ; Wed, 29 Jan 2014 01:04:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 36C7C8F8037 for ; Tue, 28 Jan 2014 23:04:06 -0800 (PST) X-ASG-Debug-ID: 1390979044-04bdf030eb1ee460001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id ePhVkq3DlCx1tn3i (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 28 Jan 2014 23:04:04 -0800 (PST) X-Barracuda-Envelope-From: envelope@ftp-master.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1W8PBr-00061y-9o; Wed, 29 Jan 2014 07:04:03 +0000 From: Debian FTP Masters To: PCP Development Team , Nathan Scott X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp Precedence: bulk Auto-Submitted: auto-generated MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: pcp_3.8.12_i386.changes ACCEPTED into unstable Message-Id: X-ASG-Orig-Subj: pcp_3.8.12_i386.changes ACCEPTED into unstable Sender: Archive Administrator Date: Wed, 29 Jan 2014 07:04:03 +0000 X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1390979044 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Accepted: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 29 Jan 2014 13:51:39 +1100 Source: pcp Binary: pcp libpcp3-dev libpcp3 libpcp-gui2-dev libpcp-gui2 libpcp-mmv1-dev libpcp-mmv1 libpcp-pmda3-dev libpcp-pmda3 libpcp-trace2-dev libpcp-trace2 libpcp-import1-dev libpcp-import1 python-pcp libpcp-pmda-perl libpcp-import-perl libpcp-logsummary-perl libpcp-mmv-perl pcp-import-sar2pcp pcp-import-mrtg2pcp pcp-import-sheet2pcp pcp-import-iostat2pcp pcp-import-collectl2pcp pcp-testsuite Architecture: source i386 all Version: 3.8.12 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: libpcp-gui2 - Performance Co-Pilot graphical client tools library libpcp-gui2-dev - Performance Co-Pilot graphical client tools library and headers libpcp-import-perl - Performance Co-Pilot log import Perl module libpcp-import1 - Performance Co-Pilot data import library libpcp-import1-dev - Performance Co-Pilot data import library and headers libpcp-logsummary-perl - Performance Co-Pilot historical log summary module libpcp-mmv-perl - Performance Co-Pilot Memory Mapped Value Perl module libpcp-mmv1 - Performance Co-Pilot Memory Mapped Value client library libpcp-mmv1-dev - Performance Co-Pilot Memory Mapped Value library and headers libpcp-pmda-perl - Performance Co-Pilot Domain Agent Perl module libpcp-pmda3 - Performance Co-Pilot Domain Agent library libpcp-pmda3-dev - Performance Co-Pilot Domain Agent library and headers libpcp-trace2 - Performance Co-Pilot application tracing library libpcp-trace2-dev - Performance Co-Pilot application tracing library and headers libpcp3 - Performance Co-Pilot library libpcp3-dev - Performance Co-Pilot library and headers pcp - System level performance monitoring and performance management pcp-import-collectl2pcp - Tool for importing data from collectl into PCP archive logs pcp-import-iostat2pcp - Tool for importing data from iostat into PCP archive logs pcp-import-mrtg2pcp - Tool for importing data from MRTG into PCP archive logs pcp-import-sar2pcp - Tool for importing data from sar into PCP archive logs pcp-import-sheet2pcp - Tool for importing data from a spreadsheet into PCP archive logs pcp-testsuite - Performance Co-Pilot (PCP) Test Suite python-pcp - Performance Co-Pilot Python PMAPI module Changes: pcp (3.8.12) unstable; urgency=low . * New release (full details in CHANGELOG). Checksums-Sha1: ad6612efb5954a03b8af3fdcfc36af8e7e89b67e 2334 pcp_3.8.12.dsc c44461b1b5cb563ad5abd57c573e73169f50ad59 7256006 pcp_3.8.12.tar.gz 3d77c2de2605dea9573c5604578a1a9cad6bb0b6 1178044 pcp_3.8.12_i386.deb 465b282bc7c142d80525dc7866093e768ab65583 372686 libpcp3-dev_3.8.12_i386.deb 8e9e366d52e3e92b285bcf82d211913bdee23c01 176624 libpcp3_3.8.12_i386.deb 3e81aa4d94661de81cd782c2954fa1574eb954c9 15490 libpcp-gui2-dev_3.8.12_i386.deb 3ccb8adf2b12a225b2fdfc671e6b1d52d285bfe3 14242 libpcp-gui2_3.8.12_i386.deb c760cd2327df9e99834d99b9160adbc03607b286 18080 libpcp-mmv1-dev_3.8.12_i386.deb bcc442571640e000d9b4f6f86d3cbaec2ab426ac 11344 libpcp-mmv1_3.8.12_i386.deb f6957b658b8fe5a59558199bcf5620a882f2f395 91492 libpcp-pmda3-dev_3.8.12_i386.deb 330b0f4ff90698b486fbd7fe9b1c666ff7ef5676 34176 libpcp-pmda3_3.8.12_i386.deb 5c05041b78b022dff08f45aa20f3a7aa37d94046 25716 libpcp-trace2-dev_3.8.12_i386.deb c9dc6d17b136f4133e05d2c78ec933dca873c4a7 18150 libpcp-trace2_3.8.12_i386.deb b40a55a43252861b66586d487a3084bc39aa7815 15186 libpcp-import1-dev_3.8.12_i386.deb 5e98cd057d43601bedcb0a684114e0be86e8bd78 14644 libpcp-import1_3.8.12_i386.deb eae64f2c2601a0901aebbb8bb7ce6787408c6c45 39626 python-pcp_3.8.12_i386.deb bfafe2b1136007ea6eeaaa9ef083661369e8a386 30556 libpcp-pmda-perl_3.8.12_i386.deb 2239d18546da600cd3c57eeac24d67e0c5b38146 15818 libpcp-import-perl_3.8.12_i386.deb 680d147407d255449fa8499f8391b4df61364126 10752 libpcp-logsummary-perl_3.8.12_i386.deb 192e1a7cbf5a0ca8573c2ec577cf223c86cc9e16 17104 libpcp-mmv-perl_3.8.12_i386.deb b6b1478ba910aeb74581431b290551d66e48dd04 16076 pcp-import-sar2pcp_3.8.12_all.deb 733e7edf9dd08ef902927bfd8378e2f9b27ce94c 9928 pcp-import-mrtg2pcp_3.8.12_all.deb 7fc4e472e29224f6da41cd6aa1e8b229ea80bfca 18934 pcp-import-sheet2pcp_3.8.12_all.deb 1e3f3314376bf415e49347e7f891834e44fd9882 17592 pcp-import-iostat2pcp_3.8.12_all.deb 9e9cebcfc6034a74577603519e03355b0e2c8d02 22684 pcp-import-collectl2pcp_3.8.12_i386.deb 2351e462dccb08e5604b07e317c358a146e67789 2138416 pcp-testsuite_3.8.12_i386.deb Checksums-Sha256: 138752eeb5ac51ca0116d789f2858f53ba5b788608e6237f87663cbf02a27477 2334 pcp_3.8.12.dsc 81f93875c7ea266bfc1ce1a1375e0deb4674782267cf4a7e97c4a9bf72f4cdf9 7256006 pcp_3.8.12.tar.gz 20a70f7a4efcf0323683f2b1d8eba8943980a61a326bc41e1110751da33f96ae 1178044 pcp_3.8.12_i386.deb ffc4a8b1c8c75e21e6c20e2772b81d20c9a7d0a8172a06b86b3ecb5770bf3fe9 372686 libpcp3-dev_3.8.12_i386.deb 6f8cac7aea69a9602cd8b8e1d294d2fa668da243388b4686780fc415cb7d1725 176624 libpcp3_3.8.12_i386.deb 6b5b3b2598d99df3a9529d0e9394983865f909cc56219920a2a774534f328179 15490 libpcp-gui2-dev_3.8.12_i386.deb 1813ca080784aad1f3c0084dd853b613a74b4e88dcd780a51d6620357df55b3f 14242 libpcp-gui2_3.8.12_i386.deb ffcea68d2863baa26fd63e61af143169f6a83d3ba9f4c720a2775e7dfea5a5ee 18080 libpcp-mmv1-dev_3.8.12_i386.deb 08d860291affdbe4c25da157cc91062bffcaa4df78dfefb954349beb661b1f39 11344 libpcp-mmv1_3.8.12_i386.deb bda1a94f4990e979b78cdd780989d78c076b942ea40b72b73b24207e4338985f 91492 libpcp-pmda3-dev_3.8.12_i386.deb b86c55c0de6eb0d93479896b90704928a31161814570af4f2fc69f652969b6c1 34176 libpcp-pmda3_3.8.12_i386.deb 44bcdd621287a23bd337bba775a3a140f1162df21a7bc36456939dbc5bf3a372 25716 libpcp-trace2-dev_3.8.12_i386.deb 5b9bae16c0db585a719add6ee833d87af72f753aa3be556c00e73dea7275655f 18150 libpcp-trace2_3.8.12_i386.deb 66840c8fee9ece69ec9a9075002a5afe23d46f662aca2edd0ff17c927b722fe5 15186 libpcp-import1-dev_3.8.12_i386.deb c7a1b82216fc0c281d42eb0a88ba56689655d49aeb83c0b9de59fa9cdef3bdb1 14644 libpcp-import1_3.8.12_i386.deb 6ac494fb6347c67377520c820c5d57200a24b5034873247f02f675a615f56b98 39626 python-pcp_3.8.12_i386.deb 1c2d1e9a45c1014b30882e443922bd48709c2450869340fa9c10fea2c1a83e7c 30556 libpcp-pmda-perl_3.8.12_i386.deb 7faf8b66b4bdadccea2a1e6c2ee2df35e7644938fc8e26485c53055af0944526 15818 libpcp-import-perl_3.8.12_i386.deb 52ec9d3569adebe17e699df08857cc6efd6df7890609bf05e12eee46641a8f25 10752 libpcp-logsummary-perl_3.8.12_i386.deb bbc68efd8812dc99b83cf9ac4eaa3dc2bf36f86cb68caf51b0fedfaa1bffb959 17104 libpcp-mmv-perl_3.8.12_i386.deb ae94517106c270bf9a02797215ea24fc99dce8ae5710e507b083a321c16249b1 16076 pcp-import-sar2pcp_3.8.12_all.deb fc384be0e4e8a8bb46b8c626335212190acdca3142a2ef2007ab2171bf8a1685 9928 pcp-import-mrtg2pcp_3.8.12_all.deb 740d412e503600342c0bdebb9b220bea11d3becfee1e77ecd582bbf57447bbec 18934 pcp-import-sheet2pcp_3.8.12_all.deb 119d044e507098b69f711b00137d5b2d4841ad268a2b26c126ba84a5fbb6bad5 17592 pcp-import-iostat2pcp_3.8.12_all.deb 26d8886b3974a9fe4dfa592d92175902523d31a793e33c2c0d9d1fad24973c46 22684 pcp-import-collectl2pcp_3.8.12_i386.deb f51628178156daf5a7156078ff3709f461e69b7664d1efe0f5761de54997f582 2138416 pcp-testsuite_3.8.12_i386.deb Files: 5e19165c8112259c8a85b52cf59c0611 2334 utils extra pcp_3.8.12.dsc b71018d3707b003821395e4bc4e73156 7256006 utils extra pcp_3.8.12.tar.gz 66900494802bec4a61f2c0a6ae346761 1178044 utils extra pcp_3.8.12_i386.deb 045d8ebcf9d8608150edabb9b4ed20b4 372686 libdevel extra libpcp3-dev_3.8.12_i386.deb a4c5fd89a6da7f6475d7102a5d665286 176624 libs extra libpcp3_3.8.12_i386.deb 49108c07bd3d16213988a4f7a969e59d 15490 libdevel extra libpcp-gui2-dev_3.8.12_i386.deb a4406e896fe89622915c4bfdcb0cf48c 14242 libs extra libpcp-gui2_3.8.12_i386.deb 83932960df632f3a1c8ac6d5298ebb1c 18080 libdevel extra libpcp-mmv1-dev_3.8.12_i386.deb 53ff029c7d4d2e70df9ec96031063465 11344 libs extra libpcp-mmv1_3.8.12_i386.deb 34bb05ad2dc9df267b0710798cec6d62 91492 libdevel extra libpcp-pmda3-dev_3.8.12_i386.deb 1cbe0e33e3b514c6238105948239fe1e 34176 libs extra libpcp-pmda3_3.8.12_i386.deb 3a518455594f371d975bbc75cd4276f9 25716 libdevel extra libpcp-trace2-dev_3.8.12_i386.deb 08c7571d4283f4a96889f93522cd39bc 18150 libs extra libpcp-trace2_3.8.12_i386.deb f1baa15858f88166c0fa28c0d722bd5c 15186 libdevel extra libpcp-import1-dev_3.8.12_i386.deb 8741ebd916c3bbe314a61be2a60a7bb0 14644 libs extra libpcp-import1_3.8.12_i386.deb 2b98d4842414b34490ccbdc2bcb9b9d5 39626 python extra python-pcp_3.8.12_i386.deb 0faf75cc078f38fef8120c4106a3fd75 30556 perl extra libpcp-pmda-perl_3.8.12_i386.deb 4c02893c06353c354ec50a97e40f9c37 15818 perl extra libpcp-import-perl_3.8.12_i386.deb c5cdb76ce8fc805cc83034c0e0b4187a 10752 perl extra libpcp-logsummary-perl_3.8.12_i386.deb 2081e17d3079174628d19e41220868a4 17104 perl extra libpcp-mmv-perl_3.8.12_i386.deb c5a8cf78e1cfe9e71ffcf6f788ee36f1 16076 utils extra pcp-import-sar2pcp_3.8.12_all.deb 242a0933ae0b625474bef5e58ebec4bf 9928 utils extra pcp-import-mrtg2pcp_3.8.12_all.deb 89cdb86afd5909d44de0e5cba4a47f50 18934 utils extra pcp-import-sheet2pcp_3.8.12_all.deb 07de4a91f4361004ce8eb1cfde7e4a48 17592 utils extra pcp-import-iostat2pcp_3.8.12_all.deb 24ea4919718a6abcfd2ed844b3e7efff 22684 utils extra pcp-import-collectl2pcp_3.8.12_i386.deb cf3a80d45c41eb3a2645d3a6c51164af 2138416 utils extra pcp-testsuite_3.8.12_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlLod/0ACgkQm8fl3HSIa2OD8gCeL20jt2fKHQ7UsJKVhWqAD6DF ++UAnii0xkciV4aNLBlShztz16ApcfQ0 =pjgO -----END PGP SIGNATURE----- Thank you for your contribution to Debian. From fche@redhat.com Wed Jan 29 10:32:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 463E97F86 for ; Wed, 29 Jan 2014 10:32:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C4ED0AC004 for ; Wed, 29 Jan 2014 08:32:44 -0800 (PST) X-ASG-Debug-ID: 1391013160-04cb6c750a1d1810001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 7FF5bzwfdnM5E9kc for ; Wed, 29 Jan 2014 08:32:40 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0TGWbA9015648 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 29 Jan 2014 11:32:39 -0500 Received: from fche.csb (vpn-233-82.phx2.redhat.com [10.3.233.82]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0TGDmsR021888; Wed, 29 Jan 2014 11:13:49 -0500 Received: by fche.csb (Postfix, from userid 2569) id 51A915814E; Wed, 29 Jan 2014 11:13:48 -0500 (EST) To: Nathan Scott Cc: pcp developers Subject: Re: Multi-lib support problem & possible fix References: <1288830274.15173866.1390972567394.JavaMail.root@redhat.com> <2079478185.15183762.1390974204857.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: Multi-lib support problem & possible fix From: fche@redhat.com (Frank Ch. Eigler) Date: Wed, 29 Jan 2014 11:13:48 -0500 In-Reply-To: <2079478185.15183762.1390974204857.JavaMail.root@redhat.com> (Nathan Scott's message of "Wed, 29 Jan 2014 00:43:24 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391013160 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Nathan Scott writes: > [...] > There is a section of /etc/pcp.conf which doesn't meet this > need and that is these two lines ... > > PCP_LIB_DIR=/usr/lib64 > PCP_LIB32_DIR=/usr/lib > > I initially looked at simply removing these, since they are not used > in the source code directly. However, I later on found they are > used in builddefs/buildmacros, which might be used when a third > party is building software using pcp-libs [...] How about a change consisting of moving those two definitions from pcp.conf into builddefs, and likely builddefs/buildmacros into pcp-libs-devel? If the pcp sources we ship continue working, and our pmdas continue installing, that's good enough. We shouldn't hold back cleanups on the basis of hypothetical third party packages that could very well work with the changes. This is not like a major API/ABI break. - FChE From nscott@redhat.com Wed Jan 29 16:15:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 855637F7C for ; Wed, 29 Jan 2014 16:15:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 74EBE30407A for ; Wed, 29 Jan 2014 14:15:19 -0800 (PST) X-ASG-Debug-ID: 1391033713-04cbb00c2907c60001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 6R3wEXAPfLlzU5nF for ; Wed, 29 Jan 2014 14:15:15 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0TMFDsF020880; Wed, 29 Jan 2014 17:15:13 -0500 Date: Wed, 29 Jan 2014 17:15:12 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: pcp developers Message-ID: <850081097.15891604.1391033712900.JavaMail.root@redhat.com> In-Reply-To: References: <1288830274.15173866.1390972567394.JavaMail.root@redhat.com> <2079478185.15183762.1390974204857.JavaMail.root@redhat.com> Subject: Re: Multi-lib support problem & possible fix MIME-Version: 1.0 X-ASG-Orig-Subj: Re: Multi-lib support problem & possible fix Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: Multi-lib support problem & possible fix Thread-Index: yd8VN5JGvKcWj3g3t4SYX8isPIH6sQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391033714 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144619 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Nathan Scott writes: > > > [...] > > There is a section of /etc/pcp.conf which doesn't meet this > > need and that is these two lines ... > > > > PCP_LIB_DIR=/usr/lib64 > > PCP_LIB32_DIR=/usr/lib > > > > I initially looked at simply removing these, since they are not used > > in the source code directly. However, I later on found they are > > used in builddefs/buildmacros, which might be used when a third > > party is building software using pcp-libs [...] > > How about a change consisting of moving those two definitions from > pcp.conf into builddefs, and likely builddefs/buildmacros into > pcp-libs-devel? > > If the pcp sources we ship continue working, and our pmdas continue > installing, that's good enough. No, thats not good enough IMO - we need to take steps to prevent breakage to out of tree PMDAs too. There are very valid reasons for being out-of-tree - like proprietary h/ware monitoring libs, etc - and we actively support this as a fine model for people to use (SGI use this a fair bit for hardware, Aconex use it for the PMDAs they have for custom in-house software, and I'm sure lots of other people have done the same over the years). > We shouldn't hold back cleanups on > the basis of hypothetical third party packages that could very well > work with the changes. This is not like a major API/ABI break. As discussed earlier, I'll revisit this and try to convince myself once more that this simpler path is indeed fine. But, just moving things to builddefs doesn't fix the problem (I thought it did, but you're right - we'd have to move those to -devel as well, else the problem just moves between files in -libs. Ugh). So, hmm, I misunderstood and its not as simple a solution as taking 'em out of pcp.conf. And, I'm not liking the alternative a whole lot on further reflection - as we discussed yesterday, those build files are part of the PMDA Install runtime for some PMDAs. I also overlooked the *link-only* requirements some PMDAs have had in the past (database PMDAs were the classic case) - which means that a full -devel install is not required to still make use of builddefs and a PMDA makefile after all (as we thought yesterday). -devel is a heavy-weight install too, so not a package I'd want as part of every server install - we should not force that onto folks. Ah, life's never easy once you scratch the surface. :) cheers. -- Nathan From nscott@redhat.com Wed Jan 29 17:10:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 30C467F7C for ; Wed, 29 Jan 2014 17:10:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2264E30407A for ; Wed, 29 Jan 2014 15:10:07 -0800 (PST) X-ASG-Debug-ID: 1391037005-04cbb00c2a0a260001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id dIwAp0CQIIHOoBve for ; Wed, 29 Jan 2014 15:10:05 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0TNA5dC030517; Wed, 29 Jan 2014 18:10:05 -0500 Date: Wed, 29 Jan 2014 18:10:05 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: pcp developers Message-ID: <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> In-Reply-To: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> Subject: pmmgr pmlogger default behaviour MIME-Version: 1.0 X-ASG-Orig-Subj: pmmgr pmlogger default behaviour Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmmgr pmlogger default behaviour Thread-Index: p6mURYs0lMGoGUVRQ259iAKPsNBcCg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391037005 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, BSF_SC5_SA210e, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144621 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.00 BSF_SC5_SA210e Custom Rule SA210e 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Frank, Wanted to open to wider discussion this default behaviour of pmmgr when managing the system pmlogger archives, as is touched on here: http://oss.sgi.com/bugzilla/show_bug.cgi?id=1044 "pmmgr normally generates relatively large merged-archive-* files." AIUI, the default behaviour is to have the active pmlogger writing to "todays" archive (named archive-YYYYMMDD.nnnnnn), and a second archive for *all* preceding data (merged-archive-YYYYMMDD.nnnnnn). Data is lopped off the beginning of the merged archive and new data merged onto the end each day. So this latter is the large log, and it shifts temporally each day in terms of start/end. There are advantages & disadvantages to this. The advantage is we get a single archive (well, except for todays data) which means the tools can directly operate on more than a single days worth of data. And that is great!!! But... The disadvantages are worrisome, however, and I think these are the reason the pmlogger_daily(1) script-fu goes for the one archive per day approach. Here are a few: - there is no redundancy or protection from failure - if there is any kind of corruption, *all* data is lost (potentially some weeks) from the wun beeeg log. - as there is no log rewrite support, log merging is guaranteed to fail in real production environments, where monitored applications change over time and metric metadata changes (so the log merging process *will* fail in practice, at critical times - usually right after a monitored-software upgrade, for example). This unexpected pattern has caused data loss in the past (and hence logrewrite now exists). This is fixable, but its not there today, and who knows if/when it might appear - defaults should reflect the current state of the code. - its "unwieldy" in the field to have one massive archive, for a larger organisation (with different groups involved with operations and analysis, for example). Since the start and end points of the archive change each day, one cannot simply rsync/scp the production data to a central spot (e.g. for all their many production systems, from different data centres - as Aconex do, for example) because that would either overwrite or duplicate (or both) existing data. Nor can a support person (with e.g. no production access) simply request a days log for analysis from the operations team - it'd involve a convoluted process of pmlogextracts, and so on (because of the "rubbery" start/end times). - keeping a central repo of all performance data (so, reaped from multiple pmmgr sites, eg from different data centres) is made much more difficult because of the naming convention, and again because of the rubbery start/end times of the long-term logs. I worry that we've taken the wrong default approach in pmmgr, and wonder if we should default to the daily split once more? And if so, I again say we should look into the YYYY/MM/DD split as a new (additional, default) convention over YYYYMMDD archive naming. Now is a good time - we're just setting out on our pmmgr adventure so there's little/no installed user base to inconvenience. Longer term, if we manage to pull off some form of unified context with transparent multi-archive support, the single advantage that humungo-logs have goes away and we're left with only disadvantages AFAICT...? Thoughts? Feels like we should ponder deeply here, as we're making long-ranging decisions - it may well be that pmmgr already supports the above, alternate behaviour I'm after, but the default behaviour is super-important as 99.99% of users will go that route. It feels to me that its sub-optimal at the moment, and it should be changed. cheers. -- Nathan From nscott@redhat.com Wed Jan 29 23:26:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 598FC7F60 for ; Wed, 29 Jan 2014 23:26:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 40F188F8065 for ; Wed, 29 Jan 2014 21:26:25 -0800 (PST) X-ASG-Debug-ID: 1391059580-04cbb00c2a14de0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 4R3nG694KrrsmtaX for ; Wed, 29 Jan 2014 21:26:20 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0U5QKWD026893 for ; Thu, 30 Jan 2014 00:26:20 -0500 Date: Thu, 30 Jan 2014 00:26:20 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp developers Message-ID: <1940043642.16111965.1391059580283.JavaMail.root@redhat.com> Subject: pcp-gui updates: pmchart fixes MIME-Version: 1.0 X-ASG-Orig-Subj: pcp-gui updates: pmchart fixes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pcp-gui updates: pmchart fixes Thread-Index: vGgk0IvEsBka9uJl1xU5+gHhGpM0Bg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391059580 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144631 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp-gui.git dev books/PCP_UAG/pcp-users-and-administrators-guide.pdf |binary src/chart/chart.cpp | 12 ++- src/chart/chart.h | 5 - src/chart/chartdialog.cpp | 58 +++++++++++-------- src/chart/chartdialog.h | 20 +++--- src/chart/gadget.cpp | 9 ++ src/chart/gadget.h | 3 src/chart/pmchart.cpp | 15 +--- src/chart/tab.cpp | 2 9 files changed, 77 insertions(+), 48 deletions(-) commit 07daa37b33daffa4a0ea9637cc2abec6798cd891 Author: Nathan Scott Date: Thu Jan 30 16:20:39 2014 +1100 Fix pmchart window resizing on chart deletion and title changes commit 4ba0a487e4ef4f4c17bc25171a3a6a4c69236454 Author: Nathan Scott Date: Thu Jan 30 16:18:50 2014 +1100 Improvements to Edit Chart dialog plot deletion and re-animation There's a slightly unusual case where one can create a chart, begin plotting etc, and then go into Edit Chart, delete all of the plots, and press OK or Apply. This half-works now, but it does not fully maintain the chart state. When one goes back in and adds new plots to the now-empty chart - they never appear, the scaling doesn't work, and general badness results. This commit tackles this problem, and fixes up several places where removed() plot items were not handled correctly. Also, the "shortcut" where New Chart is allowed to add metrics that have not been transfered to the left-hand-side list, is added into Edit Chart (since interaction is wierd without it in this re-filling an empty chart case - which is alot like New Chart) This resolved Fedora bug #1059244. commit ec4166bd3f679bf3f0c73bf78c9a9b5b814c9434 Author: Nathan Scott Date: Thu Jan 30 10:47:35 2014 +1100 Fix type of local copy of users-admins pdf guide From marechat.vincent@aol.fr Thu Jan 30 06:06:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLYTO, T_FRT_CONTACT autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 252AA7F66 for ; Thu, 30 Jan 2014 06:06:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1123230406B for ; Thu, 30 Jan 2014 04:06:35 -0800 (PST) X-ASG-Debug-ID: 1391083590-04cbb00c2a1f4a0001-S8gJnT Received: from dns.fosforosqueluz.com.br (dns.fosforosqueluz.com.br [201.55.101.44]) by cuda.sgi.com with ESMTP id jGoDKWfXYBh4y3Kx for ; Thu, 30 Jan 2014 04:06:30 -0800 (PST) X-Barracuda-Envelope-From: marechat.vincent@aol.fr X-Barracuda-Apparent-Source-IP: 201.55.101.44 Received: from localhost (unknown [127.0.0.1]) by dns.fosforosqueluz.com.br (Postfix) with ESMTP id B5A33216505; Thu, 30 Jan 2014 11:33:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at fosforosqueluz.com.br Received: from dns.fosforosqueluz.com.br ([127.0.0.1]) by localhost (dns.fosforosqueluz.com.br [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wYxCXxMEGarH; Thu, 30 Jan 2014 09:33:41 -0200 (BRST) Received: from mail.fosforosqueluz.com.br (localhost [127.0.0.1]) by dns.fosforosqueluz.com.br (Postfix) with ESMTP id 3108D216476; Thu, 30 Jan 2014 09:33:33 -0200 (BRST) Received: from 193.28.228.87 (SquirrelMail authenticated user valsir@fosforosqueluz.com.br) by mail.fosforosqueluz.com.br with HTTP; Thu, 30 Jan 2014 09:33:34 -0200 Message-ID: <12b78cba14093d024010ccaaddc6c5b8.squirrel@mail.fosforosqueluz.com.br> Date: Thu, 30 Jan 2014 09:33:34 -0200 Subject: Finanzierungsangebot =?iso-8859-1?Q?f=FCr_Ihre_Projekte/offer_of_financing_for_your_projects?= From: "MARECHAT" X-ASG-Orig-Subj: Finanzierungsangebot =?iso-8859-1?Q?f=FCr_Ihre_Projekte/offer_of_financing_for_your_projects?= Reply-To: marechat.vincent@att.net User-Agent: SquirrelMail/1.4.19 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: dns.fosforosqueluz.com.br[201.55.101.44] X-Barracuda-Start-Time: 1391083590 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144640 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hallo Sie sind auf der Suche nach Finanzierung, um Ihre Aktivitäten, die Durchführung eines Projekts oder aus anderen Gründen wieder zu beleben. Ich gewährt Darlehen von 2000 € bis hin zu €4.000.000 mit einer Rate von 2 %. Kontaktieren Sie für weitere Informationen mich bitte: marechat.vincent@att.net Herzliche Grüße ----------------------------------------------------- Hello. You are looking for funding to revive your activities, the implementation of a project or for other reasons. I provides loans ranging from €2000 to €4,000,000 at a rate of 2%. For more information, please contact me: marechat.vincent@att.net Kind regards From fche@redhat.com Thu Jan 30 12:11:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 499D97F5A for ; Thu, 30 Jan 2014 12:11:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C9E18AC001 for ; Thu, 30 Jan 2014 10:11:40 -0800 (PST) X-ASG-Debug-ID: 1391105496-04cb6c6de32f070001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id AQ7jAvGyvIFejEd1 for ; Thu, 30 Jan 2014 10:11:36 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0UIBZIu023096 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 30 Jan 2014 13:11:36 -0500 Received: from fche.csb (vpn-233-123.phx2.redhat.com [10.3.233.123]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0UIBZlw008166; Thu, 30 Jan 2014 13:11:35 -0500 Received: by fche.csb (Postfix, from userid 2569) id B078A58496; Thu, 30 Jan 2014 13:11:34 -0500 (EST) Date: Thu, 30 Jan 2014 13:11:34 -0500 From: "Frank Ch. Eigler" To: Nathan Scott Cc: pcp developers Subject: Re: pmmgr pmlogger default behaviour Message-ID: <20140130181134.GA7584@redhat.com> X-ASG-Orig-Subj: Re: pmmgr pmlogger default behaviour References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391105496 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - > AIUI, the default behaviour is to have the active pmlogger writing > to "todays" archive (named archive-YYYYMMDD.nnnnnn), and a second > archive for *all* preceding data (merged-archive-YYYYMMDD.nnnnnn). > Data is lopped off the beginning of the merged archive and new data > merged onto the end each day. So this latter is the large log, and > it shifts temporally each day in terms of start/end. To clarify, this is not a compiled-in default, but one produced by the presence of the "/etc/pcp/pmmgr/pmlogmerge" file. > [...] - there is no redundancy or protection from failure - if > there is any kind of corruption, *all* data is lost (potentially > some weeks) from the wun beeeg log. What kinds of file corruption can one expect to deal with on modern systems, that would affect these files so badly? Do we want to be in the storage-safety department just on their account? I know of no modern file processing tool that deliberately slices up its own data, just to protect it from unspecified hypothetical breakage. Plus, we may be surprised to what extent the record/framing structure of the files is robust enough to tolerate even outright overwrite/loss type damage to the interior. If this were a substantial concern, I'm sure we could improve the status quo (e.g. by searching for undamaged record frames heuristically instead of giving up at the first problem). > - as there is no log rewrite support [...] In the TODO - not a big deal, and is independent of the daily vs. merged archives issue (since even the cron-style daily archives are potentially merged from smaller sub-day slices). > [...] where monitored applications change over time and metric > metadata changes (so the log merging process *will* fail in > practice, at critical times - usually right after a > monitored-software upgrade, for example). This unexpected pattern > has caused data loss in the past (and hence logrewrite now exists). > [...] Note that if pmmgr encounters errors while merging log archives, it specifically preserves the former inputs. So the worst case *today* is the accumulation of unmergeable/broken archives, not data loss. > [...] Since the start and end points of the archive change each day, > one cannot simply rsync/scp the production data to a central spot > (e.g. for all their many production systems, from different data > centres - as Aconex do, for example) because that would either > overwrite or duplicate (or both) existing data. Given that pmmgr/pmlogmerge file names change as per the timestamp, they can't actually overwrite each other. (That naming policy also happens to block incremental updates via rsync, but that's the same with the cron-based scheme.) > Nor can a support person (with e.g. no production access) simply > request a days log for analysis from the operations team - it'd > involve a convoluted process of pmlogextracts, and so on (because of > the "rubbery" start/end times). Actually, in this a large uncut archive could be better suited than ones created by cron intervals. One can ask for arbitrary boundaries with -S/-T without having to splice things by hand (or feed pmlogextract a wildcard full of potentially relevant archives). Plus, scox's work generalizing the time-specifications to be more englishy a la getdate(), this sort of query (-S "last tuesday 5pm" -T "2 hours ago") should become even easier, again without splicing. > - keeping a central repo of all performance data (so, reaped from > multiple pmmgr sites, eg from different data centres) is made much > more difficult because of the naming convention, and again because > of the rubbery start/end times of the long-term logs. (This sounds like a duplicate of the above.) > I worry that we've taken the wrong default approach in pmmgr, and > wonder if we should default to the daily split once more? [...] As per the TODO, I plan to add a few more log-management options, and provide a generous number of knobs to parametrize them. Many alternatives make sense. The old pmlogger_daily model is one of the ones it should be able to emulate. - FChE From kenj@internode.on.net Thu Jan 30 13:52:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 69B3E7F75 for ; Thu, 30 Jan 2014 13:52:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5480A304077 for ; Thu, 30 Jan 2014 11:52:50 -0800 (PST) X-ASG-Debug-ID: 1391111564-04cbb00c2b33270001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id lVB0n6vAULDkvuPO for ; Thu, 30 Jan 2014 11:52:45 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApCbACut6lJ20ZkaPGdsb2JhbABZgwyDPoUMoxuSSQMCgQsXAwEBAQE4NYImAQEECAIwHCMNAwIGA0YZIAoUAgQBHQWHdMwvF44xAQFPB4Q4BI8phReZSCiBNQ Received: from ppp118-209-153-26.lns20.mel6.internode.on.net (HELO bozohorize) ([118.209.153.26]) by ipmail06.adl6.internode.on.net with ESMTP; 31 Jan 2014 06:22:43 +1030 From: "Ken McDonell" To: "'Nathan Scott'" , "'Frank Ch. Eigler'" Cc: "'pcp developers'" References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> In-Reply-To: <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> Subject: RE: [pcp] pmmgr pmlogger default behaviour Date: Fri, 31 Jan 2014 06:52:32 +1100 X-ASG-Orig-Subj: RE: [pcp] pmmgr pmlogger default behaviour Message-ID: <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQKxzoa+dzclHQ0B5M2jZlF3/e143pjYRkqQ Content-Language: en-au X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391111564 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.01 X-Barracuda-Spam-Status: No, SCORE=0.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, THREAD_INDEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144653 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header G'day Nathan and Frank. I've read Nathan's original mail and Frank's response, and wish to add my 2 cents worth ... I don't like the one big log model. Ignoring the corruption issue, I think the archive (especially with rsync) considerations favour only updating/creating files for today's data each day. The pmlogrewrite issue is real and needs to be elevated from the TODO to the DONE list. Also, the long-term semantic issues associated with mark records, counter wraps, system reboots, and PMDA restarts are all made worse in the one big log model. I think we need to look at the use cases for PCP archives. 1. What the hell happened today? - the classical approach works fine (although we could do a better job of helping Mary the Analyst find the archives for "today"). 2. What the hell happened on 17 Jan 2014 (and was it the same as today)? - again the classical approach works because the dates are known 3. When did the load average start going over 100? Or when in the last month did the load average go over 100? - here we want to ITERATE over a set of archives (not process a CONCATENATED archive) and we could do a much better job of providing a tool that can find and list all of the archives of interest, but the classical approach provides all the data needed in appropriate bundles. 4. Show me trends over time, capacity planning graphs, etc. - this is the place where we've historically failed and this has been on the PCP TODO list for a decade (which suggests it may not be a simple problem to solve). There are 2 key parts to addressing this need (a) concatenating the data into a single set, and (b) temporal data reduction (the daily sampling rates, typically of the order of tens of seconds, need to be extended to sampling rates of the order of tens of minutes or hours). pmlogreduce was the tool that was intended to solve (a) and (b) and the associated data semantic issues (most of which involve turning counters into rates in the archive to avoid reboots, resets, mark records, counter wraps, etc.). Unfortunately the current incarnation of pmlogreduce is neither robust nor semantically correct all the time. If there are other generic use cases, I'd like to hear about them. But with this set, I suggest that the status quo is close to the mark, and we should focus on the iteration tool for 3. and mount a serious attack on fixing pmlogreduce for 4. From fche@redhat.com Thu Jan 30 14:23:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A97A77F7B for ; Thu, 30 Jan 2014 14:23:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7890330407A for ; Thu, 30 Jan 2014 12:23:58 -0800 (PST) X-ASG-Debug-ID: 1391113434-04bdf0121e381b0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id w407ApUXA5eWzLec for ; Thu, 30 Jan 2014 12:23:54 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0UKNnW7029328 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 30 Jan 2014 15:23:49 -0500 Received: from fche.csb (vpn-233-123.phx2.redhat.com [10.3.233.123]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0UKNn8X025907; Thu, 30 Jan 2014 15:23:49 -0500 Received: by fche.csb (Postfix, from userid 2569) id B006F58496; Thu, 30 Jan 2014 15:23:48 -0500 (EST) Date: Thu, 30 Jan 2014 15:23:48 -0500 From: "Frank Ch. Eigler" To: Ken McDonell Cc: "'Nathan Scott'" , "'pcp developers'" Subject: Re: [pcp] pmmgr pmlogger default behaviour Message-ID: <20140130202348.GB7584@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmmgr pmlogger default behaviour References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391113434 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Ken - > [...] The pmlogrewrite issue is real and needs to be elevated from > the TODO to the DONE list. OK. > Also, the long-term semantic issues associated with mark records, > counter wraps, system reboots, and PMDA restarts are all made worse > in the one big log model. In what way are these semantic issues different with logs that merge a few times into a day-long one, versus logs that merge a few times a week into (say) a fortnight-long one? We already must handle wraps, reboots, restarts whenever they occur. > I think we need to look at the use cases for PCP archives. > > 1. What the hell happened today? - the classical approach works fine > 2. What the hell happened on 17 Jan 2014 (and was it the same as today)? - Could it be that because of the tradition of day-granularity merging, we've been trained to think about a day as the natural and sole data granularity? What about "last two hours" being asked at 1AM? Or "the current week"? > 3. When did the load average start going over 100? Or when in the > last month did the load average go over 100? - here we want to > ITERATE over a set of archives (not process a CONCATENATED archive) > [...] Why not? > 4. Show me trends over time [...] > There are 2 key parts to addressing this need (a) concatenating the data > into a single set, and (b) temporal data reduction [...] Doing this via alternate pmmgr configurations is in the TODO. > Unfortunately the current incarnation of pmlogreduce is neither robust nor > semantically correct all the time. We'll need to fix those problems. - FChE From fche@redhat.com Thu Jan 30 14:37:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 64D5F29E04 for ; Thu, 30 Jan 2014 14:37:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id DC80EAC003 for ; Thu, 30 Jan 2014 12:36:58 -0800 (PST) X-ASG-Debug-ID: 1391114217-04cbb00c2934600001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id eGHcVEyG33XngZD0 for ; Thu, 30 Jan 2014 12:36:57 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0UKasn6019572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 30 Jan 2014 15:36:54 -0500 Received: from fche.csb (vpn-233-123.phx2.redhat.com [10.3.233.123]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0UKar7L017142; Thu, 30 Jan 2014 15:36:54 -0500 Received: by fche.csb (Postfix, from userid 2569) id CE26358496; Thu, 30 Jan 2014 15:36:52 -0500 (EST) Date: Thu, 30 Jan 2014 15:36:52 -0500 From: "Frank Ch. Eigler" To: Ken McDonell Cc: "'Nathan Scott'" , "'pcp developers'" Subject: Re: [pcp] pmmgr pmlogger default behaviour Message-ID: <20140130203652.GC7584@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmmgr pmlogger default behaviour References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391114217 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - > [...] I think the archive (especially with rsync) considerations > favour only updating/creating files for today's data each day. [...] By the way, as we don't provide any off-machine archiving facilities such as rsync, the default for archive collection need not be a perfect match for that scenario. We don't need to especially cater to such elaborate configurations *in our defaults*. For those sites that wish to move archives and use pmmgr, they just need to # rm /etc/pcp/pmmgr/pmlogmerge to disable the limited automation there now, and get individual files that they may move / aggregate / etc. how they wish. So it's not a big hurdle. - FChE From nscott@redhat.com Thu Jan 30 16:08:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6D4967F53 for ; Thu, 30 Jan 2014 16:08:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4E7858F8039 for ; Thu, 30 Jan 2014 14:08:44 -0800 (PST) X-ASG-Debug-ID: 1391119719-04cbb00c2936cf0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 1IUHDX1EBeF4ioF3 for ; Thu, 30 Jan 2014 14:08:39 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0UM8dGi002226; Thu, 30 Jan 2014 17:08:39 -0500 Date: Thu, 30 Jan 2014 17:08:39 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: pcp developers Message-ID: <1178788786.16735370.1391119719356.JavaMail.root@redhat.com> In-Reply-To: <20140130181134.GA7584@redhat.com> References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> <20140130181134.GA7584@redhat.com> Subject: Re: pmmgr pmlogger default behaviour MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pmmgr pmlogger default behaviour Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmmgr pmlogger default behaviour Thread-Index: JQiryrHIYx2iDz33P06YPgmd4PSBnA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1391119719 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > > [...] - there is no redundancy or protection from failure - if > > there is any kind of corruption, *all* data is lost (potentially > > some weeks) from the wun beeeg log. > > What kinds of file corruption can one expect to deal with on modern > systems, that would affect these files so badly? Do we want to be in > the storage-safety department just on their account? Oh all manner of corruption - and using a wide umbrella there for "corruption", covering accidentally overwriting the start of a file (which, bizarrely, happens more than I'd expect); fat-fingers on sysadmins - accidental file removal; system crash with no data flush - tail of the file corruption, etc, etc. The last one is the most common, I think. All of these things I have seen happen, and alot more often than we'd expect / like. > [...] I know of no > modern file processing tool that deliberately slices up its own data, > just to protect it from unspecified hypothetical breakage. For example all modern filesystems do this sort of thing - putting multiple copies of critical data structures all over the place, and going to great lengths to keep them at arms length from each other for recovery purposes ("block groups" in extN, "allocation groups" in XFS, same ideas). All old filesystems too, probably, databases as well - its just sensible. For the PCP archive format, we don't have critical structures spread throughout the file, we get our protection by splitting data over multiple independent logs, each with their own headers and so on - finding a good balance between data isolation and usability. re "unspecified" - fair enough, I was less verbose than I should've been there - but we are absolutely not talking "hypothetical" here. I've seen this on a number of occasions, pmloglabel(1) exists due to one such incident (and its been used in anger on more than one occassion!), pmlogcheck(1) exists for similar reasons. > Plus, we may be surprised to what extent the record/framing structure > of the files is robust enough to tolerate even outright overwrite/loss > type damage to the interior. If this were a substantial concern, I'm There's no surprises here - its well known what happens, we've been at this game for twenty years now :) [ Heh, came across pmlogger.c copyright annotations in recent work there - (C) SGI 1995! ] > sure we could improve the status quo (e.g. by searching for undamaged > record frames heuristically instead of giving up at the first problem). There is a huge difference between losing one days worth of data vs two weeks+. The + is because current pmmgr scheme loses more and more data as the collection period is increased, whereas thats not the case for pmlogger_daily. That said, we could do more, you're right - perhaps the temporal index could also be used to find starting records. Maybe add CRCs. Lots of things we could do - but I'm talking about the default that we ship right now, and to my mind the current default configuration for pmmgr increases the risk of data loss. Something else that just occurred to me is that the pmmgr model of changing *every single archive* involved, *every single day* further increases the loss risk. Compare it to the other model, where the daily logs remain *unchanged* forever after that first day - so, there's zero potential for the partial-write style of corruption after a crash there. > > I worry that we've taken the wrong default approach in pmmgr, and > > wonder if we should default to the daily split once more? [...] > > As per the TODO, I plan to add a few more log-management options, and > provide a generous number of knobs to parametrize them. Many > alternatives make sense. The old pmlogger_daily model is one of the > ones it should be able to emulate. Absolutely, and it should be the default behaviour too. Wun beeg log should be opt-in IMO. cheers. -- Nathan From nscott@redhat.com Thu Jan 30 16:10:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A43AE7F53 for ; Thu, 30 Jan 2014 16:10:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1572BAC003 for ; Thu, 30 Jan 2014 14:10:17 -0800 (PST) X-ASG-Debug-ID: 1391119815-04cb6c6de137fc0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id iLi5FWaLQ1Lv8lWk for ; Thu, 30 Jan 2014 14:10:15 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0UMA8Ps012367; Thu, 30 Jan 2014 17:10:08 -0500 Date: Thu, 30 Jan 2014 17:10:08 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: Ken McDonell , pcp developers Message-ID: <1735735600.16735954.1391119808607.JavaMail.root@redhat.com> In-Reply-To: <20140130203652.GC7584@redhat.com> References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> <20140130203652.GC7584@redhat.com> Subject: Re: [pcp] pmmgr pmlogger default behaviour MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmmgr pmlogger default behaviour Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmmgr pmlogger default behaviour Thread-Index: pZJuWMTWHQp4PZ91oX5rBvr3qywcsA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391119815 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Hi - > > > [...] I think the archive (especially with rsync) considerations > > favour only updating/creating files for today's data each day. [...] > > By the way, as we don't provide any off-machine archiving facilities > such as rsync, the default for archive collection need not be a Hmm, not sure what you mean there? - rsync works fine, and people use it for off-machine archiving all the time. Its not something we need or should be providing, it just works. And it works as a result of us not continually changing the historical archives. > perfect match for that scenario. We don't need to especially cater to > such elaborate configurations *in our defaults*. "elaborate" is not a word I'd have chosen here - and "our defaults" need to cater for as many people as possible, with a focus on the needs of production systems. People need some kind of strategy for storing data long-term - we don't tackle this side of things, because it needs local knowledge (i.e. a system with very large amounts of storage and associated issues - its often going to be part of some backup or off-line access strategy for other data that people have). In deployments I've been involved in, its not ever been done on the production monitored machine(s) - where PCP is running/logging - cos the storage requirements are not fixed (as they are for pmmgr and pmlogger_daily - compressing/culling after a certain time, sampling at fixed rates, and so on). rsync works really well - I know of a number of production systems using this model for long-term storage. Our default mechanism has to work well with that class of use. cheers. -- Nathan From nscott@redhat.com Thu Jan 30 16:33:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AF4B57F3F for ; Thu, 30 Jan 2014 16:33:55 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 98AE68F804B for ; Thu, 30 Jan 2014 14:33:55 -0800 (PST) X-ASG-Debug-ID: 1391121233-04cbb00c2b37580001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id BNmCSK58bDypAuIu for ; Thu, 30 Jan 2014 14:33:54 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0UMXoNQ017495; Thu, 30 Jan 2014 17:33:50 -0500 Date: Thu, 30 Jan 2014 17:33:50 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell , "Frank Ch. Eigler" Cc: pcp developers Message-ID: <1898584881.16748707.1391121230610.JavaMail.root@redhat.com> In-Reply-To: <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> References: <2108905700.15892281.1391033827018.JavaMail.root@redhat.com> <1583484726.15908616.1391037005341.JavaMail.root@redhat.com> <06a301cf1df4$d18984b0$749c8e10$@internode.on.net> Subject: Re: [pcp] pmmgr pmlogger default behaviour MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmmgr pmlogger default behaviour Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: pmmgr pmlogger default behaviour Thread-Index: AQKxzoa+dzclHQ0B5M2jZlF3/e143pjYRkqQFH+EpeE= X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391121234 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144660 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > G'day Nathan and Frank. > > I've read Nathan's original mail and Frank's response, and wish to add my 2 > cents worth ... > > I don't like the one big log model. Ignoring the corruption issue, I think (noo, don't ignore it ... its super important! ;) > [...] > 3. When did the load average start going over 100? Or when in the last > month did the load average go over 100? - here we want to ITERATE over a set > of archives (not process a CONCATENATED archive) and we could do a much > better job of providing a tool that can find and list all of the archives of > interest, but the classical approach provides all the data needed in > appropriate bundles. I question this iterate-over-several vs serial-smash-through-one angle, like Frank - I think it depends on the size of the data set as to which is most optimal. For a small dataset, serial-smash-through of a single (possibly concat) works best for me - but as one moves to data sizes in the order of many gigabytes, iteration (possibly involving archives on multiple hosts) caters better for parallelism. In turn that makes some types of analysis feasible that aren't otherwise. As one looks to scale up PCP archives to huge data sets, to me the best approach is small equal sized "tiles" of data (of, say, one days worth) that lend themselves to distribution across hosts (of different sizes, wrt storage, memory, cpu) each working on a subset of the data. cheers. -- Nathan From phillipkross@europe.com Thu Jan 30 16:51:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLYTO, LOTS_OF_MONEY,MONEY_FROM_41,T_FRT_CONTACT autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2BD497F8A for ; Thu, 30 Jan 2014 16:51:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B265CAC001 for ; Thu, 30 Jan 2014 14:51:39 -0800 (PST) X-ASG-Debug-ID: 1391122296-04bdf0121e3c4a0001-S8gJnT Received: from mailcleaner.wika.co.id (mailcleaner.wika.co.id [202.159.16.230]) by cuda.sgi.com with ESMTP id KDSM5ovvGsxPg91G; Thu, 30 Jan 2014 14:51:37 -0800 (PST) X-Barracuda-Envelope-From: phillipkross@europe.com X-Barracuda-Apparent-Source-IP: 202.159.16.230 X-IronPort-AV: E=Sophos;i="4.95,752,1384275600"; d="scan'208";a="4205754" Received: from unknown (HELO mail.wika.co.id) ([192.168.75.244]) by mailcleaner.wika.co.id with ESMTP; 31 Jan 2014 05:51:35 +0700 Received: from localhost (mail.wika.co.id [127.0.0.1]) by mail.wika.co.id (Postfix) with ESMTP id 0C93F8A004F; Fri, 31 Jan 2014 05:50:43 +0700 (WIT) X-Virus-Scanned: amavisd-new at wika.co.id Received: from mail.wika.co.id ([127.0.0.1]) by localhost (mail.wika.co.id [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jfXhYUxm1+u4; Fri, 31 Jan 2014 05:50:42 +0700 (WIT) Received: from [192.168.0.2] (unknown [41.203.67.140]) by mail.wika.co.id (Postfix) with ESMTPSA id EC4FF8AC018; Fri, 31 Jan 2014 05:49:42 +0700 (WIT) Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: Kreditsuchenden - sich keine weiteren To: Recipients X-ASG-Orig-Subj: Kreditsuchenden - sich keine weiteren From: phillipkross@europe.com Date: Thu, 30 Jan 2014 23:49:45 +0100 Reply-To: ocean-finance-manager@financier.com Message-Id: <20140130224943.EC4FF8AC018@mail.wika.co.id> X-Barracuda-Connect: mailcleaner.wika.co.id[202.159.16.230] X-Barracuda-Start-Time: 1391122297 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.60 X-Barracuda-Spam-Status: No, SCORE=1.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA609_NRN, BSF_SC0_SA_TO_FROM_ADDR_MATCH, FUZZY_CREDIT, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144661 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.00 FUZZY_CREDIT BODY: Attempt to obfuscate words in spam 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address 1.10 BSF_SC0_SA609_NRN Custom Rule SA609_NRN Hallo Loan Seeker, = Willkommen Ocean Finance Loan Company, hier bieten wir Kredite an Privatper= sonen und Unternehmen. At Ocean Finance bieten wir Kreditbetrag von $ 100.0= 00 auf 10 Milliarden Dollar. Unsere Preise sind gut, und wenn Sie eine sich= ere und bessere Darlehensr=FCckzahlungspolitik zu sichern, bitte nicht mehr= suchen, weil Sie in der richtigen Stelle zu suchen. = Bitte kontaktieren Ozean Darlehen Manager Finanzen, Herr Dave Lamas auf oce= an-finance-manager@financier.com zu mehr Information =FCber Anforderungen u= nd Schritte, die zu den Ozean Finanzierungsgesellschaft erm=F6glichen, Sie = machen die H=F6he des Darlehens, die Sie suchen. = Alles Gute, wie Sie gute Nutzung Ihrer Kreditbetrag machen und sicher sein,= dass wir die beste Politik R=FCckzahlung aller in der world.Our Darlehensz= ins-Stand auf 3,6% und bieten alle Arten von Darlehen = Hinweis: Wir bieten alle Arten von Darlehen, kontaktieren Sie bitte die Fin= anzierung Darlehen Manager f=FCr weitere Informationen. = Gr=FC=DFe = Herr Phillip Kross = Generaldirektor = Ozean Finance Loan Company From nscott@redhat.com Fri Jan 31 04:54:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 71B4D7F51 for ; Fri, 31 Jan 2014 04:54:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2EF41304084 for ; Fri, 31 Jan 2014 02:54:02 -0800 (PST) X-ASG-Debug-ID: 1391165636-04bdf012204f320001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id xU8bpkzTyd2IOzJi for ; Fri, 31 Jan 2014 02:53:57 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0VAruBv007065; Fri, 31 Jan 2014 05:53:56 -0500 Date: Fri, 31 Jan 2014 05:53:56 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Stan Cox Cc: PCP Message-ID: <1841151293.16935708.1391165636716.JavaMail.root@redhat.com> In-Reply-To: <52E83DD8.5020403@redhat.com> References: <52E83DD8.5020403@redhat.com> Subject: Re: [pcp] programmer's guide python documentation MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] programmer's guide python documentation Content-Type: multipart/mixed; boundary="----=_Part_16935706_32115599.1391165636715" X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.3_GA_5664 (ZimbraWebClient - FF17 (Linux)/8.0.3_GA_5664) Thread-Topic: programmer's guide python documentation Thread-Index: ZmPfsYh/qadynOmo3UOPMKVJjEsUfQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1391165637 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144681 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ------=_Part_16935706_32115599.1391165636715 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Stan, I've had a look over the progress so far, and have lots of feedback :) (surprise!!!) Firstly, I'll point back toward 2 things Frank said to me back when he reviewed the initial (C APIs) version of this doc: there is alot of value to be had by walking through a real example program; and its not worth duplicating info in the man pages. Although, in an ironic twist neither of us foresaw, there may be some value in that now we come to do python docs (wrt python API reference, which wont be in the man pages). I've written a simple, yet still realistic & useful (I hope) example program - a python implementation of uptime(1). Attached; for your review/perusal/amusement ... somewhere in section 3.9 - "Programming Issues and Examples" would suit if you like it, after the C example perhaps. Sadly, it does not yet work - its exposing a bug in the py wrapper code for pmLocaltime(3) - also affects pmCtime(3) I think. We'll need to crack these, I think both are using double indirection where they need to use single, or are not allocating the buffer right, or something along those lines. A new QA test will be needed too - I'll keep going on fixing these problems early next week (unless the problem is clear to you - feel free to fix it before then). :) In terms of the docbook-fu so far - what you've got is looking like a dup of the C section, with much less content, and backward references to the C API docs. This is making use of the handy fact that the way the python wrapper was done, a programmer basically needs to know the way the C equivalents work (ctypes, etc). As such, it seems like we could take a simpler approach - instead of duplicating the entire 3.8 section (PMAPI Procedural Interface), and making separate C / Python versions - which is alot of docs! - I'd recommend instead documenting both together. So, where each C interface has an initial tag then the C API, add just below that (still inside that tag) the python version. Then no back referencing is needed, and no docbook index updates, and so on - which complicating your changes atm. Any Python specific notes can go right in there alongside the C notes. This makes alot of sense I think, since a Python programmer will need to grok the C API anyway in order to understand all the ctypes stuff. All the subtleties of each API call are documented in the C docs, so it'd be alot easier to read for a python programmer learning the API for the first time, I think. > pmParseInterval Function > (struct timeval, "error message") = pmParseInterval("time string") > parse a "time string" into a timeval struct. For more information see > the C function description. [ kept that there as a simple example of the points above, randomly chosen - just showing the level of verbosity -> not much value-add for the py docs IMO - so I think merging 'em in with the C APIs is going to work out OK. ] So, beyond having an example, and merging the python/C writeups, I'd like to see somewhere a paragraph or three about the python-specific issues - things like: what to import, the classes & modules, how the context class works (constructor -> pmNewContext, & destructor does pmDestroyContext, magically) - these could live in a new section in 3.7 "PMAPI Programming Style and Interaction". Already in there is a sub-section on error handling - we should discuss using exception handling there for python calls. And right in amongst the existing docs is best I think - e.g. its useful for a python programmer to know about "pmerr -l" as well. There's a later section going more into "Handling PMAPI Errors" (3.9.5) - an example in there would be great. It would be worth reading through Chapter 3 in its entirety and marking C-specific things as just that, adding in new python words throughout, and leaving all the generic/common stuff as is. Then, if you're still standing :) - retreat to Chapter 2 and repeat the exercise for the PMDA interface - we already have pmdasimple in python, so it should be easier (thats the example used there, IIRC). And if you get that all done (by end of tomorrow? hahaha), the PMI (import) API is missing entirely, both C and python variants... ;) cheers. ps: $ pylint uptime.py Your code has been rated at 10.00/10 /me does his happy dance ... if only the code actually worked!!! -- Nathan ------=_Part_16935706_32115599.1391165636715 Content-Type: text/x-python; name=uptime.py Content-Disposition: attachment; filename=uptime.py Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9weXRob24KIwojIENvcHlyaWdodCAoQykgMjAxNCBSZWQgSGF0LgojCiMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCiMgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KIyAKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKIyBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKIyBmb3IgbW9yZSBkZXRhaWxzLgojCgoiIiIgVGVsbCBob3cgbG9uZyB0aGUg c3lzdGVtIGhhcyBiZWVuIHJ1bm5pbmcKCnVwdGltZS5weSBnaXZlcyBhIG9uZSBsaW5lIGRpc3Bs YXkgb2YgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKICAgIFRoZSBjdXJyZW50IHRpbWU7CiAg ICBIb3cgbG9uZyB0aGUgc3lzdGVtIGhhcyBiZWVuIHJ1bm5pbmc7CiAgICBIb3cgbWFueSB1c2Vy cyBhcmUgY3VycmVudGx5IGxvZ2dlZCBvbjsgYW5kCiAgICBUaGUgc3lzdGVtIGxvYWQgYXZlcmFn ZXMgZm9yIHRoZSBwYXN0IDEsIDUsIGFuZCAxNSBtaW51dGVzLgoiIiIKCmZyb20gcGNwIGltcG9y dCBwbWFwaQpmcm9tIGNwbWFwaSBpbXBvcnQgUE1fVFlQRV9VMzIsIFBNX1RZUEVfRkxPQVQKCmRl ZiBwcmludF90aW1lc3RhbXAoc3RhbXApOgogICAgIiIiIFJlcG9ydCB0aGUgc2FtcGxlIHRpbWUg KHN0cnVjdCB0bSkgaW4gSEg6TU06U1MgZm9ybSAiIiIKICAgIHByaW50ICIgJTAyZDolMDJkOiUw MmQiICUgKHN0YW1wLnRtX2hvdXIsIHN0YW1wLnRtX21pbiwgc3RhbXAudG1fc2VjKSwKCmRlZiBw cmludF91cHRpbWUoc2Vjb25kcyk6CiAgICAiIiIgUmVwb3J0IG9uIHN5c3RlbSB1cC10aW1lIGlu IGRheXMsIGhvdXJzIGFuZCBtaW51dGVzICIiIgogICAgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2 MCAqIDI0KQogICAgbWludXRlcyA9IHNlY29uZHMgLyA2MAogICAgaG91cnMgPSBtaW51dGVzIC8g NjAKICAgIGhvdXJzID0gaG91cnMgJSAyNAogICAgbWludXRlcyA9IG1pbnV0ZXMgJSA2MAogICAg aWYgZGF5cyAhPSAxOgogICAgICAgIHByaW50ICJ1cCAlZCBkYXlzLCIgJSBkYXlzLAogICAgZWxp ZiBkYXlzICE9IDA6CiAgICAgICAgcHJpbnQgInVwIDEgZGF5LCIsCiAgICBpZiBob3VycyAhPSAw OgogICAgICAgIHByaW50ICclMmQ6JTAyZCwnICUgKGhvdXJzLCBtaW51dGVzKSwKICAgIGVsc2U6 CiAgICAgICAgcHJpbnQgJyVkIG1pbiwnLCBtaW51dGVzLAoKZGVmIHByaW50X3VzZXJzKG51c2Vy cyk6CiAgICAiIiIgUmVwb3J0IHRoZSBudW1iZXIgb2YgbG9nZ2VkIGluIHVzZXJzIGF0IHNhbXBs ZSB0aW1lICIiIgogICAgaWYgbnVzZXJzID09IDE6CiAgICAgICAgcHJpbnQgJzEgdXNlciwgJyAK ICAgIGVsc2U6CiAgICAgICAgcHJpbnQgJyUyZCB1c2VycywgJyAlIG51c2VycywKCmRlZiBwcmlu dF9sb2FkKG9uZSwgZml2ZSwgZmlmdGVlbik6CiAgICAiIiIgUmVwb3J0IDEsIDUsIDE1IG1pbnV0 ZSBsb2FkIGF2ZXJhZ2VzIGF0IHNhbXBsZSB0aW1lICIiIgogICAgcHJpbnQgJ2xvYWQgYXZlcmFn ZTogJS4yZiwgJS4yZiwgJS4yZicgJSAob25lLCBmaXZlLCBmaWZ0ZWVuKSwKCmRlZiB1cHRpbWUo KToKICAgICIiIiBDcmVhdGUgYSBQTUFQSSBjb250ZXh0IChjb3VsZCBiZSBlaXRoZXIgaG9zdCBv ciBhcmNoaXZlKSwKICAgICAgICBmZXRjaCBhbmQgcmVwb3J0IGEgZml4ZWQgc2V0IG9mIHZhbHVl cyByZWxhdGVkIHRvIHVwdGltZS4KICAgICIiIgogICAgY29udGV4dCA9IHBtYXBpLnBtQ29udGV4 dCgpCiAgICBtZXRyaWNzID0gKCdrZXJuZWwuYWxsLnVwdGltZScsICdrZXJuZWwuYWxsLm51c2Vy cycsICdrZXJuZWwuYWxsLmxvYWQnKQogICAgcG1pZHMgPSBjb250ZXh0LnBtTG9va3VwTmFtZSht ZXRyaWNzKQogICAgZGVzY3MgPSBjb250ZXh0LnBtTG9va3VwRGVzY3MocG1pZHMpCiAgICByZXN1 bHQgPSBjb250ZXh0LnBtRmV0Y2gocG1pZHMpCgogICAgdGltZSA9IGNvbnRleHQucG1Mb2NhbHRp bWUocmVzdWx0LmNvbnRlbnRzLnRpbWVzdGFtcC50dl9zZWMpCiAgICBwcmludF90aW1lc3RhbXAo dGltZSkKCiAgICBhdG9tID0gY29udGV4dC5wbUV4dHJhY3RWYWx1ZSgKCQlyZXN1bHQuY29udGVu dHMuZ2V0X3ZhbGZtdCgwKSwKCQlyZXN1bHQuY29udGVudHMuZ2V0X3ZsaXN0KDAsIDApLAoJCWRl c2NzWzBdLmNvbnRlbnRzLnR5cGUsIFBNX1RZUEVfVTMyKQogICAgcHJpbnRfdXB0aW1lKGF0b20u dWwpCgogICAgYXRvbSA9IGNvbnRleHQucG1FeHRyYWN0VmFsdWUoCgkJcmVzdWx0LmNvbnRlbnRz LmdldF92YWxmbXQoMSksCgkJcmVzdWx0LmNvbnRlbnRzLmdldF92bGlzdCgxLCAwKSwKCQlkZXNj c1sxXS5jb250ZW50cy50eXBlLCBQTV9UWVBFX1UzMikKICAgIHByaW50X3VzZXJzKGF0b20udWwp CgogICAgYXZlcmFnZXMgPSBbMSwgNSwgMTVdCiAgICBmb3IgaW5zdGFuY2UgaW4geHJhbmdlKDMp OgogICAgICAgIGF2ZXJhZ2VzW2luc3RhbmNlXSA9IGNvbnRleHQucG1FeHRyYWN0VmFsdWUoCgkJ CQlyZXN1bHQuY29udGVudHMuZ2V0X3ZhbGZtdCgyKSwKCQkJCXJlc3VsdC5jb250ZW50cy5nZXRf dmxpc3QoMiwgaW5zdGFuY2UpLAoJCQkJZGVzY3NbMl0uY29udGVudHMudHlwZSwgUE1fVFlQRV9G TE9BVCkKICAgIHByaW50X2xvYWQoYXZlcmFnZXNbMF0uZiwgYXZlcmFnZXNbMV0uZiwgYXZlcmFn ZXNbMl0uZikKCiAgICBjb250ZXh0LnBtRnJlZVJlc3VsdChyZXN1bHQpCgppZiBfX25hbWVfXyA9 PSAnX19tYWluX18nOgogICAgdXB0aW1lKCkK ------=_Part_16935706_32115599.1391165636715-- From brolley@redhat.com Fri Jan 31 09:30:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0556F7F50 for ; Fri, 31 Jan 2014 09:30:56 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 92DA5AC00B for ; Fri, 31 Jan 2014 07:30:52 -0800 (PST) X-ASG-Debug-ID: 1391182248-04bdf0121e59820001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id We7lTp4t6ZaSMgkk for ; Fri, 31 Jan 2014 07:30:48 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0VFUkVI018063 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 31 Jan 2014 10:30:47 -0500 Received: from [10.10.48.199] (vpn-48-199.rdu2.redhat.com [10.10.48.199]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s0VFUk75023943 for ; Fri, 31 Jan 2014 10:30:46 -0500 Message-ID: <52EBC1AF.3040107@redhat.com> Date: Fri, 31 Jan 2014 10:30:55 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Another Possible Fresh Install Problem Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: Another Possible Fresh Install Problem Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391182248 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Got this while running qa test 646 as part of the 'sanity' group on my new workstation. ANother possible fresh install problem? > mmv_stats_init failed : No such file or directory > mmv_stats_init failed : No such file or directory > /var/lib/pcp/tmp/mmv/test21668: No such file or directory > /var/lib/pcp/tmp/mmv/notest21668: No such file or directory Dave From fche@redhat.com Fri Jan 31 10:04:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 552087F94 for ; Fri, 31 Jan 2014 10:04:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3A083304032 for ; Fri, 31 Jan 2014 08:04:55 -0800 (PST) X-ASG-Debug-ID: 1391184294-04bdf0121f5aee0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id DmccJtSTMpkHJMX5 for ; Fri, 31 Jan 2014 08:04:54 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0VG4r1p005803 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 31 Jan 2014 11:04:54 -0500 Received: from fche.csb (vpn-233-123.phx2.redhat.com [10.3.233.123]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0VG4rH1029988; Fri, 31 Jan 2014 11:04:53 -0500 Received: by fche.csb (Postfix, from userid 2569) id 10C9E58182; Fri, 31 Jan 2014 11:04:53 -0500 (EST) To: Nathan Scott Cc: pcp@oss.sgi.com Subject: Re: Multi-lib support problem & possible fix References: <1288830274.15173866.1390972567394.JavaMail.root@redhat.com> <2079478185.15183762.1390974204857.JavaMail.root@redhat.com> <850081097.15891604.1391033712900.JavaMail.root@redhat.com> X-ASG-Orig-Subj: Re: Multi-lib support problem & possible fix From: fche@redhat.com (Frank Ch. Eigler) Date: Fri, 31 Jan 2014 11:04:52 -0500 In-Reply-To: <850081097.15891604.1391033712900.JavaMail.root@redhat.com> (Nathan Scott's message of "Wed, 29 Jan 2014 17:15:12 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391184294 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Nathan - >> If the pcp sources we ship continue working, and our pmdas continue >> installing, that's good enough. > > No, thats not good enough IMO - we need to take steps to prevent > breakage to out of tree PMDAs too. There are very valid reasons > for being out-of-tree - like proprietary h/ware monitoring libs, > etc [...] Out-of-tree developers need to stay involved in the community, so we can know what their actual needs are, what the actual impact of changes would be. If we don't have access to code to test, or other information, and no consultation, we can't allow ourselves to stop. > [...] those build files are part of the PMDA Install runtime for > some PMDAs. Identical files are permitted to be included in more than one RPM. So if some of these build-configuration files are required to just install a PMDA (btw does it have to be that way?), we could also include those build-configuration files in the per-arch package that contains the PMDAs. Those are not -libs nor -libs-devel, so we don't have to worry about multi-lib issues. > I also overlooked the *link-only* requirements some PMDAs have had > in the past (database PMDAs were the classic case) - which means > that a full -devel install is not required to still make use of > builddefs and a PMDA makefile after all (as we thought yesterday). > -devel is a heavy-weight install too, so not a package I'd want as > part of every server install - we should not force that onto folks. For code that requires linking *or* full compilation, -devel requirements are traditional and appropriate. Folks stuck with such PMDAs, who cannot accept the 700 kilobytes of pcp-libs-devel but do accept 22 megabytes for binutils, could perhaps compile on one machine and ship linked binaries around. - FChE From wwwrun@oss.sgi.com Fri Jan 31 15:06:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 97FD57FA9; Fri, 31 Jan 2014 15:06:08 -0600 (CST) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1046] pmlogger heavy duplication in .meta output Date: Fri, 31 Jan 2014 21:06:06 +0000 X-Bugzilla-Reason: CC AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: fche@redhat.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: pcp@oss.sgi.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1391202368.7C85e1.6325"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1391202368.7C85e1.6325 Date: Fri, 31 Jan 2014 15:06:08 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1046 --- Comment #2 from Frank Ch. Eigler --- >From having dipped into the code, we'd need to do a couple of things: - change the definition of .meta indom records to mean updates rather than replacement - change lipcp/src/logmeta.c addindom and/or searchindom to merge rather than replace new instlist/namelist entries - change pmlogger/src/callback.c log_callback to handle the needindom=1 case's numval^2 search with more finesse, that is to identify missing inst#'s individually, and emit a smaller incremental __pmLogPutInDom. (We are assuming that instance strings never change. That's not quite correct: proc.* pid<->name strings should vary as processes exec(), but the linux_proc pmda happens not to track that.) The changing-the-definition part merits thought about how we envision handling smallish changes to the archive format. Must we bump archive-major-version numbers? Or can we tolerate old version tools to slightly misbehave on newer data (as opposed to refusing to process them outright)? -- You are receiving this mail because: You are on the CC list for the bug. You are the assignee for the bug. --1391202368.7C85e1.6325 Date: Fri, 31 Jan 2014 15:06:08 -0600 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"

Comment # 2 on bug 1046 from
From having dipped into the code, we'd need to do a couple of things:

- change the definition of .meta indom records to mean updates
  rather than replacement

- change lipcp/src/logmeta.c addindom and/or searchindom to merge
  rather than replace new instlist/namelist entries

- change pmlogger/src/callback.c log_callback to handle the needindom=1
  case's numval^2 search with more finesse, that is to identify missing
  inst#'s individually, and emit a smaller incremental __pmLogPutInDom.

(We are assuming that instance strings never change.  That's not quite
correct: proc.* pid<->name strings should vary as processes exec(),
but the linux_proc pmda happens not to track that.)

The changing-the-definition part merits thought about how we envision
handling smallish changes to the archive format.  Must we bump
archive-major-version numbers?  Or can we tolerate old version
tools to slightly misbehave on newer data (as opposed to refusing to
process them outright)?


You are receiving this mail because:
  • You are on the CC list for the bug.
  • You are the assignee for the bug.
--1391202368.7C85e1.6325--