commit b94e18afe61761be1c96215b22ca799f84101c89
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 18:32:05 2026 +1000
qa: update 1418.out for pmiWriteNow perl binding
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit f2905b5a8bbddb5a51e7e583cab912a22078e785
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 18:01:35 2026 +1000
perl api: add pmiWriteNow() binding to LogImport.xs
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 4454ba5d15b52ee09be79a7fc8abb11e4fc1e93c
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 17:28:06 2026 +1000
libpcp_import, python api, pmrep: add pmiWriteNow(); fix epoch timestamp writes
pmiWrite(sec=0) was repurposed as a "use current time" sentinel, but this
breaks any archive with Unix epoch timestamps (e.g. QA synthetic archives
starting at 00:00:00 1970). Separate the two concerns cleanly:
- pmiWrite() now always uses the supplied sec/nsec timestamp verbatim;
sec=0 writes a record at Unix epoch, not wall-clock time.
- pmiWriteNow() is a new function that writes a record timestamped with
the current wall-clock time.
Update all callers:
- Python pmiWrite(0) (integer zero, no nsec) now calls pmiWriteNow()
so existing "use current time" idiom still works from Python.
- pmrep: pass microsecond*1000 as nsec (was usec) and sec=0 now
correctly writes the archive sample at epoch instead of current time.
- qa/src/check_import.c, check_import.perl: pmiWrite(0,0) -> pmiWriteNow()
- Perl LogImport: export pmiWriteNow in @EXPORT list.
- pylint: replace manual if/clamp with max() builtin.
Also update qa/1623.out_v{2,3}: collectl2pcp now writes more metrics per
record (from earlier subsystem handler additions), changing archive sizes.
man/man3/pmiwrite.3, debian/libpcp4-dev.install: document pmiWriteNow.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 6cbca29aaa90abffa2651397d07e5af519f4db3c
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 15:56:18 2026 +1000
collectl2pcp, qa: fix pmiWrite() callers for nsec API and sec=0 semantics
pmiWrite() changed its second parameter from microseconds (internally
multiplied by 1000) to nanoseconds (used directly), and the sentinel for
"use current time" changed from sec<0 to sec==0. Update all affected
callers:
collectl2pcp/timestamp.c: mseconds*1000 -> mseconds*1000000 (usec->nsec)
qa/src/batch_import.perl: pmiBatchWrite(0,...) -> pmiBatchWrite(1,...)
to avoid sec=0 triggering wall-clock time instead of epoch
qa/src/test_pmi.python: pmiWrite(0) -> pmiWrite(1) for same reason;
pmiWrite(sec, usec=123456) -> pmiWrite(sec, nsec=123456000)
qa/src/check_import.python: useconds (1e6 scale) -> nseconds (1e9 scale)
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 2a6e248b9b2fc71b545a721c5c78cc670c0251a2
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 15:46:06 2026 +1000
python api: update pmi.py for pmiWrite nanosecond API
Rename usec -> nsec parameter in pmiWrite() and switch from pmiWrite2()
to pmiWrite() with nanosecond precision, matching the current
libpcp_import API. Also clamp nsec to zero after all conversion paths
to guard against a negative fractional part from modf() on pre-epoch
timestamps.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 500405300bd5fd5458fcc66d2cad45d0392aaa63
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 15:05:35 2026 +1000
pmdapmimport: fix PMIMPORT_MAX accounting and atol() pid parsing
Stale sidecar files left by crashed daemons were consuming slots in the
PMIMPORT_MAX tool limit before the pid liveness check could filter them
out, silently dropping live tools when many stale files accumulated.
Move the limit guard to after both paths (mtime-unchanged recheck and
fresh parse) have determined whether the tool is active.
Also replace atol() with strtol() for pid= parsing: atol() returns 0
silently on malformed input, which would bypass the __pmProcessExists
liveness check for any corrupted sidecar file.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 5a723d954112886317900c337cbcb8556d4c1b76
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jun 20 17:42:03 2026 +1000
pmdapmimport, pcp-summary: add pmimport.* metrics for import tools
Introduce a generic pmimport.{archive,version,args} metric set with an
instance domain with each instance an active import tool identified by
name.
pmdapmimport scans PCP_IMPORT_DIR on each fetch; each file is a status
file written by an import tool containing key=value lines:
pid= process ID (long-running daemons only, via PMI_PROCESS flag)
version= tool version string
args= tool-specific arguments
archive= current archive base path
Mapping to:
pmimport.archive current archive base path
pmimport.version tool version string
pmimport.args tool-specific argument string
Add PMI_PROCESS flag (0x4) to pmiStart(): long-running import daemons
pass this flag to write their pid= to the status file and have it
removed on clean exit via pmiEnd(). One-shot tools (e.g. sadc invoked
by sa1) omit the flag so the status file persists between invocations.
pmdapmimport reads pid= and uses __pmProcessExists() to skip stale
status files left by daemons that exited uncleanly.
pmi_context gains a flags:16 bitfield (alongside the existing state:16)
to carry PMI_PROCESS across the lifetime of a context.
pcp-summary(1) displays sysstat/sadc with custom formatting; any other
active import tool is shown generically with aligned tool/modules/archive
lines, so new importers appear automatically without script changes.
The PMDA is included in local.conf so it is available in both live pmcd
mode and local context mode (pminfo -L), enabling pcp-summary and other
tools to report import tool status without requiring pmcd.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit da0aa47c34ca2c2052295050d6123bd3f5ef8102
Author: Nathan Scott <nathans@redhat.com>
Date: Sat Jun 20 17:45:11 2026 +1000
linux, collectl2pcp: add missing subsystem handlers and cpu frequency metric
linux PMDA: add hinv.cpu.frequency_scaling.current (item 10 in
CLUSTER_SYSFS_DEVICES) reading /sys/devices/system/cpu/*/cpufreq/
scaling_cur_freq per CPU. The existing freq.scale field already holds
this value from refresh_sysfs_frequency_scaling_cur_freq(); we simply
expose it as a new instant metric alongside the existing .min/.max.
collectl2pcp: add handlers for subsystems that had no coverage:
sock - network.sockstat.* from /proc/net/sockstat
fs-ds - vfs.dentry.count from /proc/sys/fs/dentry-state
fs-is - vfs.inodes.count from /proc/sys/fs/inode-nr
fs-fnr - vfs.files.count from /proc/sys/fs/file-nr
buddy - mem.buddyinfo.total from /proc/buddyinfo (per zone)
nfsc- - nfs.client.calls from /proc/net/rpc/nfs
nfss- - nfs.server.calls from /proc/net/rpc/nfsd
numai - mem.numa.util.* from /sys/devices/system/node/nodeN/meminfo
Test data: qa/collectl/subsys_test.raw.gz (1.9KB, 3 samples) collected
using collectl -s sibm to exercise all new handlers.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 5fecb9b40984ad4ea54dd622c437a7145b179d1c
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 13:43:21 2026 +1000
build: resolve macos issue relating to unwanted systemd files
commit 1b213c50444c0f25b57ff9cb813892241180d204
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 13:18:38 2026 +1000
libpcp: fix __pmLogFreeLabel double-free and leak in __pmLogOpenAppend
After assigning the meta label to lcp->label via struct copy, label's
hostname/timezone/zoneinfo pointer fields alias lcp->label's. A
subsequent __pmLogChkLabel call that returns before __pmLogLoadLabel
overwrites those fields (e.g. on a short read) would leave label still
holding the aliased pointers; the __pmLogFreeLabel on the error path
would then free the strings that lcp->label still references, causing a
double-free when logFreeMeta() runs. Zero label immediately after the
assignment so lcp->label exclusively owns the strings.
Also add the missing __pmLogFreeLabel for the data-volume label on the
success path; the hostname/timezone/zoneinfo allocated by the final
__pmLogChkLabel call were leaked on every successful open-for-append.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit ab69c21c9e08002e0e7fc86088ad8b7809d1ad0e
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 26 10:03:51 2026 +1000
python api: update overlooked python PMI interface
Make use of the clean v2 ABI interfaces now instead of the
old and moldy v1 patchwork quilt.
commit 3d1a65db69e686ce0687f299ef18ef520f665309
Merge: 705b3bcd 93efeeea
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 25 15:26:26 2026 +1000
Merge branch 'main' of github.com:performancecopilot/pcp
commit 705b3bcd2dd64e577a0dcb9b93753a31db71c367
Merge: 32564943 bcc22027
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 25 15:26:03 2026 +1000
Merge branch 'dso-pmdas-help'
commit 32564943d06fb61fe3eb0a594fa58266c8942c2b
Merge: c2e523f2 4496d69a
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 25 15:24:54 2026 +1000
Merge branch 'preserve-import1-abi'
commit c2e523f272738b21092b0d7646ab13da00675096
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 25 15:21:26 2026 +1000
docs: refine "labels" reference in log-append header comment
commit bcc22027dd74849f3996d1f403e808fbd84f6136
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 20:39:02 2026 +1000
pcp-libs: include DSO PMDA .so and help files for local context
Clients using PM_CONTEXT_LOCAL need both the PMDA shared libraries and
their compiled help files (.dir, .pag) to work standalone without the
main pcp package.
For RPM: derive the DSO PMDA directory list from local.conf (same source
used for the .so files) and extend basic_manifest to also pull the
compiled help files into pcp-libs-files.
For Debian: add glob patterns to libpcp4.install to capture all PMDA
.so and compiled help files under usr/lib/pcp/pmdas/.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 4496d69af8e88f376860e9f06c8772e5b6b9e04f
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 25 12:01:15 2026 +1000
libpcp_import: introduce ABI v2 while continuing to ship ABI v1
Following up on Ken's feedback on recent changes, we're going to
handle libpcp_import the same way we did the libpcp.so.4 switch.
This allows us to completely retire the non-Y2038 safe interface
and also means we don't need to reintroduce the HighRes pmResult
interface.
All of the new import interfaces in this release are now forming
the v2 ABI while a snapshot of the last releases interfaces will
remain in the libpcp_import1 shared library.
commit 93efeeea356ec684165774bf8b908023bb630393
Merge: ab250a7b bcd79e94
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 21:14:40 2026 +1000
Merge pull request #2634 from kmcdonell/wip
QA fixups and convert Nvidia PMDA to extraunits
commit bcd79e9451c2187d32639655c4936f85083bf5ea
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 17:57:32 2026 +1000
src/pmdas/nvidia/rewrite.conf: fix power units
Thanks @coderabbitai.
commit ab250a7b62651a389b6da087582fbd49d4475316
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 17:54:38 2026 +1000
pcp-summary: fix pmie primary instance detection
The awk code used BEGIN { primary=0 } which left primary as a numeric
zero when no id=0 ("primary") pmie instance existed. Any pmie instance
whose third join field happened to be the string "0" (e.g. from an archive
where the irix namespace maps pmie metrics to zero-valued PMIDs) would
falsely match $3 == primary, producing incorrect "primary engine: 0" output
or hiding non-primary instances.
Fix by initialising primary to "" and guarding both $3 == primary
comparisons with primary != "" so they only fire when an id=0 instance
has actually been seen. Update qa/507.out to reflect the corrected
output for the pcpcmd archive.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit fbf39978f3ea34aced3d1a4f3f8866ad19b9a882
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 17:53:21 2026 +1000
qa/group: add local (group) for test 1675
commit 97ee94370a723087c49af3a5a3448f32692fd051
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 17:52:11 2026 +1000
qa/1675: rework archive iterartion
commit ad58a579f90f81f6332a9f87a98b92388243de98
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 17:38:25 2026 +1000
qa/1559 and qa/1670: rework archive iteration
commit aabd29c3eec108fbd6097abc87d913c0ac1c3148
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 16:16:28 2026 +1000
libpcp_import: prevent use-after-free on an error path (covscan)
commit 47d1b9b16c0ab8cfd60f07dc06fd39796de3ad09
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 15:16:56 2026 +1000
pmdards, qa: rds modules use psutil module which is not always available
commit 1edbb6f655240f6da4264bbe6f84a7950874e58f
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 15:16:26 2026 +1000
build: add top-level gitignore for git worktrees
commit c90d32654e1e3b05792a0dd4b5d31b4944d214f6
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 11:43:42 2026 +1000
libpcp_import: fix two segfaults in pmiStart and check_indom
pmiStart: realloc() does not zero the new slot, so fields added to
pmi_context by recent commits (max_volume_bytes, on_volume_rotate,
tool_name) were uninitialised. A non-zero garbage max_volume_bytes
caused _pmi_put_result() to call on_volume_rotate through a garbage
function pointer, segfaulting callers such as collectl2pcp (qa/536).
check_indom: addindom() stores direct pointers from the pmi_context
indom name array into the hash. A subsequent pmiAddInstance() realloc()
can move that array, leaving dangling pointers in the hash. On the next
write, __pmLogGetInDom() returns these stale namelist pointers, and the
strcmp() in pmaDeltaInDom() crashes. Fix by passing __pmDupLogInDom()
copies (with PMLID_INSTLIST|PMLID_NAMELIST|PMLID_NAMES) to the hash so
it owns stable independent copies of the name strings.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 79dfe4be7ef2f4057dbb27050902c28239c547e0
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 24 11:25:34 2026 +1000
pmdadb2: address coderabbit review of Db2 v12 fixes
Rename db2.instance.platform to db2.instance.build_level to match what
is actually reported: BLD_LEVEL from SYSIBMADM.ENV_INST_INFO is a build
identifier that encodes architecture, not a platform descriptor. Update
pmlogconf.summary to reference the new metric name.
Replace 'SELECT COUNT(*) ... FETCH FIRST 1 ROW ONLY' with
'SELECT 1 ... FETCH FIRST 1 ROW ONLY WITH UR' in db2_register_user_tables.
COUNT(*) processes all matching rows before returning even with FETCH FIRST,
inflating ROWS_READ and TABLE_SCANS counters on the tables the PMDA is
trying to report. SELECT 1 WITH UR accesses a single row with uncommitted
read, stops immediately, and avoids lock contention.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 951ebc2bf43ba1577333d9d3c0413d65454fbd1b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 07:20:13 2026 +1000
assorted: pander to (different!) awk on macOS
Throughout the known (GNU) awk universe, this works:
awk 'END { f = "/foo"; print >"/tmp" f }' </dev/null
but on macOS this produces a "awk: syntax error"
However, this works for all versions of awk:
awk 'END { f = "/foo"; print >("/tmp" f) }' </dev/null
modified: qa/1633
modified: qa/1674
modified: qa/671
modified: qa/681
modified: qa/new
modified: qa/new-dup
modified: qa/new-grind
modified: qa/src/mv-me
modified: src/ctl-tools/ctl-tools.sh
commit f99906afd739f5d3677e7d4033cfc3145d19d6be
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 07:00:56 2026 +1000
src/pmdas/nvidia/rewrite.conf: (new) add, missed in previous commit
commit 2b5c9d14c019807d04ebad169183fdd6288ff093
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 24 06:50:16 2026 +1000
nvidia PMDA: metadata changes to use extra units
For power and temperature.
+ pmlogrewrite rules and qa for this
+ updated recipe for recreating qa/archives/nvidiagpu archive
commit d4941899e872b71c4ba4f1f3ea4e0aa814ef073a
Author: Jan Kurik <jkurik@redhat.com>
Date: Tue Jun 23 21:59:14 2026 +0200
Fix db2.table metrics by registering tables on the PMDA connection
MON_GET_TABLE only lists tables after the monitoring connection has
accessed them, so db2.table.* was always empty despite application
activity. Probe user tables from SYSCAT on connect, reconnect, and
before table refreshes so per-table counters are populated. Also remove
the stub db2.table.deadlocks metric, which is not available in
MON_GET_TABLE and was misleading when hardcoded to zero.
commit a0e1e35ab40c5458a9e70b007f15ac19816f0282
Author: Jan Kurik <jkurik@redhat.com>
Date: Tue Jun 16 21:03:11 2026 +0200
Reworked number of passed parameters
To make pylint happy, the number of parameters passed to
db2_refresh_instanced() has been reworked.
commit f8f891404aae8343ec6b6e36bfa5fe2c25857d86
Author: Jan Kurik <jkurik@redhat.com>
Date: Tue Jun 16 17:18:10 2026 +0200
pmdadb2: fix Db2 v12 MON_* column and view compatibility
Update SQL for Db2 12 (TBSP_NAME, ACT_COMPLETED_TOTAL,
SYSIBMADM.ENV_INST_INFO, transaction log byte fields), report zero for
unavailable per-table deadlocks, and only drop connections on
communication failures.
commit 1c256b85970681fc1df422035aabe0a2e8da7d3f
Merge: 451e5366 9bceddfb
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 23 14:48:59 2026 +1000
Merge branch 'main' into pmi-append-mode
commit 451e5366e4f57c373da73e08d9ab0776f7967a39
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 23 08:52:30 2026 +1000
libpcp_import: build, docs, qa and comments updates on code review
commit 9bceddfbadff601341cbb74995542feead19366b
Merge: e9bbdb8b 1ac9652b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 10:57:37 2026 +1000
Merge pull request #2629 from kmcdonell/wip
QA updates, retire some PMDAs, small extra units related changes
commit a6c5e2ef897d4be5c0dc2a86996602790cd717e7
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 11:58:49 2026 +1000
pcp.pmi, LogImport: add wrappers for pmiSetZoneinfo and pmiSetImportProgram
Add Python ctypes declarations and method implementations for the two
new single-context pmiSet* APIs added on this branch:
pmiSetZoneinfo(zoneinfo) - set Olson timezone from zoneinfo string
pmiSetImportProgram(tool, ...) - register import program with pmdapmimport
Add Perl XS declarations for the same two functions. pmiSetVolumeSize
is omitted from Perl as its callback argument has no natural XS mapping.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit e379b2ec1ff17127e7ad212aad08960e6d40038e
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 10:57:36 2026 +1000
libpcp_import: add pmiSetImportProgram() for import tool registration
pmiSetImportProgram(tool, version, args, archive) writes tool identity
to PCP_IMPORT_DIR/{tool} so pmdapmimport can serve pmimport.* metrics.
PCP_IMPORT_DIR is a new pcp.conf variable (configure --with-importdir,
default /run/pmimport) that is created root:root 0755 by packaging.
The file is opened with O_NOFOLLOW|O_CLOEXEC to prevent symlink
substitution and fd leakage; O_TRUNC handles restart after unclean exit.
pmiEnd() removes the file on clean archive close so pmimport.* metrics
accurately reflect which tools are currently recording.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 1f5019adf948adf34bd65bc8c90906e1d7005b32
Author: Nathan Scott <nathans@redhat.com>
Date: Fri Jun 19 18:41:57 2026 +1000
libpcp_import: eliminate .meta bloat in append-mode archives
Three sources of repeated metadata writes in PMI_APPEND mode:
Indoms: check_indom() had no dedup check so every append session
re-wrote all indom records regardless of whether membership had
changed. For timer-driven collectors like sadc this caused O(N×S)
.meta growth where N is the number of processes and S is the number
of sessions per day.
Fix: compare the registered indom against the most recent entry in
hashindom (populated by __pmLogLoadMeta on append open). For v3
archives use pmaDeltaInDom() — the same helper pmlogger uses — to
write a compact TYPE_INDOM_DELTA record when membership changes, and
update the hash with the full indom afterwards so the next comparison
starts from the correct state. For v2 archives use pmaSameInDom()
and fall back to full indom writes. Link -lpcp_archive for access
to pmaDeltaInDom() and pmaSameInDom().
Help text: _pmi_put_text() reset meta_done=0 each session via
pmiStart inherit, causing all help text to be re-written on every
append. Fix: check __pmLogLookupText() before writing; skip if
content is unchanged.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 930460a76fff623cd47574434835c69f561f85d9
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 18 10:51:15 2026 +1000
libpcp_import: add pmiSetZoneinfo() for v3 archive Olson timezone
PCP v3 archives have a 'zoneinfo' label field for the full Olson
database timezone identifier (e.g. "Australia/Brisbane"), which gives
tools DST-correct replay without ambiguity. pmiSetTimezone() only
sets the POSIX abbreviated form ("AEST-10") and was incorrectly
clearing zoneinfo when applying it to the label.
Add pmiSetZoneinfo(const char *value) which sets the zoneinfo field
independently, modelled on pmiSetTimezone(). Passing NULL auto-detects
the local Olson name via __pmZoneinfo() (libpcp tz.c), which handles
both the /etc/localtime symlink case and the recursive file-content
matching fallback.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit d8a186ab6be04b793db158c6c2643355b486996c
Author: Nathan Scott <nathans@redhat.com>
Date: Wed Jun 17 14:08:06 2026 +1000
libpcp_import: add pmiSetVolumeSize() for automatic data volume rotation
Add pmiSetVolumeSize(size_t max_bytes, void (*on_rotate)(const char *))
to libpcp_import. After each successful pmiHighResWrite() or pmiWrite()
call, if the current data volume file size meets or exceeds max_bytes the
library closes the current volume, opens the next numbered volume (writing
a new label), and invokes the caller's callback with the path of the
just-closed volume so compression or other post-processing can be arranged.
Passing max_bytes=0 disables rotation (the default).
Guard: pmiSetVolumeSize() rejects a threshold at or below the on-disk
label size for the configured archive version. Accepting a sub-label
threshold would cause a rotation cascade since every new volume's label
immediately exceeds the threshold. The check uses the public pmapi.h
field-width constants to avoid a dependency on the file-static
__pmLabel_v2/v3 types.
Also: replace the magic number 100000 in _pmi_put_result() with the
named constant PMI_FLUSH_INTERVAL throughout archive.c.
Also: pair consecutive int fields in pmi_context (private.h) to eliminate
four bytes of alignment padding before each pointer on 64-bit platforms.
The struct is private to libpcp_import so there is no ABI constraint.
QA: check_volsize.c exercises rotation, callback, size-bound and label-size
guard; wired into qa/1693 (the existing PMI_APPEND test) with a
pmlogcheck step to verify multi-volume archive integrity.
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 63b681aeeb4bed12861309b55db5aa9f96d943bc
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 17:10:59 2026 +1000
pcp.pmi: fix pmiWrite when sec=0 and usec is omitted
The condition 'if sec and not usec' fails when sec==0 because 0 is
falsy, leaving usec as None and causing pmiWrite2(0, None) to raise
TypeError against its c_int argtypes. Change to 'if usec is None'
so the datetime/float dispatch and the usec=0 fallback always run
when usec was not supplied by the caller.
Add a pmiWrite(0) call at the start of qa/src/test_pmi.python to
cover this path, and update qa/708.out accordingly.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 90d2c1846eae89616214e8b16eec9a795e5bd51e
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 16:31:19 2026 +1000
libpcp_import: address coderabbit review findings
pmiPutAtomValueHandle: validate atom is non-NULL before passing to
_pmi_stuff_atomvalue, returning PM_ERR_ARG to avoid a segfault on
PM_TYPE_STRING metrics where atom->cp would be dereferenced.
archive.c _pmi_do_desc: when a descriptor for this PMID already exists
in the archive, verify it is compatible before skipping the write.
A package upgrade may have corrected an incorrect type, semantics,
instance domain or units for a metric, in which case the old archive
cannot be extended with new data. Return PM_ERR_LOGCHANGETYPE,
PM_ERR_LOGCHANGESEM, PM_ERR_LOGCHANGEINDOM or PM_ERR_LOGCHANGEUNITS
as appropriate so the caller has a precise diagnosis.
qa/group: add local group to qa/1670 so the standard local sweep
picks up the new append-mode coverage.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit af52c92d0181a3fa86b3a5db7f060bc69f2be19f
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 13:01:20 2026 +1000
qa: makefile cleanups, removing unneeded macros
commit e0014ef6f728945828d91b8efea62f2faeedfe92
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 11:04:27 2026 +1000
pcp.pmi: add type annotations to pmiLogImport API
Annotate all method signatures in the pmiLogImport class with PEP 484
type hints, compatible with the project's Python 3.6 minimum.
Return types reflect actual Python-level values (int status, pmID,
pmInDom, pmUnits, None). String parameters are annotated as str since
bytes encoding is an internal detail. pmiPutValue/pmiGetHandle inst
parameters are Optional[str] to reflect the None-for-singular-metric
convention. pmiWrite sec is Union[int, float, datetime] matching its
three-way dispatch. Imports Optional and Union from typing.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 1de184d6b6d22ffae84199402798ca9fa209364a
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 10:56:00 2026 +1000
man: add Python SYNOPSIS to all pmi* man pages
Add a Python SYNOPSIS section to each libpcp_import man page that has
a Python binding in src/python/pcp/pmi.py. The Python API wraps the C
library via the pmi.pmiLogImport class; methods are called on an
instance. Multi-line call signatures use the same continuation-indent
style as the existing Perl SYNOPSIS sections.
pmiputresult.3 gains a Python-only synopsis (Perl has no binding for
pmiPutResult/pmiPutHighResResult). pmisetversion.3 gains both Perl and
Python synopses, fixing a pre-existing omission. pmiusecontext.3 and
pmierrstr.3 are left without a Python synopsis as pmi.pmiLogImport
handles context switching internally and surfaces errors as exceptions.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit 91f772425c09f3d2aedffcf8f4dbe0ba88267fd5
Author: Nathan Scott <nathans@redhat.com>
Date: Thu Jun 4 10:43:57 2026 +1000
libpcp_import: add pmiPutAtomValueHandle to public API
Add pmiPutAtomValueHandle(int handle, pmAtomValue *atom) as a binary
counterpart to pmiPutValueHandle, passing values directly via the
pmAtomValue union rather than as strings requiring parsing.
Refactor stuff.c to extract _pmi_alloc_vp and _pmi_alloc_valblock
static helpers, eliminating the duplicated result/vset/vp setup and
pmValueBlock allocation that both _pmi_stuff_value and the new
_pmi_stuff_atomvalue share.
Update pmiputvaluehandle.3 and exercise the new function in
qa/src/check_import.c covering the INSITU path (U32), DPTR path
(64-bit), bad-handle and duplicate-value error cases.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Nathan Scott <nathans@redhat.com>
commit ec9d164178b1cc4a388bdc1dcd4d5968885c1b2a
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 2 12:26:49 2026 +1000
libpcp_import, libpcp: improve archive append mode and public API
logutil.c: rework __pmLogOpenAppend() to use __pmLogFindOpen() for
volume discovery. Previously we iterated using lcp->numti (temporal
index count) as a starting hint; this bypassed the canonical readdir +
__pmLogAddVolume path. Now:
- __pmLogFindOpen() performs the directory scan, correctly setting
lcp->name, lcp->minvol and lcp->maxvol via __pmLogAddVolume.
- .meta and .index handles from __pmLogFindOpen (read mode) are used
to validate the archive label and load the temporal index for
lcp->endtime, then closed and reopened in r+ mode for writing.
- The highest data volume (lcp->maxvol) is opened in r+ mode so its
label is validated with __pmLogChkLabel before appending, matching
the consistency checking done by __pmLogChangeVol in the read path.
- acp->ac_flags |= PM_CTXFLAG_LAST_VOLUME signals that we are at the
most recent volume, following the __pmLogOpen convention.
import.h: expose pmiWrite2, pmiHighResWrite and pmiPutHighResResult as
the preferred Y2038-safe interfaces. pmiWrite(int,int) is marked
deprecated.
pmiwrite.3: document pmiWrite, pmiWrite2 and pmiHighResWrite on one
page; note pmiWrite as deprecated and pmiHighResWrite as preferred.
pmiputresult.3: document pmiPutResult and pmiPutHighResResult together;
note pmiPutHighResResult as the preferred nanosecond-resolution variant.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit b8a7fbb2b71ac00d91585bfff6672602bfe87e40
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 1 16:49:44 2026 +1000
libpcp_import: expose pmiWrite2 and pmiHighResWrite in public API
pmiWrite2(int64_t sec, int usec) and pmiHighResWrite(int64_t sec, int nsec)
were already implemented and exported from the shared library but were
missing from the public import.h header, making them unusable by callers
without forward-declaring them manually.
Add declarations for both and deprecate pmiWrite(int, int) with a comment:
its 32-bit seconds argument is not Y2038-safe and callers should migrate to
pmiHighResWrite() for nanosecond-resolution timestamps or pmiWrite2() for
microsecond resolution.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 2fe039df7d848390a6491a4eb1e5c49ca6ea5e64
Author: Nathan Scott <nathans@redhat.com>
Date: Tue Jun 9 11:20:46 2026 +1000
libpcp, libpcp_import: implement an archive append mode of operation
Rename the second argument of pmiStart() from the implicit boolean
'inherit' to an explicit 'flags' field. Named constants are now
provided in import.h:
PMI_INHERIT (0x1) - existing behaviour: inherit metric definitions
from the current context into the new one
PMI_APPEND (0x2) - open an existing archive for appending instead
of creating a new one
pmiStart() with PMI_APPEND opens the named archive if it already
exists and positions all file handles at end-of-file, loading the
existing metadata so that subsequent pmiWrite() calls append new
records after the last existing record. If the archive does not
yet exist the flag is silently ignored and a new archive is created,
making PMI_APPEND safe for unconditional use in timer-driven
collectors (e.g. sadc) on first invocation.
Add QA test 1693 to exercise the append mode.
Signed-off-by: Nathan Scott <nathans@redhat.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
commit 1ac9652bc305d98dd733c13d7eafead8422dd59d
Merge: a2c3f51c 28905524
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 06:59:05 2026 +1000
Merge branch 'main' into wip
commit 28905524ea695b3a1e6dbcdd11f3a075475b9f10
Author: Ken McDonell <kenj@kenj.id.au>
Date: Tue Jun 23 06:34:06 2026 +1000
rpm packaging: obsolete (remove) mic and roomtemp PMDA packages
commit a2c3f51cb152e50a91f97d198d65f0250147f68b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:38:47 2026 +1000
qa/archives/mk.common: tighten up shell variable quoting
commit 668623e3371ec5022cf3436e9b3897820a92da39
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:27:02 2026 +1000
qa/archives/mk.amdgpu: small fixups
As spotted by @coderabbitai.
commit 47ae945b5458de0e4059ef69f1c8de41eb01fe0b
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 21:21:49 2026 +1000
Update qa/1559
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
commit e9bbdb8b938f3f2644fad5a21b2cee02faf790a4
Author: Nathan Scott <nathans@redhat.com>
Date: Mon Jun 22 17:47:26 2026 +1000
qa: fix regression in qa/1543 by filtering changed label
commit 0bd8521c87609701e44b371db4173a374c0d307f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 17:21:20 2026 +1000
qa/archives/GNUmakefile: package the amd-smi output files
Needed by qa/1674.
commit c5ae751ede574f69dc86e1a3d7892cbd73583a59
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:57:12 2026 +1000
qa/archives/GNUmakefile: make sure renamed archives are packaged
commit c12caed0a4f10701b5262633f109df3cbe362704
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:51:09 2026 +1000
qa/archives/nvidiagpu.*: renamed to qa/archives/nvidiagpu-0.*
In preparation for extra units changes for nvidia PMDA.
commit 9a53571da90f56d89dfaa77e1c5b23650c7d012e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 15:43:37 2026 +1000
qa/archives: mk.* rework
- move to a archive-<version> style of naming so we can generate
multiple archives from the mk.foo scripts to deal with the
evolution of the underlying PMDAs (triggered by amdgpu and the
extra units and metadata changes there)
- convert mk.nvidiagpu to use mk.common (in preparation for
extra units changes for the nvidia PMDA)
commit 01d5079fa81b35300fb292a23f4913afb47e549e
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 09:00:48 2026 +1000
qa: track name change for amdgpu qa archive(s)
tests: 1559, 1669, 1670
commit 3b37af8a06ea213b9fa8f2fb5f4e3697ff4418c0
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 09:00:09 2026 +1000
src/pmlogrewrite/gram.y: fix small memory leak from extraunits clause
Found by qa/1670.
commit df71b48f5185d5ae6e8c42c10651fbfd7e007c59
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:58:18 2026 +1000
src/pmdas/amdgpu/rewrite.conf: rework for extraunits
Because this rewrite file includes the PMNS <--> PMID fixups,
clauses using metric names are potentially ambiguous and were
confusing pmlogrewrite. Changing to PMIDs for the new extraunits
changes fixes the problem.
commit b1494f97eb1ebb5c9f237dd2e8b98a487621e1f7
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:56:19 2026 +1000
qa/common: prefer diffuse for graphical diffs, if available
For me (on bozo), meld is really slow (to exit), so switching to diffuse.
commit 7dac1fc4662fff14f5aa6d17ce04057ccea4b9b2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:34:37 2026 +1000
qa/GNUmakefile & qa/GNUmakefile.install: the qa mic subdir has been removed
commit 7d44e0c3b22a91033822d47a8f76e0d17e9ef8ed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 08:02:56 2026 +1000
Retire the roomtemp PMDA
I built this PMDA more than 30 years ago as a proof of concept one
night in a hotel room while on a PCP speaking tour for SGI ... I
no longer have the Dallas one-wire sensor and a PMDA that needs one
temperature sensor plugged into a serial port is probably not that
widely used.
commit 8eba4293ea03392c0db5025efdedfaae6069616a
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 07:46:11 2026 +1000
Retire the mic PMDA
The hardware this PMDA depends upon (the Intel® Xeon Phi™ Coprocessor)
stopped shipping almost 9 years ago, so this PMDA is very unlikely to
be of further use.
commit 3b8ca296fba6d27f1d9877622cdf56a22207a022
Author: Ken McDonell <kenj@kenj.id.au>
Date: Mon Jun 22 07:27:41 2026 +1000
qa/1187: track name change for original amdgpu QA archive
commit dde1336ec3954b10d64edf1566026eabe7767911
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sun Jun 21 07:49:12 2026 +1000
debian/control.pcp: update pcp-conf Breaks: and Replaces:
/etc/pcp/indom.conf moved from pcp to pcp-conf.
commit 13767bad0d83923f325957a0d2e994f18d07fbc6
Merge: e7355308 5a35adf6
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 12:23:36 2026 +1000
Merge pull request #2627 from kmcdonell/wip
Add amdgpu PMDA QA test and fix clock metrics unit conversion
commit 5a35adf60d1b786b5b8683652b260ac9295fa3b1
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 10:38:11 2026 +1000
pmdas/amdgpu: small rework
- better error handling for store method
- don't include fake.c in build
commit 525b638cc417b60bc8fa71b9e1a2ec50545739f9
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 10:16:37 2026 +1000
qa/1674: check for failure messages from awk
Thanks coderabbitai.
commit e8d92720beb844834e49041b415a13fbe8f5ecf3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 09:57:20 2026 +1000
pmnsmerge.static: rework based on feeedback from coderabbitai
Review in the context of PR 2627.
Make build and use of pmnsmerge.static consistent.
commit f83f0d4802be32714d7a9267ef7283d7682866ed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:50:50 2026 +1000
src/pmdas/amdgpu: improvements
- add amdgpu.control.debug to turn debugging on/off while running
- lots of additional diagnostics under -Dappl1 guards
- fix max clock values - they appear to be KHz not Mhz
- change to extra units for power and temperature
commit d0c9996c6b333e6bfddc8b50891e79e5aa15090e
Merge: 0ee8019a b25dbfda
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:44:20 2026 +1000
Merge branch 'main' into wip
commit b25dbfda794d77d2ba436c6482b67d6fcc3bf9dc
Merge: e7355308 26b62109
Author: Ken McDonell <kenj@kenj.id.au>
Date: Sat Jun 20 08:41:41 2026 +1000
Merge branch 'amdgpu'
commit 0ee8019a5bc8dcffa62d19a2c8ca2e2182fc017a
Merge: 329ee605 e7355308
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:22:38 2026 +1000
Merge branch 'main' into wip
commit e7355308175f80cbb99ec07936edbf1c4262ad27
Merge: 8cddb009 b440f2c3
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:20:30 2026 +1000
Merge pull request #2610 from kmcdonell/amdgpu
Updates for pmlogrewrite and amdgpu PMDA
commit 26b621095fbe23753f00e59015b0f218791fdbed
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 21:18:19 2026 +1000
amdgpu PMDA: updated qa and test archive
commit 329ee605fc3f1f0e4b45f2f4974fe419ee8f6860
Author: Ken McDonell <kenj@kenj.id.au>
Date: Fri Jun 19 06:32:13 2026 +1000
pmnsmerge: build pmnsmerge.static and use it to create local.pmns
commit 8cddb009b1db532a5ffcdbbf1c7007fb6920eea0
Merge: cf8cdf4b bf7adf23
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 21:13:33 2026 +1000
Merge branch 'main' of ../pcp
commit bf7adf233581457b3d08515213d0622812e1995f
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 17:17:02 2026 +1000
qa/1544: pmlogger may be a drive-by victim
Dinking with pmproxy may change the metrics from the pmproxy PMDA
which in turn may cause the primary pmlogger to exit, and if there is
no systemd ambulance to apply CPR, and if check.callback is in play
then this and some (large) number of following tests fail because the
primary pmlogger is not running.
commit 8d2f05736b3e6b7cbb372efa3326adb03e00eb92
Author: Ken McDonell <kenj@kenj.id.au>
Date: Thu Jun 18 17:15:20 2026 +1000
qa/024: cifs PMDA recently appeared, but it may not be there
Filter away, Mr. Magoo.
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 b440f2c3c15ffcc8df2795d6ec14ee2869155221
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:55:56 2026 +1000
src/pmdas/amdgpu: move fake library routines to a separate source file
Move fake routines to (new) fake.c and cleanup drm.c.
commit f52c123a2c60cfb0bd0e331bd3c411866430b27d
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:47:23 2026 +1000
src/pmdas/amdgpu/drm.c: small tweaks in fake routines implementaion
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 ac8e96c8b1fa4d4abc68c448c9a75ca1eaec02fd
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:28:39 2026 +1000
src/pmdas/amdgpu/drm.c: fix calloc() botch in fake library routines
Found by valgrind.
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 88bb5db665e6e41eb63475a4a77ab943b394dd83
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:10:05 2026 +1000
src/pmdas/amdgpu/amdgpu.c: fix fatal problem with PMID changes
Move GPU metrics from cluster 2 to cluster 3 exposed a quirk in
the implementation ... none of the cluster 3 metrics were being
refreshed, so no values were available.
commit b2208e689a3bc5377456bd15d139e3f83e5059a2
Author: Ken McDonell <kenj@kenj.id.au>
Date: Wed Jun 17 14:05:37 2026 +1000
src/pmdas/amdgpu/drm.c: hackery to support development without hardware
Fake minimal implementation of the drm*() and amd*() library routines
that the PMDA needs ... allows testing if you don't have AMD GPU
hardware.
Obviously this is disabled by default 8^)
There are 4 open security issues in bookworm.
You can find information about how to handle these issues in the security team's documentation.