commit 74a4a4f6ddd8ad465f3377bc4575d72762aaec6c
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jul 24 10:47:49 2026 +1000
qa: resolve some remaining fallout from root pmcd.control stores
commit f5aed8644662a1d02f1888e7c3ea044d0d1f4cee
Merge: 5a21b213 31f701ba
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 24 09:00:54 2026 +1000
Merge pull request #2662 from kmcdonell/wip
QA and chrony PMDA fix
commit 31f701ba9c084b2785ff678c73d6bc3bcc11c62b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jul 24 07:28:57 2026 +1000
qa/README.vm: improve package size calculation recipess for some less common platforms
commit 0cada16b66c79c580ed0ed7582a7a7d3d6d2cbda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 23 21:53:21 2026 +1000
qa/1721: tweak bpftrace version checks
Add _notrun for missing version of .bt file between $minver and $maxver
(currently there is no such missing version, but there could be in the
future).
commit 885c129aa8a72f723b98a9bddbce3e0c55af24d5
Merge: fab65ff2 5a21b213
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 23 21:18:35 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 5a21b21341c84633ddf54db2babf14448956315a
Merge: 3bb81926 dd68999a
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 17:48:31 2026 +1000
Merge branch 'agenticode-pr-labelset-leak'
commit dd68999ab6e091fa1ee73dcf2e11d076ff98ffaf
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 17:47:08 2026 +1000
libpcp: fix labelset leak on addlabel() error paths in __pmLogLoadMeta
When addlabel() returned an error the decoded labelsets from
__pmLogLoadLabelSet() were never freed — the existing cleanup only
handled PMLOGPUTINDOM_DUP. Widen the guard to free on any non-zero
return so ownership is correctly reclaimed on both duplicate and
error paths.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit caf30c32962156f97e4c5ae183a71881c8a277d2
Merge: 3bb81926 b610076e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 17:31:18 2026 +1000
Merge branch 'pr-labelset-leak' of github.com:agenticode/pcp into agenticode-pr-labelset-leak
commit 3bb819268b158885a0ae918bf9a10910635e2f10
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 17:29:46 2026 +1000
qa, pmdapmcd: fixup cases of pmstore to pmcd.control needing root
Lots of places in QA required $sudo now when storing to pmcd.control
metrics - make it so. Also small cleanup to the pmcd.control metric
store logic regarding which metrics to apply EPERM checks to.
commit fab65ff2691cdcc9f4618cfb7b3cfd2bf2b5d22a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 23 17:09:21 2026 +1000
qa/common.check: add _stash_pmda_logs() function
Appends a PMDA's log file and any reference to the PMDA in pmcd's
log file to $seq_full. Most useful for failing tests when a PMDA
does not start or starts crippled.
Documented in COOKBOOK.md and used in a handful of tests that
have been failing in the QA Farm.
commit 15d363a7fedbfd050b35205b22d08460f4b43101
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 23 17:08:45 2026 +1000
qa/README.vm: a little tweaking, nothing important
commit 74bc8c6e6abe9eb1876f8680fdd26ece8adc5b33
Merge: b2e279e9 f315b1d1
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 16:56:54 2026 +1000
Merge branch 'pmda_control_fix' of github.com:orasagar/pcp into orasagar-pmda_control_fix
commit b2e279e983512a8b8d01971141a98e03cd137259
Merge: 6e92a7c6 83cddd6e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 16:43:40 2026 +1000
Merge branch 'lmchilton-pcp2openmetrics-timestamps'
commit 83cddd6ea6f888422ca9229cf3bb3ac82d784faf
Merge: 6e92a7c6 2b4bd598
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 16:42:52 2026 +1000
Merge branch 'pcp2openmetrics-timestamps' of github.com:lmchilton/pcp into lmchilton-pcp2openmetrics-timestamps
commit 7e6b1f2860ea382bb731ff3ea65329b0da99c1a0
Merge: 95d41f6b 6e92a7c6
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jul 23 16:33:53 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 6e92a7c6a972688ac7cfb25e7a98ebae51669e00
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jul 23 09:20:08 2026 +1000
qa: add chronyd test diagnostics for deb platforms
commit 95d41f6b568503baed0d3a99c8f1e67e73841799
Merge: c539a2ce 5258dbcb
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 17:18:35 2026 +1000
Merge branch 'main' of https://github.com/kmcdonell/pcp
commit c539a2ce83b79ca11a261123ff55c5d08d53270e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 17:14:30 2026 +1000
src/pmdas/chrony/pmdachrony.python: the chrony user may not be "chrony"
On vm13 (MX 23.6) the user appears to be "_chrony".
Since there are no visible command line arguments for this PMDA I
cannot fix it in the Install script (which seems the right place),
so I've had to hard-code some alternative logic into the PMDA's Python
code.
With these changes qa/1686 is magically passing on vm13.
commit 5258dbcb279cc41e6a42e1510973922407486d80
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 17:14:30 2026 +1000
src/pmdas/chrony/pmdachrony.python: the chrony user may not be "chrony"
On vm13 (MX 23.6) the user appears to be "_chrony".
Since there are no visible command line arguments for this PMDA I
cannot fix it in the Install script (which seems the right place),
so I've had to hard-code some alternative logic into the PMDA's Python
code.
With these changes qa/1721 is magically passing on vm13.
commit ed884a828d628bac8bfa3646e363ab8cb4a554d1
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 17:12:56 2026 +1000
qa/1686: add some useful diagnostics to $seq_full
Specifically the PMDA's log file and relate lines from pmcd's
log file.
commit ab04682ec474d9d8a71f75f75ac5adbd0e4e29a3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 16:58:42 2026 +1000
qa/1721: smarter handling of bpftrace versions
and longer timeouts for slow VMs.
commit c4c1e7cf339faabe86e4207ec3773d581dad2ae9
Merge: 58dd97fc 9a9be68f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 16:36:02 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
commit 58dd97fc3058cdf6fed9263d7e38c7efcf486282
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 16:35:07 2026 +1000
qa/1999: increase timeouts and gather more triage info
commit 9a9be68f2b1404e43659ce54fa769b4a30f0739b
Merge: f0c99d89 ffe5ba43
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 16:12:02 2026 +1000
Merge pull request #2660 from kmcdonell/wip
QA fixups and selinux changes for chrony PMDA
commit ffe5ba430bcd36a79fc2d78391665b05822e7a7b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 06:26:40 2026 +1000
src/selinux/pcp.te: fix syntax error in last commit
commit 70d064e7b5af7d231d1e8c7ba986f818a7554f9f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 06:18:38 2026 +1000
src/selinux/pcp.te: guard kernel_io_uring_use() macro use
@coderabbitai suggestion to avoid build failure on RHEL 7
(and older) where kernel_io_uring_use() is not defined.
commit a20b68e8476740d98f692e5628c09396c731ca67
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 05:49:43 2026 +1000
qa/common.check: small _triage_wait_point() change
As suggested by @coderrabbitai in the context of PR #2660, I had missed
setting the "$here/" prefix for the wait file on the no arguments code
path ... fortunately this is usage of _triage_wait_point() rare (maybe
never?) and not very useful in practice.
commit 3ad3f0686b1a892706a15645a52464e0e9f46ee2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jul 22 05:42:40 2026 +1000
src/selinux/GNUmakefile: don't make | grep
As pointed out by @coderrabbitai in the context of PR #2660 it is a bad
idea to use the construct
$(MAKE) ... | grep
in a makefile rule because the result (as far as make is concerned)
moves from the exit status of $(MAKE) to the exit status of grep.
Simply dropping the | grep part of the rule is the right fix.
We are already catching and culling these triaged (not-a-PCP-issue)
selinux build warnings in scripts/cull-build-warnings.
Same change in src/selinux/import/GNUmakefile
commit f315b1d1ed29c4ea4a9957e60505efe6cb84c5fb
Author: Sagar Sagar <sagar.sagar@oracle.com>
Date: Tue Jul 21 09:56:23 2026 +0000
qa/1746: added test root-only pmcd control stores
commit cecb1ff160e48ddb3cf94d05c3571880f95283ae
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jul 21 17:06:50 2026 +1000
src/selinux/import/GNUmakefile: same filter change as parent GNUmakefile
commit d1f61f23051e01978398c16f814d8883d1641810
Merge: 8fc7f247 f0c99d89
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jul 21 08:23:43 2026 +1000
Merge branch 'main' of https://github.com/performancecopilot/pcp
Conflicts:
src/selinux/GNUmakefile
Resolved diffs.
commit 8fc7f247282391a3e4248a6aecb5fb34da8c6819
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jul 21 08:05:07 2026 +1000
src/selinux/pcp.te: multiple fixups: kernel_io_uring_use() and chrony PMDA
1. on RHEL 9.8 the construct
ifdef(`kernel_io_uring_use', ...)
fails because the interface is defined but it expands to use
io_uring_t which is not defined ... this involves a fair amount of
digging starting with
$ sudo semodule -X 200 -i pcp.pp
Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/200/pcp/cil:118
Failed to resolve AST
semodule: Failed!
replace the ifdef() with optional_policy() [like we use elswhere
for other interface uses] seems to fix this.
2. there were a stack of extra AVCs from qa/1686 and the chrony PMDA
... it took several iterations before I stopped seeing new AVCs
so I suspect there are multiple code paths in this PMDA and their
execution while running qa/1686 is not deterministic, so repeated
runs see potentially different AVCs
Also tidied up the GNUmakefile to remove duplicate definitions Warnings
that are caused by other people's policies and have nothing to do with
PCP.
commit f0c99d89479d3d77833f87be633e32e7217adf8a
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 16:20:23 2026 +1000
pcp-atop: fix systemd service for changed logdir path
commit 3b90369a6c6404145a99525455456714cee88264
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:49:25 2026 +1000
build: prepare for next weeks pcp-7.2.0 release
commit 891a42a4ec6671419582e9309abe5b6262734786
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:48:58 2026 +1000
docs: fix pcp-import-benchmarks description pluralism
Resolves Debian bug #1142200
commit 776df2ca67bc117a98b00056ad60ff6424c0efc2
Merge: 3f35be65 d25126c9
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:31:39 2026 +1000
Merge commit 'd25126c9c1731eb22c304d9e7af5c9404e1c7856' into htop-merge
commit d25126c9c1731eb22c304d9e7af5c9404e1c7856
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:31:39 2026 +1000
Squashed 'vendor/github.com/htop-dev/htop/' changes from 1579d02a5e..d4297a41b2
d4297a41b2 Extend man page to include a External Libraries section on libnl-3 / libnl-genl-3
255b014c7a Merge pull request #2047 from ABHIRAMSHIBU/feature/zswap-meters
fdf6309c2d Add zswap pool usage meters
53207de160 Disable NetBSD build for now as their cdn sends partial files breaking the build consistently
671df7975b Update version to 3.6.0-dev. Again.
393b224603 Update Changelog, Release 3.5.2
d0c5072686 Merge branch 'fix/issue-1982-systemdmeter-newline' of dengzhongyuan365-dev/htop
eb9859a6f4 Merge pull request #2046 from winklemad/fix-reset-on-fork-flag
4dc18e7c7e Scheduling: OR in SCHED_RESET_ON_FORK instead of ANDing it
a97ad96d18 Add comment on why snprintf instead of xSnprintf (omit error handling)
5d870936e3 Merge branch 'fix/issue-1991-trace-fork-error-feedback' of re2zero/htop
f7e79f97f2 Merge branch 'fix-cpumeter-segfault' of fasterit/htop
bf8cc6e85e Merge branch 'linux-zram' of eworm-de/htop
bdf4ffc15e linux: fix reading zram values
5839bca117 systemd: fix SystemdMeter parsing when falling back to systemctl show
1ef42260c4 Merge pull request #2034 from BenBE/ci-sec-fix
81ed8c1664 Merge pull request #2033 from crocidb/main
73cf23cff8 Address review feedback from @Explorer09
bf9d40f9d3 Don't persist credentials when cloning the repository for CI
afd5974915 Unified indentation style
ede50e5dd8 Replace apt-key by signed-by repo spec for clang
b174af9b15 freebsd: unifying buffer/cache memory usage for all filesystem cache
080461baa5 Use consistent CI job naming
b233e88243 Update CI to use $(...) subshell syntax
f137d5a736 Merge pull request #2028 from add-uos/main
bcbebfe156 desktop: add trailing semicolon to Keywords and expand keyword list
7ff5716515 Merge pull request #2010 from BenBE/remove-openvz
90369a4912 Remove obsolete OpenVZ and VServer support
287df38a19 Reduce default token permissions
254da5566b Merge pull request #2027 from htop-dev/dependabot/github_actions/actions/checkout-7
978b76e577 Bump actions/checkout from 6 to 7
f85df099e1 Merge pull request #2026 from ugolnikovE/issue-1992
f0d2b7e151 linux: add M_EPSS column (effective proportional set size)
6f86c5f8e9 Housekeeping: Make count, start, ncol unsigned, removes lots of casting
143147ebf1 Fix segfault when vCPUs are hot-added: resize AllCPUsMeter data->meters array on CPU count change
e9518b3320 PgDown -> PgDn for consistency (introduced in 87c2f29a)
3896cb87e6 Merge pull request #2021 from BenBE/sticky-follow
87c2f29aa8 Introduce sticky_follow setting
c05187cc69 Unfollow when moving cursor
d66df1f567 Show error message when trace feature fails on fork
98be31b2bd Merge pull request #2020 from BenBE/fork-exit-fixes
99f456b83b Merge pull request #2019 from BenBE/openrc-bugfix
dcee86f939 Avoid memory leak on error when listing open files
81fcd80aaa Simplify interrupted waitpid handling
6e833bc5e1 Properly terminate forked process for TraceScreen
1dc64b55d9 Avoid running atexit handlers for forked children
ca8e1c80e7 Split runlevel and service count queries
224748653b Merge pull request #2017 from BenBE/security-process
3a002219ce Merge pull request #1976 from natoscott/fix/macos-memory-used-calculation
e7409e80e5 Skip displaying service counts if both values are missing
b9f4aa0424 Use size_t for count tracking
af145094f8 Refactor Row_printRate to scale units with a loop
7709c12b42 Formalize security process
3af3426923 Merge pull request #2015 from natoscott/fix/darwin-mach-port-leak
76a0c21839 darwin: fix Mach port leak in DarwinProcess_scanThreads()
ac2cdeeb56 Merge pull request #1999 from MatthewLavine/main
2cc93218ec linux: resolve actual executable path for Flatpak processes
008c621e67 Merge pull request #2008 from nikhilwankhedee/main
a75e9011f9 Handle unavailable OOM scores as N/A
af53de40ba darwin: fix used memory calculation to match Activity Monitor
git-subtree-dir: vendor/github.com/htop-dev/htop
git-subtree-split: d4297a41b285374336ae860afe5b5c16128f9f87
commit 739e5abdb0da519ebd47da40db2eb115e77b7629
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 13:24:52 2026 +1000
qa/988: make order of xfs metrics deterministic
Same fix as previously applied for qa/987.
commit 3f35be653cc8849960c93eb458ecb17a93521940
Merge: f7668761 327acb76
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:22:17 2026 +1000
Merge branch 'pcp-selinux-import'
commit f7668761a6ac2c9db497ab3ae7b0bb22089446c2
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:21:52 2026 +1000
docs: otel QG, fix incorrect stray pcp2openmetrics reference
Minor formatting fixes (don't use '&' as its special in html escape
sequences, and informal). Add a short note about the PMWEBAPI(3)
opentelemetry exporting via /metrics API.
commit acbcb9b9fba675e893fbe19d592e6c5cc78a13d5
Merge: 19781879 8b4bb3ed
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jul 20 13:14:46 2026 +1000
Merge branch 'otel-QG' of github.com:lmchilton/pcp into lmchilton-otel-QG
commit 6d09501d47874936d3f42a3d67e2566ead795e49
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 13:01:41 2026 +1000
qa/1307, 1438 and 1471: more filtering for odd fstat() issue
Same problem and same fix as was previously triaged for qa/1290.
I now believe this line:
Warning: invalid file descriptor -1 in syscall fstat()
comes from valgrind on x86_64 RHEL 9.8 and (some versions) of x86_64
Ubuntu 26.04 ... the non-valgrind "dual" tests don't show the warning,
only the valgind variants do.
commit 4d82eaeb1ad3d0a3bdf345a8916ba20ea83a252f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 13:00:01 2026 +1000
qa/README.vm: extend the documentation and hints a little
Specifically one-liners to answer the question "which installed
packages are using the most disk space?".
commit b9c400b925881d04519e83aa32d64bdbbd713ad9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 11:44:56 2026 +1000
qa/1290: filter away odd fstat() warning
commit 03326c6fba087994f898d537d57283ff153f0d35
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 06:49:00 2026 +1000
qa/common.check: tweak for _triage_wait_point()
If filename is given, look for it in $here, just like the default
$seq.wait.
commit c169fc22b8cf1cc74f04bee5f59a0ff3d5fcb501
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jul 20 06:45:00 2026 +1000
qa/987: make xfs PMNS deterministic
The xfs metric names order seems to have some dependency on directory
order for the "fake" stats files ... take control and make the order of
metrics to be fetched deterministic.
Also added per-tarball _triage_wait_point using $seq.wait.$iter.
commit 72d7ac1afd36877e69793d3acd03dda0924c975e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jul 19 17:20:21 2026 +1000
bpftrace PMDA QA: small tweaks
- fix typo in common.bpftrace diagnostic
- rework logic in 1721 to track biolatency.bt being replaced by
multiple versions of this file
commit f0fa359a52bcd1f81e46457d6e411778bbe1803c
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jul 19 16:48:22 2026 +1000
qa/check: correct accounting for callback failures
commit b610076e7d56080846a844c583d223ecdab3aa78
Author: agenticode <16611333+agenticode@users.noreply.github.com>
Date: Sat Jul 18 15:41:58 2026 +0000
libpcp, pmproxy: fix unbounded memory growth from duplicate label records
addlabel() appends every label record presented to it onto the
per-(type, ident) chain in the archive context's label hash, with no
duplicate detection. This is unlike the sibling metadata paths:
addindom() and __pmLogAddDesc() both reject records that duplicate one
already stored (addindom() even documents why: identical indoms "very
common in multi-archive contexts"). Labels get the same duplicate
records but keep every copy for the life of the context.
pmproxy's discovery presents the same label records repeatedly during
normal operation:
- when an archive is first discovered, __pmLogLoadMeta() (called from
pmNewContext()) loads all label records into the context, and then
process_metadata() re-reads the same records from the .meta file and
adds them again via pmDiscoverInvokeLabelsCallBacks();
- pmlogger_daily rollover and multi-archive contexts re-present the
same records with identical (type, ident, timestamp, content).
Because discovery contexts are long-lived, the duplicate pmLabelSets
accumulate without bound. Observed on PCP 7.1.5 as pmproxy RSS climbing
~62MB -> 1.8GB over six days (roughly doubling each night at the
rollover) until the process aborted under memory exhaustion and was
restarted by systemd at an ever-higher baseline; valkey stayed flat, so
the growth was entirely in the daemon. bcc memleak attributed ~30MB of
outstanding allocations per 30-minute window to __pmLogLoadLabelSet()
reached via process_metadata(), ~150x the equivalent (de-duplicated)
indom path.
Give addlabel() the same exact-duplicate rejection addindom() has: when
an incoming labelset matches an existing entry at the same timestamp
(same instances, label counts and JSON payload), free the wrapper and
return PMLOGPUTINDOM_DUP. The two callers that own the decoded labelsets
on a non-store outcome -- __pmLogLoadMeta() and
pmDiscoverInvokeLabelsCallBacks() -- free them on the duplicate return,
mirroring how __pmLogLoadMeta() already disposes of a duplicate indom's
payload. Only byte-for-byte redundant records are dropped, so no
context's effective label state changes; a genuine label change at a
later timestamp is a different time slot and is preserved.
A standalone reproduction that re-presents one context labelset to
__pmLogAddLabelSets() 30000 times goes from +8832 kB RSS (301 bytes each,
0 rejected) before this change to +0 kB (1 stored, 29999 rejected) after.
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 59969c45212da8fd62bcbd36a060301f7704cdb6
Author: Sagar Sagar <sagar.sagar@oracle.com>
Date: Fri Jul 17 11:50:19 2026 +0000
pmcd: restrict control metric stores to root users
Require root credentials when writing privileged pmcd control metrics to prevent unauthorized runtime configuration changes.
commit 327acb76c6d38cc0035e6111a9b51b16e1d4bd6b
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jul 17 14:00:25 2026 +1000
selinux: add pcp-import policy module for local context recording tools
Add a new SELinux policy module (pcp-import) for PCP tools that operate
in PM_CONTEXT_LOCAL mode without pmcd — loading DSO PMDAs directly and
writing PCP archives via libpcp_import. This covers pcp-atop and
sysstat's sadc (with -O pcp), and provides a reusable pcp_import_t
domain for future import tools.
The pcp-import module is independent of the existing pcp-selinux
package (which covers pmcd/pmlogger/pmproxy/pmie) and works when only
pcp-libs is installed. The sysstat_t domain from the base targeted
policy is augmented via optional_policy when sysstat is installed.
Rename PCP_IMPORT_DIR to PCP_IMPORTRUN_DIR for clarity (/run/pmimport
status files) and add PCP_IMPORTLOG_DIR (/var/log, base directory for
import tool archives). pcp-atop uses PCP_IMPORTLOG_DIR/atop for its
daily archives.
New pcp-selinux-import RPM subpackage, weak-required by pcp-libs when
selinux-policy-targeted is installed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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 8b4bb3edd33e2f8f62676400024bc2e7ab175f5c
Author: lmchilton <lauren.chilton26@gmail.com>
Date: Wed Jul 8 11:05:51 2026 -0400
New OpenTelemetry QG
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 2b4bd5982a36a0eff740c30d868eb8e6b582de6b
Author: lmchilton <lauren.chilton26@gmail.com>
Date: Thu Jun 4 16:14:40 2026 -0400
pcp2openmetrics: add live timestamp mode
update pcp2openmetrics tool to allow for live timestamp
mode option. This update follows openmetric / prometheus
exposing timestamp guidelines. Updated man page & QA #1131
Resolves upstream RFE issue [#2538]
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
There are 4 open security issues in bookworm.
You can find information about how to handle these issues in the security team's documentation.