commit 19781879556216ab36eb6a5a0c1eb138a05281bc
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jul 18 08:12:07 2026 +1000
qa/common.bpftrace: bpftrace PMDA needs even longer to start on vm03
15sec was not enough, bump to 30sec and now qa/1721 is passing.
commit 81a89ff40dfc36bfcd2ef9716830466e5a57aeda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jul 18 07:44:33 2026 +1000
bpftrace PMDA: examples and QA
Following feedback from Viktor Malík (the bfptrace maintainer @
RedHat) over at https://github.com/performancecopilot/pcp/issues/2609
the examples and QA have been reworked.
1. a new script (Download) to download versions of these scripts from
github and apply the Andreas Gerstmayr transformation to produce
something the bpftrace PMDA can use
2. package a version of biolatency.bt and runqlat.bt for each version
of bpftrace that is known to github (currently 20 .. 26)
3. update qa/1721 to pick the right version of the *.bt script
4. update qa/1721 to expect either 4 or 5 tracepoints (not 3)
5. remade qa/1721.out
Thanks Viktor.
commit 4529a26eb4cb04c9359dd94dcd3e5e81c3f3a3a6
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jul 17 09:58:34 2026 +1000
chrony PMDA: review fixes, packaging, SELinux policy, and QA tests
Code fixes (pmdachrony.python):
- Broaden exception handling to catch OSError, ValueError, IndexError,
AssertionError, and TimeoutExpired in addition to CalledProcessError
- Add timeout=1 to subprocess.run() calls (well under pmcd 5s timeout)
- Remove unused PMDA_FETCH_NOVALUES import
- Fix typos: "refrence", "Resitual", "iInterval", "souces"
- Fix pylint: use enumerate() instead of range(len())
- Add CHRONYC env var override for chronyc path (enables QA testing)
- Add set_user("chrony") for chronyd socket access, guarded for
non-root and test contexts
- Pre-populate instance domain on init to avoid "unknown instance"
warning on first pmval fetch
- Fix metric units: use dimensionless pmUnits for identifiers, strings,
stratum, poll, reach, and ppm frequency values (not PM_COUNT_ONE)
- Fix semantics: sources.last_rx and sources.reach use PM_SEM_INSTANT
Man page (pmdachrony.1):
- Remove stale "Copyright (c) 2014 Red Hat" from template
- Add chronyc(1) and chronyd(8) to SEE ALSO
SELinux (pcp.te):
- Allow pcp_pmcd_t to execute chronyc_exec_t (optional policy)
Packaging:
- Add pcp-pmda-chrony to build/rpm/pcp.spec.in and redhat.spec
(package declaration, file manifest, package list, preun, files)
QA:
- New test 1685: deterministic dbpmda test with fake chronyc and
canned data using RFC 5737 documentation IPs (no PII)
- New test 1686: Install/Remove integration test via pmcd
- Add qa/chrony/ test data directory with fake chronyc script
- Add chrony to qa/GNUmakefile and qa/GNUmakefile.install SUBDIRS
- Add chrony to qa/common.filter (PMDA name, instance, PMNS filters)
- Add chrony entries to qa/group
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 4ac53a1b138cc294b33dda24565999c763ec6a38
Merge: 36f9def6 cc1479ed
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 16 16:36:03 2026 +1000
Merge branch 'chrony' of github.com:jeffpc/pcp into jeffpc-chrony
commit 36f9def68e3b6333edd9407c91a03eaa1bae9e96
Merge: 7bd44703 59c9b221
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 16 09:06:03 2026 +1000
Merge pull request #2656 from kmcdonell/wip
packaging (Debian and tarball) and multiarch path fixups (Debian)
commit 59c9b2213326e474eaf4558dc30ba7646ab933a3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 16 07:51:05 2026 +1000
build/tar/postinstall.tail: tweak test for ldconfig -m option
commit 8aacd877b688931fff574165610873197421c1fc
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 16 07:24:31 2026 +1000
libpcp*/src/install-dev: coderabbitai-suggested fixups
1. one script and make others symlinks (hard links are not preserved by
git apparently)
2. harden the error checking in the script
commit 3b1019d7c9b977a2f0d9419558f327d204c266fb
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 19:38:28 2026 +1000
debian packaging: fixups
- /run/pmimport installed via tmpfiles, not packaged
- pcp-dstat lintian changes
commit a8b0cf95d2a652ca96b9389e0625fb53e0082fdb
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 14:30:31 2026 +1000
debian/control.pcp: fix Breaks: and Replaces: for libpcp-import2-dev
Needs to refer to libpcp-import1-dev.
commit 40e1ac32beeb94ab4f770aa20fa860ed56daaa91
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 14:08:15 2026 +1000
debian/pcp-htop.install: cull bogus etc/pcp/htop/* entries
Correct usr/share/pcp/htop entries were already present.
commit de03719323c6d9050d74e0d066ee8183e920cba6
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 14:04:31 2026 +1000
debian/pcp-export-zabbix-agent.install: match multipath renaming
The Debian packaging ecosystem sees the zbxpcp.so DSO's below
/usr/lib and wants to move 'em to the correct multipath directory.
Make the pathnames glob-match the renamed paths, same as was done
for all the libpcp<foo> libraries.
commit 903b5d3dd689c96552712cc0f88e50fe2001f006
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 13:58:45 2026 +1000
Debian build: rework for multiarch changes
Revert parts of commit 10f01ad75.
Conditionally installing based on $DEB_HOST_MULTIARCH was wrong.
Install into $PCP_LIB_DIR (e.g. /usr/lib) and let the Debian build
ecosystem deal with the path renaming to install libraries below
$PCP_LIB_DIR/$DEB_HOST_MULTIARCH.
commit 60b58ef841cd9bbf521c34856015c2c30f03eea1
Merge: a15c03af 7bd44703
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 12:10:23 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit a15c03af8faa042c840d40b5f5051db3a6efeca1
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 15 10:47:17 2026 +1000
src/libpcp*/src/install-dev: rework
1. mv rather than cp, so we don't end up with turds in /usr/lib that are
not part of any PCP package
2. add -d (debug flag) to report key variable assignments
3. expand coverage to include pkgconfig files that are also not where
"sudo make install" puts them
Note: all the 9 files are hard links to the same script, so realy only
one set of changes here.
commit 7bd44703feb840bd38f1a72ee49f08580e5d6f27
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 16:32:00 2026 +1000
build: drop /run and import.conf for pmimport debs
commit 103deb2a59a98198795cc1f4cd06f37ea26cc5d3
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 11:04:11 2026 +1000
ci/macos: pre-upgrade pkg-config to avoid brew bundle lock race
brew bundle runs parallel installs (HOMEBREW_DOWNLOAD_CONCURRENCY=6)
and the pkg-config upgrade races with python-setuptools install since
both need the pkgconf cellar path, causing a lock conflict. Upgrade
pkg-config before brew bundle so it's already current.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 6d5e514b32c918a5e003ef5aa4f354b968778b2c
Merge: b8d356cd 230550e2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jul 14 10:59:49 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 230550e29370ad77d77fa71b7c7ce1593d457557
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 10:52:20 2026 +1000
ci/macos: fix brew bundle race and Homebrew 6.x tap trust warnings
The GitHub Actions macOS runner image has pre-installed third-party
taps (aws/tap, hashicorp/tap, azure/bicep) and background brew
upgrade processes that race with our brew bundle step.
Replace the fixed sleep with a wait loop for background brew
processes to finish, and untap unused third-party taps to avoid
Homebrew 6.x tap trust warnings (HOMEBREW_NO_REQUIRE_TAP_TRUST
is deprecated and will be removed).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit c04675a2aa2936fa8d8ae33ddb248d137ce5c6a2
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 10:25:18 2026 +1000
qa/statsd: fix test 1713 broken by pminfo -e flag change
The -e flag was repurposed from unused to --metadata-errors, which
enters verify mode and suppresses normal fetch output. Revert
07.py back to utils.print_metric() to match the expected output.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 2bd16d1cf5ada81b2fb0214260303924a21dd075
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 10:12:44 2026 +1000
qa: add filtering for upstream-based man pages
commit 63f992375b737b2b22b858ba5b5dc2d0b0218991
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 14 09:49:54 2026 +1000
qa: fix up missed references to pcp-reboot-init shell script
commit b8d356cd70c0fb405f5aef8f8907153525dc7ae6
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 13 21:38:03 2026 +1000
install-dev scripts for libraries
Only for developer use to overlay "sudo make install" on top of a
PCP installation.
Needed some extra tweaks to handle path rewriting for multiarch on
Debian ... package installs and make install were not putting the
libpcp<foo>.so.N file in the same directory.
commit 4b62214b698ce3e76990e6faa81b561cb5c1bfb5
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 13 21:36:38 2026 +1000
build/tar/postinstall.tail: tweak ldconfig test
On FreeBSD 14.3 (vm06), ldconfig '-?' reports ...
usage: ldconfig [-32] [-BRimr] [-f hints_file][directory | file ...]
which needs a smarter grep to find the -m option.
commit 97ec2019399ffd3b305a28705951f8f6c6d808c6
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 13 14:49:24 2026 +1000
pcp-summary: ensure zoneinfo displayed in local-context mode
commit 8b7f54b8721bf2eb50b144a365e77001571eb517
Merge: 4c6f41c0 5c112ff4
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 13 12:42:16 2026 +1000
Merge branch 'pcp-atop-labels'
commit 4c6f41c00641d693fdeb1dc3a4f007ddb2728456
Merge: e1d037ce 97e256b4
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 13 12:42:10 2026 +1000
Merge branch 'split-system-tools'
commit 5c112ff427235d92e49e02e4c2b5e6e313c85fed
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 13 11:09:48 2026 +1000
pcp-atop: skip oversized context labels to avoid truncated JSON
If a label name or value exceeds the local buffer size, pmsprintf
would truncate it — potentially stripping a closing quote from a
JSON string value and producing malformed JSON in the archive.
Skip such labels rather than writing corrupt data.
Addresses coderabbit finding on PR #2653.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit e1d037ceb41bc751c4626bf4422c22d59550bc80
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 13 10:44:05 2026 +1000
docs: fix a couple of typos in docker PMDA help text
commit 361a673042895126a86c72fb28e8bafc7e94fc0e
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jul 11 14:19:06 2026 +1000
pcp-atop: fix double-compression of archive volumes in atop-daily
The glob "$base".[0-9]* matched already-compressed .N.zst files
(e.g., .0.zst matches because [0-9]* covers "0.zst"). These were
renamed to .0.zst.tmp and re-compressed to .0.zst.zst.
Skip files with .zst or .xz suffixes in the rename loop so only
raw uncompressed volumes are staged for compression.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit a89b157b9424cd89ecb7320bf2e854dd307741a4
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jul 10 15:05:11 2026 +1000
libpcp_import, pcp-atop: write context labels into recorded archives
Add rawwrite_init_labels() which writes an {"atop": true} creator
label then copies all context-level labels from the live PMAPI context
(hostname, domain, machineid, etc.) into the PMI archive via
pmiPutLabel.
Updated qa/1089 to verify atop creator label in recorded archive.
Fixed pmiPutLabel to pass through already-valid JSON values (such
as quoted strings, numbers, true/false/null) verbatim rather than
double-quoting them. Previously numbers became strings and quoted
strings got escaped quotes.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 97e256b4ed93303494bedf44ae874a1f3a616cbb
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 8 16:35:35 2026 +1000
packaging: split pcp-atop, pcp-dstat, pcp-htop into individual subpackages
Create three new subpackages (pcp-atop, pcp-dstat, pcp-htop) so each
tool can be installed independently with minimal dependencies.
RPM: new packages depend only on pcp-libs (plus python3-pcp for dstat).
pcp-system-tools now Requires all three for clean upgrades. The dstat
Provides/Obsoletes moves from pcp-system-tools to pcp-dstat.
Debian: new packages use Breaks/Replaces pcp (<< 7.1.6) for clean file
migration. The main pcp package Recommends the new subpackages. The
dstat Conflicts/Provides/Replaces moves from pcp to pcp-dstat.
Several pcp-* tools were not matched by the system-tools manifest
pattern and were falling through to the base pcp package. Add
pcp-buddyinfo, pcp-meminfo, pcp-netstat, pcp-nfsiostat, pcp-ps,
pcp-rocestat, pcp-slabinfo, pcp-vmstat and pcp-zoneinfo.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 257a410250ceea71e6fcc3055973f4bf73e77274
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 7 08:35:10 2026 +1000
build: enable aarch64 resctrl PMDA sub-package
commit c565f6fdb26b73e0b3d9cc17d927bc7affdf7484
Merge: 3ae9f1a8 9ed16e6c
Author: Nathan Scott <nathans@redhat.com>
Date: Sun Jul 12 16:10:53 2026 +1000
Merge branch 'pmda-python-typing'
commit 9ed16e6c5fd6b3151a8c9086a1433be7604496ec
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 21:09:03 2026 +1000
pcp.pmda: add type annotations to PMDA API
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 9b0c3b1040001f2d1f6ed286cceb574cd7cdab92
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 8 16:35:19 2026 +1000
packaging: rename pcp-reboot-init script to reboot-init
The pcp- prefix caused pcp --help to list reboot-init as a user-facing
subcommand, but it is an internal service utility run at boot. Rename
the source directory and script to reboot-init so it installs as
$PCP_BINADM_DIR/reboot-init.
The systemd service file and man page retain the pcp-reboot-init name
for system-wide visibility (pcp-reboot-init.service, pcp-reboot-init.1).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 3ae9f1a87d942bd006168d1ed1e3768cea632bf6
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 8 09:37:24 2026 +1000
qa: remake 1653 to include recent updates to metric units
commit deaf911e1069a77102bf6f759d44cfcdc9c02390
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jul 7 08:49:58 2026 +1000
qa: remake 1291 which has a units change with new atop code
commit 85ea8a8ffa2c8f28aaa8e041126041c1cf280632
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 17:22:01 2026 +1000
pcp-atop: check rename() return when creating Latest folio (covscan)
If rename(2) fails, clean up the temp file. Coverity CID 504629.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 5475cc65e29dae91f0bdbccdcf2015a89b84c5f1
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 12:49:30 2026 +1000
pcp-atop: zero new entries after realloc in acctphotoproc
The realloc extending the exited-process array did not zero the new
entries. The memset in atop.c before acctphotoproc uses the old array
length, so the extended portion has uninitialised memory. This caused
valgrind to flag a conditional jump on prestat.gpu.state in deviattask
(qa/1080 failure).
Zero the newly allocated portion immediately after realloc.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit c17590f3471c3838aec76cf18581fc7508045d1a
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 12:13:02 2026 +1000
libpcp: accept PM_MODE_LIVE for PM_CONTEXT_LOCAL in pmSetMode
pmSetMode unconditionally returned PM_ERR_MODE for PM_CONTEXT_LOCAL,
even for PM_MODE_LIVE which is conceptually identical to what local
context does. This forced callers to special-case local context when
all they needed was a live fetch.
Merge the LOCAL case with HOST: accept PM_MODE_LIVE (same fields set),
reject other modes. Remove the PM_ERR_MODE workaround from pcp-atop
fetch_metrics which is no longer needed.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 37005e17e9055685a967e684683ca587e22ce909
Merge: 8bcefdf5 3e34bcb2
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 12:01:23 2026 +1000
Merge branch 'christianhorn-fix-pushdoc-path'
commit 3e34bcb2424ade53a3eef3900e9d9d76f84de0c5
Merge: 8bcefdf5 543cde97
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 12:01:00 2026 +1000
Merge branch 'fix-pushdoc-path' of github.com:christianhorn/pcp into christianhorn-fix-pushdoc-path
commit 543cde97c03607ea83d2070a87d3d2eaf44f6af1
Author: Christian Horn <chorn@redhat.com>
Date: Mon Jul 6 10:57:21 2026 +0900
cleanup structure
commit 8bcefdf5884d69db49c903ad89d175ee05e91aa9
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 11:56:07 2026 +1000
pcp-atop: fall back to local context when pmcd reconnect fails
When pmReconnectContext fails and pcp-atop is on localhost, create a
PM_CONTEXT_LOCAL with DSO PMDAs rather than silently dropping samples
until pmcd returns. Recording continues with reduced metrics (only
what DSO PMDAs provide — no pmcd-specific metrics like pmcd.agent.*).
Also handle PM_ERR_MODE from pmSetMode gracefully: local contexts do
not support pmSetMode, so treat PM_ERR_MODE as benign rather than
calling cleanstop.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 758444675c932e9811cd5ec3cf76b39cf4f4bb9c
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 11:53:19 2026 +1000
pcp-atop: reconnect to pmcd on connection loss instead of exiting
When pmFetch fails with PM_ERR_IPC, ECONNRESET, PM_ERR_TIMEOUT, or
EPIPE (pmcd restarted or stopped), try pmReconnectContext() to restore
the connection. If reconnect fails, return -1 so the caller skips
this sample and retries on the next interval rather than exiting.
Previously, any fetch error other than PM_ERR_EOL called cleanstop(1),
so restarting pmcd killed the recording service.
Also fix photoproc.c to check fetch_metrics return value — a -1 return
(connection lost) would leave result=NULL and crash.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 80962efb117b414b23bae92d74f11757e15e2d10
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 11:45:34 2026 +1000
pcp-atop: update usage, man page and comments for archive (not folio)
pcp-atop -w now writes PCP archives directly via libpcp_import, not
pmlogger folios. Update all user-facing references:
atop.c: -w/-r usage strings say "archive" not "folio"
pcp-atop.1: replace all "folio" with "archive" or "directory"
various.c: update comment on the folio lookup paths (kept for
backward compatibility with old pcp-atop folios)
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 86272836520df3e34563f9b1d55cae5f2ce1dbcf
Merge: dc102a4f 681b35f2
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 11:38:02 2026 +1000
Merge branch 'main' of github.com:performancecopilot/pcp
commit dc102a4fac665f3fc4e40f31fc113fa6c727f328
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 11:37:25 2026 +1000
pcp-atop: fix -w hang by removing pmNameInDom from write path
rawwrite_put() called pmNameInDom() to resolve instance IDs to names
for pmiAddInstance/pmiGetHandle. pmNameInDom makes a synchronous RPC
to pmcd, which blocks indefinitely when called from inside the fetch
pipeline (pmcd's response is delayed or the socket state is confused).
This caused pcp-atop -w to hang after the first sample when pmcd is
running (HOST context). Backtrace showed select() blocking in
pmNameInDom -> __pmGetPDU inside rawwrite_put.
Fix: use the numeric instance ID as a string for pmiAddInstance and
pmiGetHandle, avoiding the pmcd round-trip entirely. Instance names
in the archive are numeric IDs rather than external names; this is a
functional trade-off to eliminate the hang. A future improvement can
pre-cache instance names from the fetch_instances() calls that
photoproc/photosyst already make.
Also update qa/1266 to use pmafm Latest folio for archive access
after -w (pcp-atop -w now creates a directory with a Latest folio
rather than a flat archive).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 9122cef8a5d1ca85eb153d2130e379350c67f24a
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 6 10:26:33 2026 +1000
pcp-atop: write Latest folio for archive replay; fix qa/1089
rawwrite_open() now creates a PCP folio (Latest) in the archive
directory pointing to the current day's archive, following the pmlogger
convention. Written atomically via rename(2) of Latest.tmp so no
reader sees interim content.
rawarchive() now tries <dir>/Latest as a folio path when hunting for
archives, so "pcp-atop -r <dir>" works transparently with the new
direct-write archives (no pmlogger folio needed).
qa/1089: replace pmafm on the old no-end.folio / end.folio paths with
pmafm on the new Latest folio. Drop pmcd.* metrics from the check
(pcp-atop records hinv/kernel/proc metrics, not pmcd internals).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 681b35f24c4aa2d880acaf6f78a6c3f96dad7abc
Merge: 97a76377 6a24a530
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 6 06:37:40 2026 +1000
Merge pull request #2641 from christianhorn/add-denki-units
add power units for pmda-denki metrics
commit 6a24a53028b522a0357dc89c40b3c50a8f0e5378
Author: Christian Horn <chorn@fluxcoil.net>
Date: Sun Jul 5 20:23:54 2026 +0900
units for denki.bat.energy_now
commit 97a7637727591886b3b6429d460e6fbb754e3319
Merge: cbfae94d 44edd973
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 16:47:03 2026 +1000
Merge branch 'main' of ../pcp
commit 44edd973b023c8d0729838007433e11b8960ff90
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 16:44:39 2026 +1000
qa: remakes (mostly) from Slackware (vm15)
Misc things, mostly no-IPv6 versions of .out files that have been
remade elsewhere (on IPv6 platforms).
commit ea46caedbaefe613df26a67730d2146c359f7b66
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 16:43:03 2026 +1000
src/pmdas/darwin/rewrite.conf: (new) missed in last commit
commit 71728cb295477aa10a87e89a4c97fd27be2b59a2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 10:07:32 2026 +1000
qa/635: add ip(1) as prefered alternative to netstat(1)
netstat -ia is (a) too fragile, (b) sometimes broken, and (c)
old-skool.
ip -s link is an altogether better way to get network interface
statistics for value comparison with the PCP equivalents.
commit cbfae94d4f20861ce089abb68bae17c0514aa9bf
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jul 3 08:23:59 2026 +1000
pcp-atop: set default logging interval to 1 minute (was 10)
commit 08cc6892a9241c61d7b08d067a14a2b55cb78620
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 06:56:09 2026 +1000
qa/1676.out: remade after darwin_env-1 archive recreated
commit 0bfdf7d4b8b0c802a25dbb919b2e80296020f302
Merge: 95fcabfb da3dc273
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 3 06:54:54 2026 +1000
Merge pull request #2643 from kmcdonell/wip
Miscellaneous work items
commit da3dc273da6365aa231aacc7ddc6e8e09525daf9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 21:10:10 2026 +1000
src/pmdas/darwin/power.c: avoid integer truncation in temperature calculation
commit 257094a64e2b539d4635900f1755d660d5d5ace1
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 21:01:50 2026 +1000
qa/archives/GNUmakefile: special rules for darwin archives
commit 182038c8eb0985378b9e527fe6cb3074c13dfa5d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 20:50:00 2026 +1000
qa: darwin changes
- missing qa/1677
- missing archives
commit f2a3679ea252c4048a58eb427b4ed7f7e398ccbc
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 20:48:12 2026 +1000
build/tar/postinstall.tail: tweak ldconfig logic
commit 38d29009b8c7e8dfa4de2adf6652c2ce40de3ea7
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 20:47:15 2026 +1000
src/pminfo/pminfo.c: small -1 tweak
Following suggestion from @coderabbitai.
commit c04a66e5d7d9018b0e14807b52df7a36179b707f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 20:18:58 2026 +1000
Update src/zshrc/_pcp
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
commit c729e4faedc9f19b17eaab2f3e4df678d49f4500
Author: Christian Horn <chorn@redhat.com>
Date: Thu Jul 2 17:51:49 2026 +0900
fix issues found by coderabbit
commit 39473bb1eaa07ee4317dc50d2ff7dff4b5cf69c3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 17:25:34 2026 +1000
qa/1676: (new) missing from previous commits
commit a25a123b4c41a812243dec468ad26eb1c7f47a09
Merge: fc8eaee1 a25a0e89
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 16:09:36 2026 +1000
Merge branch 'main' of https://github.com/kmcdonell/pcp
commit a25a0e897831765bcba388a94fe5e66d6cc3d3d8
Merge: 708b77e1 a54d166d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 16:09:00 2026 +1000
Merge branch 'main' of https://github.com/kmcdonell/pcp
commit 708b77e1bdd68b6548d3b2f77d65d471913058e7
Merge: a2b34277 95fcabfb
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 16:08:43 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit a2b342772295505ee81a3ddec13e14cbab8221ad
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 16:00:43 2026 +1000
macOS: embrace extra units for darwin PMDA and list-packages support
commit fc8eaee11055d0e7fa72ca17a18be2502c32a6d5
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 15:32:07 2026 +1000
src/pmdas/linux/mk.rewrite: small whitespace cosmetic fixup
commit ed9c0b99d4da654b97f53770bd0cc5f1cce05d1d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 15:27:00 2026 +1000
linux PMDA: fix data type for some disk metrics
On 64-bit kernels, these metrics were exported as type U32 instead of U64:
disk.dm.read_bytes
disk.dm.write_bytes
disk.dm.total_bytes
disk.md.read_bytes
disk.md.write_bytes
disk.md.total_bytes
Fix PMDA and update mk.rewite to generate a correct kernel_ulong.conf
configuration for pmlogrewrite.
commit 6f0c399460d358a67c70c99c0e03715a962f2c27
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 15:20:53 2026 +1000
pminfo: add -1 option
Same as -d, except all pmDesc (metadata) is reported on a single
line per metric with tab separated fields. First field is the
metric name.
Easier for scripts consuming the output.
commit 95fcabfb41fab74d57937f9038199aba38c50207
Merge: 37d5ce8c 61259423
Author: Nathan Scott <natoscott@users.noreply.github.com>
Date: Thu Jul 2 13:13:29 2026 +1000
Merge pull request #2630 from performancecopilot/dependabot/github_actions/actions/checkout-7
build(deps): bump actions/checkout from 6 to 7
commit 37d5ce8cb018048c68b8be7c58f90ae3f65e8e6a
Merge: affe8b7a 176f512e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 2 11:52:33 2026 +1000
Merge branch 'push-docs' of github.com:christianhorn/pcp into christianhorn-push-docs
commit 79bdab70d1f88a16929505fcd889760a106c1b2d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 07:37:51 2026 +1000
build/tar/postinstall.tail: catch some more commands for -n
Need to echo 'em, not execute 'em.
commit a54d166d970cf65e80d7e61d8322d8995ca48bf9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 2 07:23:25 2026 +1000
build/tar/postinstall.tail: optionally run ldconfig
To rebuild the shared library cache in case we've installed
newer versions of some PCP DSO's.
commit 67d4b7af957575d64ee09a2f9e3443f921aba030
Author: Christian Horn <chorn@fluxcoil.net>
Date: Wed Jul 1 21:06:23 2026 +0900
add power units
commit 176f512e378610b1774b6853ae1baf13af9b53dc
Author: Christian Horn <chorn@fluxcoil.net>
Date: Wed Jul 1 20:09:57 2026 +0900
fix collecthost misnaming
commit affe8b7af90d4886259a70223fc422f7b9faeb32
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 18:17:02 2026 +1000
libpcp: relax label name rules, skip invalid keys gracefully
Allow underscore as a valid first character in label names. The
previous rule required the first character to be alphabetic, which
rejected labels like "_block_size_resolved" exported by vLLM and
other Prometheus-compatible systems.
When a label key contains invalid characters (e.g. hyphens), skip
that key-value pair and continue parsing the remaining labels.
Previously, a single invalid key name caused the entire label set
to be rejected. The buffer and comma state are rewound so the
resulting JSON remains valid.
Add QA test 2008 covering: leading underscores, all-underscore
names, invalid keys at first/middle/last positions, and vLLM-style
large label sets.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 18003b6b235fa2e16ffa8a1002ae9e513d55affc
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 16:09:35 2026 +1000
pcp-atop: updates after covscan analysis
various.c val2memstr(): MAXEBYTE8 equals LLONG_MAX so the check
"verifyval <= MAXEBYTE8" was always true (Coverity CID 504429),
making the OVFORMAT branch dead code (CID 504430). Since count_t
is signed long long, anything past MAXPBYTE is unconditionally
EBFORMAT. Remove MAXEBYTE8, MAXEBYTE, OVFORMAT, EBFORMAT_INT
(all unused after this simplification).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit a57d5edb48274c38bcb2ccac101c0939cf74d1ce
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 12:58:33 2026 +1000
pcp-atop: updates after code review - all fairly minor cleanups
commit 82f8c271dbbf743564360a88704be4b921221784
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 12:53:14 2026 +1000
pcp-atop: fix MEM avail to use KiB directly, not pages round-trip
The original fix (8a2b618b) converted the KiB value from PCP's
mem.util.available to pages in photosyst.c (KiB * 1024 / pagesize),
then showsys.c multiplied by pagesize to get bytes — a pointless
round-trip that lost precision on non-4K page systems.
All other memory metrics in pcp-atop store PCP's KiB value directly
and multiply by 1024 in the display routines to get bytes. Fix
availablemem to follow the same pattern:
photosyst.c: store the KiB value as-is (remove * 1024 / pagesize)
showsys.c: change * pagesize to * 1024
Audit of all pagesize uses in showsys.c confirms the remaining five
are genuine page-count metrics (sockstat tcp/udp mem, cgroup physpages,
NFS pagesmread/pagesmwrite) where * pagesize is correct.
Closes #2631
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 4f5ef53ced6ff14b056d83eb18d75dde262a18eb
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 11:46:32 2026 +1000
pcp-atop: derive default label set from labeldef[] instead of hardcoding
The fallback when no -P labels are specified was a hardcoded string
"CPU,CPL,MEM,SWP,DSK,NET,PRG,PRC" that would become stale if labels
were added to or removed from the labeldef[] table. Build the default
set by iterating the full table instead.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 75cd16de5e2280ff8f5a2382e773003e81acd572
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 08:49:43 2026 +1000
pcp-atop: bidirectional BindsTo between service and timer
The timer now also binds to atop.service. If someone explicitly stops
atop, the timer stops too — no midnight restart of a deliberately
stopped service. Combined with the service's BindsTo on the timer,
they always start and stop as a pair.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 7d57ba49bedba2d17192c6bda27b9648fb636902
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jul 1 08:48:34 2026 +1000
pcp-atop: BindsTo atop-daily.timer so the timer always starts with the service
Without the daily timer, atop runs indefinitely without archive rotation
or compression — a broken state. BindsTo= ensures the timer starts
whenever atop.service starts (and stops the service if the timer dies),
so 'systemctl start atop.service' is all that's needed. The Also= in
[Install] handles enable/disable pairing.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit fe1c6cc9304c48a87d7638f22a9a34bfd88b53f9
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 20:46:45 2026 +1000
pcp-atop: cancel inherited interval timer in volume rotation child
The rawarchive_compress_volume() callback forks a child to compress
completed data volumes with zstd. The child inherits the parent's
active ITIMER_REAL timer used for periodic sampling; the resulting
SIGALRM kills zstd before it can write any data, leaving a zero-byte
compressed file.
Cancel the timer with alarm(0) before exec, matching the fix applied
to sysstat's sadc for the same issue.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 561183e3097db9c9aa30426e598c1805f68833af
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 20:17:22 2026 +1000
pcp-atop, pcp-summary: fix pcp(1) display of atop recording status
pcp-summary.sh: merge sadc and generic pmimport display into one loop.
All tools use the same pattern (tool-specific label, comma→space via
tr, fmt wrapping); sadc's dedicated section is replaced by a case
statement: sadc→"activity"/sadc-archive, atop→"labels"/archive,
*→"modules"/archive. Harmless for space-separated tools like collectl
since tr ',' ' ' is a no-op.
various.c: use ATOP_VERSION ("2.12.1") in pmiSetImportProgram instead
of PCP_VERSION so pcp(1) reports the upstream atop version pcp-atop
is based on, not the PCP package version.
atop.h: define ATOP_VERSION "2.12.1" (upstream sync point v2.12.1).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 53147733de8a9c8b9dfd5c6f37998d96eb44437c
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 20:00:39 2026 +1000
pcp-atop: fix context deadlock and atop-daily exit code
various.c: remove pmiSetZoneinfo(NULL) from rawwrite_open — when called
before setup_globals the live PMAPI context does not yet exist, so
__pmZoneinfo() (called by pmiSetZoneinfo) attempts to acquire the
contexts_lock via PMAPI while rawwrite_open's pmiStart (PMI_APPEND)
already holds it, causing EDEADLK. pmiSetZoneinfo is already called
in rawwrite_init_sidecar() which runs after setup_globals.
atop-daily.sh: add exit 0 at the end — the new date-based culling loop
ends with [ day -lt cutdate ] returning 1 (false = nothing to cull),
which became the script's exit code, causing ExecStartPre to fail.
The original find-based culling always returned 0.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 99b42ac2759d4027deaff2ccc665cfba0a3d47da
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 18:04:28 2026 +1000
pcp-atop: tie atop-daily.timer to atop.service enablement via Also=
Add Also=atop-daily.timer to atop.service [Install] so that
systemctl enable atop.service also enables atop-daily.timer, and
systemctl disable atop.service also disables it.
Upstream atop handles this via RPM postinstall scriptlets; we use the
unit-file mechanism so it works correctly regardless of install method.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 11cc505eb755f22bd96d6dee4b4d08778fe8ebc6
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 17:50:51 2026 +1000
pcp-atop: fix compression and culling in atop-daily
Two correctness fixes in atop-daily.sh:
Compression: remove background '&' from xz/zstd calls. When atop-daily
is invoked from ExecStartPre= in atop.service, systemd kills any remaining
background children when ExecStartPre exits, before ExecStart begins.
This left .tmp files uncompressed. Removing '&' makes compression
synchronous; for daily archives (typically small) this is fast. When
called from rawwrite_open via atop-daily --compress-only (in pcp-atop's
own cgroup), the same code runs and is not subject to being killed.
Culling: replace find -mtime with date-based filename parsing. The
compressed output files (*.meta.xz, *.0.zst) carry the compression time
as their mtime, not the archive date, so find -mtime kept archives longer
than LOGGENERATIONS. Parse the YYYYMMDD stamp from the filename and
compare against a cutoff date computed with 'date -d'.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 132de81bc99b376ab9ecc091ee39edd7721701f8
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 17:44:21 2026 +1000
pcp-atop: fix service ExecStart, sidecar name, qa/2007 lifecycle test
atop.service.in: remove '-h local:' from ExecStart — the '-h' flag
conflicts with atop option parsing (InfiniBand in atopsar) and is
unnecessary: without it pcp-atop connects to local pmcd by default
and falls back to PM_CONTEXT_LOCAL automatically if pmcd is down.
various.c: register sidecar as "atop" (not "pcp-atop") so
pmiSetImportProgram writes $PCP_IMPORT_DIR/atop and pmdapmimport
serves the instance as "atop", matching the installed symlink name.
qa/2007: complete lifecycle test for the atop service:
- saves/restores pre-test service state so the test is idempotent
- polls for pmimport state transitions (avoids races on slow hosts)
- checks $PCP_IMPORT_DIR/atop sidecar (pid, archive, args fields)
- verifies sidecar is removed on clean service stop
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit d841ab68f7a9e1325b6e9eb920f97898a8da4892
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 16:48:33 2026 +1000
pcp-atop: address coderabbit review findings
parseable.c: guard zero-length buffer in parseable_labels(); compute
remaining capacity without unsigned underflow by tracking used bytes
explicitly before each strncat call.
atop-daily.sh: fix LOGGENERATIONS off-by-one — find -mtime +N keeps
N+1 daily archives; use $((LOGGENERATIONS - 1)) to retain exactly N.
Guard LOGGENERATIONS=0 (keep forever) to avoid -mtime +-1 which is
invalid. Document 0 = keep forever in atop.conf.
Findings assessed as already correct or not applicable:
- atom.cp free: both rawwrite_put paths already call free(atom.cp)
- local fallback: already calls pmGetContextOptions/setup_origin
- hostname truncation: force-null-terminates at line 1782 already
- atop.h pmapi.h: already included at line 25
- atop-daily double-execution: not a double-execution; atop-daily
runs once via ExecStartPre when systemctl restart fires
- probe numval>0: "available" (not "active with traffic") is correct
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 165d40542fa6c8c761efa0584fac94da68a63632
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 15:58:58 2026 +1000
pcp-atop: clean atop transition — service renames, config path, daily script
Service files renamed for clean atop drop-in replacement:
pcp-atop.service.in -> atop.service.in
pcp-atop-daily.service.in -> atop-daily.service.in
pcp-atop-daily.timer.in -> atop-daily.timer.in
pcp-atop-daily.sh -> atop-daily.sh
installed binary: pcp-atop-daily -> atop-daily
Config file:
atop.conf.in replaced by plain atop.conf (no substitutions needed);
installs to PCP_SYSCONFIG_DIR/atop (/etc/sysconfig/atop) matching
upstream atop's config format and location exactly.
Archive path:
Default LOGPATH=/var/log/atop in atop.service and atop.conf matches
upstream atop convention. atop-daily.sh fallback updated from
PCP_LOG_DIR/atop to /var/log/atop.
atop-daily.service now restarts atop.service (not pcp-atop.service).
various.c: fork of atop-daily (was pcp-atop-daily) at startup updated.
pcp-summary.sh: use "labels" for pcp-atop args field (vs "modules" for
other tools, "activity" for sadc) matching pcp-atop -P label vocabulary.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 82ea7204665b74296fadf5a01bb3031e7920d474
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 15:11:38 2026 +1000
qa: add pcp-atop recording and pmimport lifecycle tests
2006: record 3 samples with pcp-atop -w, verify archive contains
hinv, kernel, and proc metrics; replay with -r.
2007: start pcp-atop.service, verify pmimport.* metrics appear while
running (pid, archive, args fields in sidecar), stop service, verify
metrics disappear and sidecar is removed on clean exit.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 29b5781afa2f062420f15182be1d76ec79cd795c
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 15:10:19 2026 +1000
pcp-atop: pmimport.args with full subsystem labels; probe optional PMDAs
Replace the ad-hoc "kernel,proc,nvidia,netatop" args categories in the
pmimport sidecar with real pcp-atop -P label vocabulary, giving sysadmins
a meaningful view of what a running pcp-atop recording service is capturing.
New probe infrastructure (probe_optional_metrics in photosyst.c):
After setup_photosyst() populates the systmetrics pmid array, do a
lightweight pmFetch of one representative metric per optional subsystem.
Any metric that resolves and returns numval > 0 sets the matching bit:
IBSTAT - infiniband PMDA: IB ports present
IPCSTAT - perfevent PMDA: IPC/cycle hardware counters
LLCSTAT - resctrl PMDA: LLC occupancy
NFSSTAT - NFS client mounts active
PSISTAT - kernel PSI pressure (kernel >= 4.20 + CONFIG_PSI)
LVMSTAT - LVM/device-mapper devices present
MDDSTAT - MD software-RAID devices present
New sidecar init (rawwrite_init_sidecar in various.c):
Called from atop.c after setup_globals() so all supportflags are known.
Builds args= from the -P label set (explicit if -P was given, otherwise
the default recording set CPU,CPL,MEM,SWP,PAG,DSK,NET,PRG,PRC), then
appends conditional labels: PSI, LVM, MDD, NFC+NFM, GPU, IFB, LLC, PRN.
parseable_labels() (parseable.c): new helper that returns the active -P
label list, or the default recording set when no -P flag was given.
Rename NETATOPBPF -> NETBPF throughout: pcp-atop only supports per-process
network stats via pmdabpf; the NETATOP and NETATOPD flags (upstream atop
kernel-module and daemon variants) are never set in pcp-atop.
GNUmakefile: gate build on TARGET_OS+HAVE_NCURSESW so pcp-atop is not
built on non-Linux platforms.
pcp-atop.1: add pmdaresctrl, pmdaperfevent, pmdapmimport to the optional
PMDA list and SEE ALSO; document pmimport registration in recording mode.
qa/1978.out: regenerate after CPUSCALE "-" display fix (scaling field now
shows "-" when archive lacks scaling metrics, was previously suppressed).
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 44b8b4c543948726546477a8e8ccddc711699313
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 12:17:33 2026 +1000
pcp-atop: fix rawwrite_register ordering and CPUSCALE display
Two bugs:
rawwrite_register (called from setup_metrics inside setup_globals) returned
early because pmi_ctx was still -1 when rawwrite_open had not yet been
called. All metric groups were therefore unregistered, so rawwrite_put
staged nothing and every pmiWrite returned PMI_ERR_NODATA. Fix by calling
rawwrite_open before setup_globals so the PMI context is valid when each
metric group's setup_metrics triggers rawwrite_register. Fixes qa/1079,
qa/1089, and qa/1266.
sysprt_CPUSCALE and sysprt_CPUISCALE ignored the return value of
dofmt_cpuscale. After the backport changed the "nothing known" case from
returning NULL to returning " -", sysval_CPUSCALE started always
returning 1 (field always shown) instead of 0 (suppress). The static
"scaling ?" buffer was then shown instead of the intended "-". Fix by
using the return value from dofmt_cpuscale directly. The qa/1978 expected
output needs ./remake 1978 since the CPU scaling field now correctly shows
"-" instead of being suppressed for archives without scaling metrics.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 452a66c717365da42949781fd4b5abd5e4ee9b32
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 11:41:25 2026 +1000
pcp-atop: fix double-run of pcp-atop-daily in timer service
The daily service was running pcp-atop-daily explicitly then starting
pcp-atop.service whose ExecStartPre also runs pcp-atop-daily. The
second pass found leftover .tmp files from the first and launched
duplicate compressors against the same archive outputs.
Fix: the daily service simply restarts pcp-atop.service. The restart
seals yesterday's archive (pmiEnd on stop), then ExecStartPre runs
pcp-atop-daily exactly once: atomically renames prior-day files, forks
background compression, culls old archives, and exits. Recording
resumes on the new date-stamped archive while compression runs in
parallel.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit d1e9b50344f6b6ce66892f94d5ff3ede141cfc76
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 11:04:27 2026 +1000
pcp-atop: code build cleanups and comment fixes
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 01bbc1db1519b5de50375a36fc0963d31204aa8e
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 29 10:22:29 2026 +1000
pcp-atop: pcp-atop-daily.sh - no template, source pcp.env at runtime
Shell scripts in PCP source pcp.env to get PCP_LOG_DIR and other
path variables at runtime; no .in template substitution needed.
Rename pcp-atop-daily.in -> pcp-atop-daily.sh, source pcp.env,
use $PCP_LOG_DIR directly. GNUmakefile installs it as pcp-atop-daily
via $(INSTALL) without a generation step. Remove the script from
LDIRT since it is not a generated file.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
There are 4 open security issues in bookworm.
You can find information about how to handle these issues in the security team's documentation.