commit cf8cdf4b71ebd6801b423807c6f70b8dcd8bce38
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 18 12:03:09 2026 +1000
build: rename root.local to local.root; fix Debian install paths
Rename the generated local context PMNS file from root.local to
local.root throughout (GNUmakefile, .gitignore, pcp-conf.install,
QA test 1742, pcpintro.1).
Also fix pcp-conf.install to use usr/lib/pcp/ rather than
usr/libexec/pcp/ for the new entries - Debian sets libexecdir=/usr/lib
so $(PCP_PMNSADM_DIR) resolves correctly in the makefiles but the
static paths in the install manifest must match.
Addresses review feedback from Kenj.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 58ebd890b437fd434643d4d195a825d4a1fdd26f
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 12:49:24 2026 +1000
build: add QA test and docs for local context DSO PMDA mechanism
QA test 1742 exercises PM_CONTEXT_LOCAL using PCP_PMCDCONF_PATH=local.conf
and PMNS_DEFAULT=root.local: verifies hinv.ncpu is fetchable, mmv wildcard
resolution works, and pmcd.* metrics are absent from the local namespace.
Document PCP_PMCDCONF_PATH and PMNS_DEFAULT usage for local context in
pcpintro(1), including the recommended pairing of local.conf + root.local.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 4d1f2d850f5b26872a0ea16b45b6b22325232b1c
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:30:41 2026 +1000
build: local context files minor formatting tweaks and fixes
Related to #2615.
commit 2aa5606b5fdec1d2910e66542b09915c958b31d1
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 20:50:17 2026 +1000
build: fix duplicate root_* PMNS file installs in pcp-conf PMDAs
PMDAs contributing root_* files to pcp-conf were installing a real
file copy to both $(PMDAADMDIR) and $(PCP_PMNSADM_DIR). Make the
$(PCP_PMNSADM_DIR) and $(PCP_PMNS_DIR) entries symlinks back to the
canonical copy in $(PMDAADMDIR) instead.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 93f9006292ce71291b93a81ebf1b1636b99f6cb7
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 18:35:58 2026 +1000
build: generate root.local PMNS for local context DSO PMDAs
During the build, generate a merged PMNS root.local containing the
combined namespace for all DSO PMDAs listed in local.conf. Uses
pmcpp.static to resolve domain macros and awk to merge the separate
root{} blocks from each PMDA's root_* file into a single namespace.
Install root.local to PCP_PMNS_DIR as part of pcp-conf, alongside
the existing per-PMDA root_* files. Clients using PM_CONTEXT_LOCAL
can select this namespace via PMNS_DEFAULT.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b776d19b5194512a72c83eba135148f35ad4b433
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 11:06:10 2026 +1000
build: move root_* namespace files to pcp-conf for local context
Arrange for the root_* namespace files to be installed via the
pcp-conf package, so that pmNewContext(PM_CONTEXT_LOCAL,...) in
PMAPI clients can use DSO PMDAs for sampling using just pcp-conf
and pcp-libs installed. The final step is to add a "root.local"
without cpp-directives (there is no pmcpp(1) binary is available
in this minimal install situation).
Related to #2615.
commit 41c71e8d09c9edccba5f7a75673a3a43305db16a
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 12 17:38:31 2026 +1000
build: introduce local.conf with dso PMDAs for local context
Arrange for the build to produce /etc/pcp/local.conf for use
with pmNewContext(PM_CONTEXT_LOCAL,...) so that PMAPI clients
can use DSO PMDAs for sampling using just pcp-libs installed,
and no pmcd installed/running if they wish.
Related to #2615.
commit 2f88a1a20e7a3dcfa60af5be50894cb4d6e8acda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 16:58:03 2026 +1000
qa/1094: capture stderr and filter, and remake
After pmlogger_daily diagnostic improvements.
Fallout from macOS work on pmlogger_daily et al.
commit 92ee2b1b68d0ba0da6827bfd892b2000bdfe048e
Merge: 29e63c95 245f3fa0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:59:18 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 245f3fa0c58976db6e8e13d847d8f53569de8ebb
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 17 14:46:39 2026 +1000
build: update gitignore for debian/ generated sysusers files
commit 19993a221edfee2532007596d7131f9cc3186708
Merge: fa574d6d ad88f2db
Author: Paul Smith <tallpsmith@gmail.com>
Date: Wed Jun 17 14:20:17 2026 +1000
Merge pull request #2626 from tallpsmith/feature/brewfile-mac-deps
build/mac: replace brew-packages.txt with a top-level Brewfile
commit ad88f2db1ff4aff7ed12f32bef2f6d2ce81dc497
Author: Paul Smith <tallpsmith@gmail.com>
Date: Thu Jun 11 09:53:01 2026 +1000
build/mac: replace brew-packages.txt with a top-level Brewfile
Simplifies macOS dep install to `brew bundle` for contributors and CI.
The Brewfile sits at the repo root so `brew bundle` works with no args;
Brewfile.lock.json is gitignored (cosmetic, not load-bearing).
- INSTALL.md, .github/workflows/macOS.yml, .cirrus.yml all updated
- Cirrus cache fingerprint now hashes the Brewfile package set
- build/mac/brew-packages.txt removed
commit 29e63c95af7f49240f751b0751145217a56eda83
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 06:46:40 2026 +1000
1425.out: remade after pmlogger_daily diagnostic improvements
Fallout from macOS work on pmlogger_daily et al.
commit 16d21906d4c3a6d1506950d10ca6aea28c28a858
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 17:34:59 2026 +1000
debian/pcp-testsuite.postinst: use getent in preference /etc/passwd
Makes a lintain error go away.
commit fa574d6dc8875962e1ec36b99448b67272c0b9e8
Merge: 9b168767 9f0982d0
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 14:45:49 2026 +1000
Merge branch 'main' of github.com:performancecopilot/pcp
commit 9b1687674e68de66cfd0b6b461a8acaa12fb07de
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 14:44:20 2026 +1000
pmdadb2: fix SQL function names and column names for Db2 12.1
Correct several bugs identified by testing against Db2 12.1 Community
Edition where the original queries produced SQL0206N or SQL0440N errors:
MON_GET_LATCH does not exist. The correct function name is
MON_GET_EXTENDED_LATCH_WAIT(member). Updated both the latch instance
domain query and the cluster 6 metric query.
TOTAL_SORT_TIME does not exist in MON_GET_DATABASE. The correct column
name is TOTAL_SECTION_SORT_TIME. Rename the metric accordingly to
db2.database.total_section_sort_time.
STMT_SORTS does not exist in MON_GET_PKG_CACHE_STMT. The correct column
name is TOTAL_SORTS.
UNREAD_PREFETCH_PAGES belongs to MON_GET_TABLESPACE, not
MON_GET_BUFFERPOOL. Move it from the bufferpool cluster (where it
produced SQL0206N) to the tablespace cluster as a new item 14, renaming
the metric to db2.tablespace.unread_prefetch_pages.
POOL_NO_VICTIM_BUFFER is unconfirmed in MON_GET_BUFFERPOOL and likely
a snapshot-era element that was never surfaced in the monitoring table
function. Remove it from the bufferpool cluster.
MON_GET_TRANSACTION_LOG takes a single member INTEGER parameter, not
two parameters. Remove the stale comment that described it as
(db_name, member) — the query was already correct at (-1).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 9f0982d0846ecf367c5c14577e6f921b1120d48d
Merge: 0186ab1f 1c372c0a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 14:18:27 2026 +1000
Merge branch 'main' of ../pcp
commit 1c372c0adb05e278edfcfe1f63daa6a76600fe0e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 14:17:32 2026 +1000
qa/GNUmakefile: package common.perl
Missed when the file was added.
commit 0186ab1f80f5d0e69306f4398b5a938ec6619f64
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 13:05:22 2026 +1000
qa: add common.perl to the makefile for builds/CI
commit 2d9cb990b40406bab8eed7531857f01a8c19336f
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:54:49 2026 +1000
pmdards: remove unused generated files checked into git
commit 9bd60ae96cd3098c430db9c9190d9d74b46ffbdc
Merge: 04d35b66 014a29c6 117b55d2
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 11:53:10 2026 +1000
Merge branches 'makepkgs-ci-mode' and 'pmdadb2'
commit c670e49563d87d2f715b6fc3a90721e13bae6457
Merge: bdf948e9 8eaa9714
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:10:46 2026 +1000
Merge branch 'units'
Conflicts:
qa/1668.out
Fixed up between units and main branches.
commit bdf948e95d9dc094f7f0f34d7ca6278e6ddc3adf
Merge: ac9c6578 04d35b66
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:02:01 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 04d35b66533950efe44c4eef94af7585b238b50f
Merge: 58eecb96 f37b2208
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 10:01:32 2026 +1000
Merge pull request #2619 from kmcdonell/mac
macOS QA and build fixups
commit 014a29c67c20b8b5e1324c05b63d6dff25ff2d9a
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 16 09:54:24 2026 +1000
Makepkgs: add --ci mode to reduce output volume while preserving error context
--verbose floods container CI platforms with enough output to trigger
internal container runtime timeouts (libpod exit-file races etc.).
Dropping --verbose silently loses the error context on build failure.
Add --ci mode as a middle ground: all output still goes to Logs/pcp in
full, but only phase headers and error/failure lines are streamed to
stdout in real time via a single _tee_log() helper. On failure,
build_failure() emits a filtered error summary and the last 100 lines
of the log, which is far more useful than the previous 10-line tail.
Switch all CI platform configs and the macOS workflow to --ci.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit ac9c657866f66d1f46e15f0b0ebe694785893c05
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 16 08:01:51 2026 +1000
debian/changelog: 30 Jul is Thu, not Wed, and lintian noticed!
commit 117b55d226a0e7abad4f21293d167bf5dded3b47
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 21:44:32 2026 +1000
pmdadb2: address second round of coderabbit review comments
Fix four valid issues identified in review:
Align latch indom query with metric query: the indom enumeration
returned all non-null latch names while the metric query filtered to
TOTAL_EXTENDED_LATCH_WAITS > 0, so instance-only requests could expose
latch names that then produced PM_ERR_VALUE on fetch. Apply the same
filter to both queries.
Fix pkg_cache metric semantics: db2.pkg_cache.total_executions and the
four other SUM(...) aggregates are snapshots over the current package
cache contents; they can decrease when statements are evicted or the
cache is flushed. Changed from PM_SEM_COUNTER to PM_SEM_INSTANT and
updated the help text accordingly.
Use ConnectTimeout in ibm_db DSN: self.timeout was parsed from the
configuration file but never applied. Include ConnectTimeout=N in the
connection string so the configured value actually limits how long the
driver waits during initial connection.
Clear cluster value caches before repopulating: db2_refresh_db_scoped
and db2_refresh_instanced appended to values dicts without clearing
first. Dropped connections accumulated indefinitely in the connection
metrics dicts, and failed refreshes left stale values. Clear each
metric's values dict at the start of every refresh.
Two further comments were assessed and not actioned:
- MON_GET_* member -1 vs -2: -1 (current member) is correct for
standard non-partitioned Db2. DPF/pureScale users would need -2.
- Lossy instance name encoding: Db2 regular identifiers cannot contain
spaces or :: so the risk is theoretical only.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit ef31da0eb80e9be4e677e8597ae0d1e151ae68f3
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 16:17:36 2026 +1000
pmdadb2: add discrete instance metrics and pmlogconf recording configs
Add cluster 9 (ENV_GET_INSTANCE_INFO) providing three PM_SEM_DISCRETE
string metrics that are logged once and carried as archive context:
db2.instance.name - Db2 instance name (INST_NAME)
db2.instance.version - full service level string (SERVICE_LEVEL)
db2.instance.platform - OS and CPU architecture (PLATFORM)
These are queried from the first available database connection since
all databases on a Db2 instance share the same version and platform.
A new db2_refresh_singleton method handles this: it iterates databases
until one responds and stops, unlike db2_refresh_db_scoped which loops
all databases and uses indom 6.
Add two pmlogconf recording configuration files installed to
/var/lib/pcp/config/pmlogconf/db2/ and included in the base pcp
package (not pcp-pmda-db2), since pmlogger may run on a host that
does not have the PMDA subpackage installed:
pmlogconf.summary - db2.instance.* discrete metrics (log-once)
pmlogconf.default - db2.database, db2.bufferpool, db2.log,
db2.pkg_cache aggregate performance metrics
The manifest pattern in pcp.spec.in and redhat.spec is left as
(etc/pcp|pmdas)/db2 so pmlogconf files are not claimed by the
pcp-pmda-db2 subpackage and fall through to the base pcp package.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b4499b6ba11351c1c90d1912683383fd533ddb14
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 15:25:28 2026 +1000
pmdadb2: address coderabbit review comments
pcp.spec.in: move %preun and %files for pcp-pmda-db2 inside the
existing %if "@have_python@" == "true" blocks that cover all other
unconditional Python PMDAs (netcheck, rabbitmq, etc).
pmdadb2.python: use RawConfigParser so that '%' characters in
passwords are not misinterpreted as configparser interpolation markers.
Pre-populate indom 6 from self.databases before querying so a transient
per-database query failure does not drop that database from the instance
domain for all db-scoped metrics. Use json.dumps() in the label
callback so special characters in database or application names do not
produce malformed JSON. Remove unused intobool() method.
pmdadb2.1: add missing DESCRIPTION subsections for db2.latch and
db2.pkg_cache metric clusters.
qa/2002: replace eval-based config parsing with per-variable awk
assignments to avoid shell injection via crafted config values.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 3c781735f043c71d95b68f913cc1f78caa8dd710
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 14:58:05 2026 +1000
pmdadb2: new Python PMDA for IBM Db2 performance metrics
Adds a PMDA for collecting performance data from IBM Db2 databases using
the ibm_db Python package and the Db2 MON_GET_* monitoring table functions.
Nine metric clusters (0-8) covering ~85 metrics across eight namespaces:
db2.database.* (27) database-wide aggregates: transactions, row counts,
sort/lock/deadlock/escalation/timeout statistics,
package cache efficiency, direct I/O, connections
db2.bufferpool.* (14) per buffer pool: logical/physical/async reads and
writes for data, index and column-organised pages,
pool I/O times, unread prefetch pages, no-victim events
db2.table.* (10) per user table: row DML counts, lock waits/escalations/
deadlocks, overflow accesses, full table scans
db2.workload.* (8) per workload: row counts, CPU time, transactions,
lock waits
db2.tablespace.* (14) per tablespace: buffer pool and async I/O for data
and index pages, direct read/write counts and times
db2.connection.* (10) per active connection: CPU time, row counts, commits,
rollbacks, lock waits, deadlocks, escalations
db2.latch.* (2) per latch type: extended wait time and count
(MON_GET_LATCH, filtered to contended latches only)
db2.log.* (10) transaction log I/O: writes, reads, physical I/O
counts, buffer-full events, current used/available KB
db2.pkg_cache.* (6) package cache summary aggregate: cached statement
count, total executions, CPU time, rows read, sorts
Seven instance domains: buffer pools, tables (schema.table), workloads,
tablespaces, connections, latches, and databases.
Multiple databases on a single Db2 instance are supported. The [databases]
section of the configuration file holds a space-separated list of database
names. One connection per database is maintained. The database name is the
instance for the db2.database.*, db2.log.* and db2.pkg_cache.* metrics; all
per-object metrics use dbname::component instance naming. A labels callback
decomposes compound instance names into separate database= and object-type=
label dimensions for use with time series queries.
All metrics and instance domains carry both one-line and long help text,
including the source MON_GET_* column name.
Configuration is at $PCP_SYSCONF_DIR/db2/db2.conf (/etc/pcp/db2/) only.
Design notes:
- ibm_db is not packaged in major Linux distributions, so the PMDA is built
unconditionally whenever Python is available (like pmdanetcheck/pmdanrabbitmq)
rather than gating on a configure-time library check. A graceful ImportError
with a useful diagnostic is emitted at runtime if ibm_db is absent, and the
Install script performs the same check before registering with pmcd.
- Each PCP cluster maps to exactly one MON_GET_* SQL call per configured
database, fetching all columns for all instances in a single round-trip.
Only clusters containing requested metrics are queried per fetch PDU.
- Reconnection after a Db2 instance restart is handled by probing with
VALUES(1) in db2_cursor() rather than relying on ibm_db.active() alone.
db2_exec() clears the connection handle on any query failure to ensure
the next call triggers a full reconnect.
QA test 2002 exercises Install/Remove and validates key metrics against
the first configured database, _notrun if prerequisites are absent.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 58eecb96c6e086e674b1d28eaf5c8210572ecd4b
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 15 15:10:10 2026 +1000
ci: update the PR workflow to run CI, not full QA
commit 62bd06c536427fe9e73efa08e3e4add0f204438f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 21:30:11 2026 +1000
debian/pcp-testsuite.postinst: for login shell to be set for user pcpqa
Older versions of systemd-sysusers don't do this.
commit eb102deae45ca969e51dc82c445acea40b408c0b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 17:18:07 2026 +1000
debian/pcp-testsuite.postinst: fix typo from debugging last fix
commit 0f38ae979f59f54da574bc58f4ad7f7ac926dbd2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 16:54:04 2026 +1000
build/rpm/pcp.spec.in: track name change for sysusers files over in debian dir
commit 954e70af6e722f8a378e793f88be3301654dbe0a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 14:52:22 2026 +1000
debian: more rework for debian bug #1138692
So, using systemd-sysusers is a great idea, except the systemd pixies changed
the syntax of the sysusers control files at systemd version 247 meaning the
pcp|pcpqa user setup fails on older Ubuntu systems.
More rework to fix the sysusers file in the build.
commit 4fee09a99c199ea0da99d85892eebe43e7a969d0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 10:57:38 2026 +1000
debian: rework for debian bug #1138692
I took Claude's suggestion without proper checking, and it was
wrong:
1. the Depends: for /usr/bin/systemd-sysusers was the wrong
(non-existent!) package
2. the change makes the package installation fail if systemd
is not present
Harden the postinst scripts to use systemd-sysusers if available else
use useradd if available else fail. Fix the Depends: clauses to match.
Check success of systemd-sysusers (or useradd) and fail if they fail.
If we can't install the required pcp (and pcpqa) users, the
installation is doomed.
commit 1a87f63e2a419b49b7bb8a7b2f94acf30a424130
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 08:10:32 2026 +1000
qa: fix tests using sudo instead of $sudo
This issue was identified by @coderabbit in some other tests in the
context of PR #2619 (macOS QA and build fixups).
commit f37b2208297b933886fca997ef29a664abe81fec
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 08:02:56 2026 +1000
macOS QA and build fixups: couple of more issues caught by @coderabbitai
commit e00d0ae0b0272dcd8fc4a94f97d075c4de29fc19
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 07:26:24 2026 +1000
macOS QA and build fixups: @coderabbitai suggested improvements
All in the context of PR #2619.
commit 76c672247bda510957fe791af79684365f3e6d0d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 14 06:14:48 2026 +1000
Update src/pmlogger/utilproc.sh
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
commit 86ad9a25d964fbde45ae97da8610bb6044320bad
Merge: 5ad5c100 c7e2399c
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 17:11:19 2026 +1000
Merge branch 'main' into mac
commit 5ad5c100be97c81ed099257f7241eee403f65bc2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 17:07:36 2026 +1000
macOS build: some documentation clarification and a small tweak
modified: INSTALL.md
modified: build/mac/MACOS_DEVELOPMENT.md
modified: build/mac/setup-python-env.sh
commit d55af0659410f945a7527edef878d4fc6bc40f29
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 17:05:52 2026 +1000
qa: need full path for runaspcp
commit 43d5c69106963d695cfcbd7589e7150709a34bbe
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:23:08 2026 +1000
qa: macOS porting
There is enough here to get -g sanity passing.
Major items were:
- $TMPDIR has totally different semantics on macOS and needs to
be avoided like the plague
- because . may not be accessible to the user pcp, tests that
run pieces as pcp have to cd someplace else, but that means
relative pathname references in the script are now wrong
- recurring path filtering issues for $tmp ... sometimes it has
a /private prefix and sometimes it does not
- all of the Perl tests need to have $PERL5LIB set
commit 0847818565ea61d8e066b77927c1e396af033f96
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:17:50 2026 +1000
src: more $(LINKER_MAKERULE) changes for macOS
All of the Perl builds were broken, and several other executables
from the build were missing the install_name_tool postprocessing
to stamp the absolute path of the PCP libraries into the executable.
commit b99638960c2d21edd66a88ebc6b42747fb96774a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:15:23 2026 +1000
src/pmdas/darwin: move some diagnostics inside the scope of -Dappl0 guards
Several QA tests use PM_CONTEXT_LOCAL and having stderr unconditionally
cluttered with "info" messages was not helpful.
commit 6f5f61acc865a923b1af2f0b8e406d2d97da8783
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:11:24 2026 +1000
src/pmlogger: macOS changes
- /private/var/log being the real directory and /var/log being a
symlink is a complete disaster for scripts that are trying to match
directory names in the presence of some realpath(1) translations
... workarounds in multiple places
- mkdir -p -m ... is simply different (aka broken) on macOS ...
re-implement in a shell procedure
commit a53240f16896c7df549656b0eb7c9b98fe2e55e3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:08:38 2026 +1000
configure.ac: fix test for echo -n or \c
Was simply broken but not exposed until macOS.
commit dc2e6600176c8d9239c248aa35d60c37d9feb5cc
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:06:00 2026 +1000
src/derived/proc.conf: macOS fixup
The macOS proc PMDA has some, but not all of the same metrics as the
Linux proc PMDA ... needed to expand a couple of guards to avoid
semantic errors during derived metric binding on macOS.
commit 3fce719836d0357b623831fa966331407a97d018
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 14:00:14 2026 +1000
qa/find-missing-apps: (new) find QA apps that don't seem to be used
Fallout from the macOS porting effort, we had lots of QA apps in
the qa/src/GNUmakefile for which the source no longer existed ...
most of them were from the pre-Jurassic SGI period.
commit c7e2399c518f5c15b377bf9569f600f4a3ab83d7
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jun 13 13:15:58 2026 +1000
pmdadenki: fine-tune the previous commit to fix qa fallout
commit 218b1e74a039a2f868acb39531dc53b1ae9ee58a
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jun 13 13:09:55 2026 +1000
qa: update proc blkio_time filtering in qa/999
commit 2a050b29028ad1746d0172e3c482d22bcae92a2c
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jun 13 13:08:46 2026 +1000
pmdacifs: add missing help text for indoms, fixes qa/908
commit 00d43cb85a537f4c41e1ede50aaefe74d4723633
Merge: 858949e0 440ff627
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 11:37:02 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 858949e0875acb7b7707c994fef87d6da9fc6039
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 11:34:09 2026 +1000
qa/admin/other-packages/manifest: small Debian tweaks
commit 578a0cfff62c533ca55ace0317236b73a8311f9c
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 11:33:13 2026 +1000
qa/admin/myconfigure: fix small Debian bootstrap issue
Found on new arm64 Debian VM running on Ken's new Macbook.
commit 6b32cc57968adb5a6a24c02c2eea7d7677ce42cd
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 13 11:31:35 2026 +1000
debian: fixes to remove useradd from postinst scripts (we're using sysusers)
This closes Debian bug #1138692.
commit 440ff6271d777ddec6f74518d86d17eec229276a
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 12 09:54:22 2026 +1000
pmdadenki: improve use in local-context mode, cleanups
Make less chatty by default, as this prints out on stderr/
stdout of client tools in local context mode. Some small
code cleanups too, and no need to init globals to zero -
the compiler is required to do this (+ more efficient).
commit f48cec7bd54b289e37518719f9f147e9c40dd2d1
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 12 09:51:09 2026 +1000
pmdakvm: fix local context mode setup
commit 5501a271ae4461e6020675af6844f45612c679f6
Merge: 364281a6 5373d0e9
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 12 09:49:46 2026 +1000
Merge branches 'cifs-pmda-default' and 'pmdabtrfs'
commit 5373d0e9f40fb6ceaa40d24c96b5663164710143
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 20:06:15 2026 +1000
pmdabtrfs: new btrfs PMDA for Linux filesystem metrics
New PMDA that exports btrfs filesystem statistics from sysfs.
Covers filesystem info, commit stats, data/metadata/system allocation,
per-device error counters, and async discard stats.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 00c37088ac4c56c686d8eac85a57e107549ec9b2
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 16:42:24 2026 +1000
pmns: reserve domain number for 41 btrfs metrics
commit 5fb2f1164e3c7938689b87c0e092b99e9e7942c6
Merge: 401a3e4d 49fed399
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 13:59:46 2026 +1000
Merge branch 'main' of github.com:performancecopilot/pcp
commit 401a3e4d99a036df8c7a0424e2d6b9430bc49b03
Merge: 39aad7db 704c75a5
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 13:59:20 2026 +1000
Merge branch 'zeroconf-drop-bpftrace'
commit 364281a686cb4f4e01d31b480ed237b033b7586c
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 12:44:49 2026 +1000
qa: add cifs metrics to common qa filters
commit 49fed3992e6921354c87da8dfc7c5ab5d5590380
Author: William Cohen <wcohen@redhat.com>
Date: Fri Jun 5 15:28:08 2026 -0400
build: Remove the %clean section
The Fedora packaging guidelines says "%clean section SHOULD NOT be used" as
seen in the URL below:
https://docs.fedoraproject.org/en-US/packaging-guidelines/
Removing the %clean section to match the Fedora guidelines.
commit 1c01f8d79c55bdbc5d662c141e3fc836ed826c68
Author: William Cohen <wcohen@redhat.com>
Date: Fri Jun 5 15:16:18 2026 -0400
build: Eliminate rpmlint "mixed-use-of-spaces-and-tabs" warnings
The rpmlint command flags that there are a mix of spaces and tabs used
for indentation in the pcp RPM spec file. Replacing the all the tabs in
those files to eliminate those warnings from rpmlint.
commit 774ff1b87218cabf860f8615380abe7f03b25c66
Author: lmchilton <lauren.chilton26@gmail.com>
Date: Thu Jun 4 09:19:19 2026 -0400
libpcp_web, pmproxy: support for optional labels
Added support for optional labels to be ingested
into a key-value server by pmproxy.
SHA1 hash calculations are not affected.
libpcp_web code additions include creating a
new buffer to separate hash calculation from
display calculation and creating a new context
hash function to separate context hash w/
identifying labels and context hash w/ identifying
+ optional labels.
Added qa test 1744 to test optional label ingestion and display.
commit 57f811be10f75bd181c0c1608ff94c9e8a025056
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 12:02:28 2026 +1000
pmdacifs: switch to using a default-installed DSO agent
Make this PMDA (which contains Linux kernel metrics only)
part of core PCP and default installed, as we did for kvm
and for all the same reasons.
commit 39aad7db7fad134b631732dcf2a53654de44da21
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 10 12:17:38 2026 +1000
coderabbit: add C/C++ section, enable auto_incremental_review
commit 319f7dc544a923170bab575e145e6f886c827641
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 9 18:13:21 2026 +1000
build: disable coderabbit docstring pre-merge checks, always fails
commit 0b0b833d3de02ef5c418d987aa6f09c34bd23e24
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 9 11:20:46 2026 +1000
qa: reserve test 1693 for log import improvements
commit 704c75a5236ad81a63731c8b5d84539581a24b72
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 9 10:15:45 2026 +1000
zeroconf: drop dependency on pcp-pmda-bpftrace and bpftrace
The link to bpftrace brings in an additional 200MiB+ (Fedora)
and 400MiB+ (RHEL) dependencies via clang (and gcc-toolset on
RHEL) - which is simply too much to justify as a default dep.
Resolves Red Hat issue RHEL-180384
commit 85c17789deedb96836b77a8800aed69586300f36
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 8 08:04:13 2026 +1000
QA scripts (for QA Farm): rework
qa/admin/qa-summary
don't get confused by files in the ~/Logs/by-vm directory
scripts/rebuild
do a better job of cleaning out things that are dependent on
changes outside the qa directory ... qa/perl/test.pl was the
latest one to cause problems here (it is copied from the
src/perl/PMDA directory and once present is not recopied
without a make clean in the qa/perl directory)
commit 7343c2741f79f84731cfd6deecee83aebeb615c9
Merge: ccf6ca1d ac69afac
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 5 06:21:29 2026 +1000
Merge branch 'main' of ../pcp
commit ac69afacbe628da4691d255108b7134d60b85dbe
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 5 06:18:58 2026 +1000
qa: group updates
- reserve some tests for amdgpu PMDA and pmlogrewrite changes
- fix off-by-one error in new-seqs reporting
- bump min used by new when searching for the next free test number
commit ccf6ca1d7f217b5866d8474270c47c71228d017e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 15:19:20 2026 +1000
docs: fix comment location in stdpmid, reserve a domain for SADC
commit 1314c4ef1462455d6ea2f3c9542616d232ce5354
Merge: 56f7cac8 c058478d
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 15:01:13 2026 +1000
Merge branches 'darwin-proc-leak' and 'nixl-pmda'
commit 56f7cac8d27fd340962254463cbf1c710ad8db82
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 1 17:00:54 2026 +1000
darwin pmdaproc: fix Mach port leak in darwin_process_threads()
task_threads() returns an array of thread port send rights, each of
which must be individually deallocated with mach_port_deallocate().
The existing code only freed the backing array memory (vm_deallocate)
and the task port, but never released the per-thread send rights.
Also fix the vm_deallocate size argument: sizeof(thread_port_array_t)
is the size of a pointer, not the element size. Use sizeof(thread_act_t)
to match the actual array element type.
commit c058478d5a957cf85fc280a24070e48f867831a5
Author: Nathan Scott <nathans@redhat.com>
Date: Tue May 26 11:07:40 2026 +1000
pmdanixl: add NIXL Performance Metrics Domain Agent
pmdanixl reads telemetry from NIXL (NVIDIA Inference Xfer Library)
agents via their shared-memory ring buffers and exposes accumulated
per-agent counters to PCP.
Each running NIXL agent that has written a telemetry file to the
configured telemetry_dir becomes a separate instance in the nixl
instance domain. Twenty metrics are provided across four clusters:
transfer (TX/RX bytes and request counts), memory (registered and
deregistered sizes), performance (transfer times in microseconds),
and errors (twelve error event types).
The PMDA is configured via /etc/pcp/nixl/nixl.conf which supports
setting the telemetry_dir and the user account under which the PMDA
runs, allowing permissions to align with the NIXL application user
without requiring world-writable telemetry files.
Domain 39 (FREE_39) is assigned to NIXL in stdpmid. A QA test
(1999) uses a synthetic ring-buffer file created by
qa/src/nixl_telemetry.python to verify metric values without
requiring a live NIXL application.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit abeb82e42b55416eba3ed307c710c321a6023710
Merge: ec2ca5f6 49fe309e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 3 12:00:21 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit ec2ca5f667398289ba8e5e44cf5b4dffde25c31c
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 3 11:58:07 2026 +1000
qa/mk.common & qa/mk.denki: new
mk.common is intended to be a bullet-proof script that can be
used to create|recreate stable QA archives.
mk.denki is the first script to use mk.common.
commit 49fe309e2b5a1d4d256487540bf79c31e95caab4
Merge: 0aeaae8e fd8babb0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 3 07:11:42 2026 +1000
Merge pull request #2608 from jeffpc/man-fix
man: add missing "be" in PCPIntro.1
commit 249cf60d286cfe30f63b64f056d83e26d3e33432
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 2 08:30:37 2026 +1000
src/pmlogmv/pmlogmv.c: omit a leading ./ from srcname
If the argument on the command line is foo, the name that
comes back from libpcp once the archive is opened is ./foo
... strip that so the output and actions mirror the name from
the command line.
This is a zero change in functionality, but triggered a bunch of
qa remakes (mostly when -V was reporting actions on ./foo file
names).
commit d93a8b44476bf42b2e9582d3d59408fd7e18e30d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 2 07:40:18 2026 +1000
pmlogls: (new) list files in a PCP archive
Leverages all the logic in pmlogmv, and like pmlogcp, pmlogls
is a symbolic link to pmlogmv with argv[0] driving the different
behaviour modes.
Should have done this a long time ago ... it would have made lots
of archive management and qa things easier.
commit fd8babb09032f06100dc00baf820ec3000a1473f
Author: Josef 'Jeff' Sipek <jeff.sipek@nutanix.com>
Date: Mon Jun 1 10:39:30 2026 -0400
man: add missing "be" in PCPIntro.1
commit 9d29c906848e4f7b8290d971c658bc5850eedb5d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 1 11:45:43 2026 +1000
qa/771.out: this one was remade, but got lost
Extra testing from the "extra" units changes.
commit 77e6dcb9d07e6d921f332294bffa8442e8be809e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 1 08:10:23 2026 +1000
qa: more Ubuntu 26.04 fixups
Mostly for the bpftrace PMDA.
commit 255314398f5b249008575337a7be723ec13221ad
Merge: 19ceb8a7 0aeaae8e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 1 06:18:32 2026 +1000
Merge branch 'main' of https://github.com/kmcdonell/pcp
commit 19ceb8a7473828ec1930224af3681beaf469f42d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun May 31 17:15:10 2026 +1000
qa: rework for Ubuntu 26.04
Not 100% done yet, env is busted here, I've opened
https://bugs.launchpad.net/bugs/2154651 for this.
But we're mostly passing now, at least almost as well as Ubuntu 24.04.
commit 0aeaae8ed8995787ac37691f3202009244418a35
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun May 31 17:15:10 2026 +1000
qa: rework for Ubuntu 25.04
Not 100% done yet, env is busted here, I've opened
https://bugs.launchpad.net/bugs/2154651 for this.
But we're mostly passing now, at least almost as well as Ubuntu 24.04.
commit 51b8bd98960fb22eb36970f8d9be3a56492ae2af
Merge: 460e8497 b086e6b2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun May 31 05:59:26 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 460e8497e0a13b6a266557ee95446b241da31c05
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun May 31 05:58:23 2026 +1000
qa/512.out: additional mutex for extraunits
commit b086e6b24964aaa660adde5b86bb3f4c23503570
Author: Jan Kurik <jkurik@redhat.com>
Date: Fri May 29 19:01:20 2026 +0200
ci: use classic sudo in ubuntu2604-container
Ubuntu 26.04 defaults to sudo-rs, which does not support -E. Switch to
sudo.ws so QA environment propagation matches other CI platforms.
commit 6a25af5f59b0012ec136ca1d172f6ea0d877e09e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat May 30 10:56:40 2026 +1000
qa & libpcp: changes for OpenBSD 7.9
commit c5dcbfb8fdcf33875de3e126c3f9e1476e6fcea5
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat May 30 06:06:21 2026 +1000
qa/1668: take control of $TZ
Thanks Marko.
commit 9a33d15ead181f3e72b9c83ab95ccd64f2b4ed8a
Author: Jan Kurik <jkurik@redhat.com>
Date: Thu May 28 20:52:22 2026 +0200
qa: cover ubuntu2604 differences in some test
qa/1429 - fix mkdir error message:
ubuntu2604 uses uutils coreutils which returns different error message
when mkdir command fails for a permission reason.
fix _filesize()
On Fedora/RHEL (and older distros), stat prints 'Size' while on Ubuntu
26.04 stat prints 'size'. The fix covers this difference and fixes
various tests using the stat command to get file size.
commit 5e79534d59b8ebdab834fb6add2bcf361e436627
Merge: 16e17fa2 a664c5a3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri May 29 17:19:01 2026 +1000
Merge pull request #2598 from kmcdonell/units
add extra units to pmUnits
commit 16e17fa201ed8e89124ec3529fb073920d6faf23
Author: Jan Kurik <jkurik@redhat.com>
Date: Thu May 28 06:46:28 2026 +0200
libpcp_web: accept NaN/Inf in series_pmAtomValue_conv_str on float/double
The first-character digit check rejected pmAtomStr_r() output like "nan"
from 0.0/0.0 on s390x (positive quiet NaN), breaking pmseries division
tests 1886 and 1906.
For some reason the FPU on s390x returns NaN with sign bit clear which
is different from most of the other architectures which return negative
NaN (sign bit set). Both ways are allowed by IEEE 754 which states only
that Nan should be returned (no sign defined).
commit 673f3b4a3d34b9ebeb5b64ee495aeee39c4ec117
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu May 28 21:23:38 2026 +1000
qa/338 and qa/1473: fix fmt usage broken in earlier commit
Started to fail on Ubuntu 26.04 ... thanks to Jan for spotting the
problem.
There are 4 open security issues in bookworm.
You can find information about how to handle these issues in the security team's documentation.