PCPCompat,
pcp-collectl,
pmmgr,
pmwebd -
backward-compatibility in the Performance Co-Pilot (PCP)
The Performance Co-Pilot (PCP) is a toolkit designed for monitoring and managing
system-level performance. These services are distributed and scalable to
accommodate the most complex system configurations and performance problems.
In order to achieve these goals effectively, protocol and on-disk compatibility
is provided between different versions of PCP. It is feasible (and indeed
encouraged) to use current PCP tools to interrogate any remote, down-rev or
up-rev
pmcd(1) and also to replay any historical PCP archive (the PCP
testsuite includes PCP archives created over 20 years ago!).
From time to time the PCP developers deprecate and remove PCP utilities,
replacing them with new versions of utilities providing comparable features.
This page describes replacement utilities for historical PCP tools.
PCP provides
python(1) interfaces for the
PMAPI(3) (Performance
Metrics API), the
PMDA(3) API (Performance Metrics Domain Agents), the
mmv_stats_register(3) API (Memory-Mapped Values) and PCP archive log
creation
LOGIMPORT(3) API.
With
python version 2 reaching end-of-life in 2020 we have deprecated the
python version 2 interfaces in PCP (shipped, but no longer supported).
In the next major release of PCP (v7) version 2 support will be retired
(completely removed). All PCP APIs and
python-based tools support
python version 3 and have for several years - upgrading is strongly
recommended.
PCP provides optional graphical user interfaces built on the cross-platform Qt
library, particularly
pmchart(1) and
pmtime(1).
With Qt v4 reaching end-of-life in 2015 we have removed support for all versions
before Qt v5. In addition, some features are missing in early versions of Qt
v5 that are now mandatory when building and using PCP Qt tools. As a result
the minimum required version of Qt for PCP v6 and beyond is now Qt 5.6.
Versions of PCP before v6 used a combination of both Mozilla NSS (Network
Security Services) and OpenSSL for the encryption component of the secure
sockets functionality. Starting with PCP v6 this has been simplified into
exclusive use of OpenSSL for all use of encryption across PCP. This change
affects configuration of optional functionality in
pmcd(1) and
PMAPI(3) client tools using secure sockets.
The net effect of this change is that encryption is configured in the same ways,
using the same certificates, across the HTTPS functionality in
pmproxy(1), as well as the encrypted PCP protocol functionality between
pmcd,
pmproxy and
PMAPI client tools. Additionally, the
Redis service used by
pmseries(1) and
pmproxy also exclusively
uses OpenSSL, and in a manner similar to PCP, which makes administering these
services significantly simpler.
The
sar2pcp(1) and
iostat2pcp(1) utilities are deprecated, and
will be retired in a future version of PCP (v7). This is being replaced by
native support for generating PCP archives within the tools of the
sysstat package (which provides
sar itself, as well as the
sadf utility which produces PCP archives via the
-l option).
Earlier versions of PCP (prior to v5.1.1) provided a shell script that was used
internally by
pmlogconf(1), located in the
PCP_BINADM_DIR
directory, named
pmlogconf-setup. This script has been retired. The
equivalent functionality remains available in the unlikely event it should be
needed via the
-s or
--setup option to
pmlogconf(1).
The version 1
pmlogconf-setup configuration file format (from IRIX) was
also retired in this release, after more than 10 years of automatic transition
to version 2 format by
pmlogconf.
The standalone PCP daemon manager
pmmgr has been retired from PCP v5.2.0
onward. It was phased out in favour of the simpler
pmfind(1) service
for setting up
pmie(1) and
pmlogger(1) ``farms'' of discovered
PCP collector systems with
pmfind_check(1). The new mechanisms,
especially when integrated with
systemd, require no additional daemons
and are better integrated with the
pmie and
pmlogger service
management used elsewhere in PCP.
The
pcp-collectl utility has been superceded by
pmrep(1) from PCP
v5 onward.
The equivalent of
pcp-collectl subsystem reporting is achieved as
follows:
- pmrep :collectl-sc
- Processor subsystem view.
- pmrep :collectl-sm
- Memory subsystem view.
- pmrep :collectl-sd
- Aggregate disks view.
- pmrep :collectl-sD
- Per-disk-device view.
- pmrep :collectl-dm-sD
- Device mapper view.
- pmrep :collectl-sn
- Network subsystem view.
The standalone web applications packaged with older PCP versions have been
superceded by
grafana-server(1) with the
grafana-pcp plugin
https://github.com/performancecopilot/grafana-pcp.
This plugin provides an implementation of the Vector application, as well as
data sources for
pmdabpftrace(1) (
bpftrace(8) scripts)
and
pmseries(1) (fast, scalable Redis-based time series analysis).
The
pmwebd daemon has been superceded by
pmproxy(1) from PCP v5
onward.
By default,
pmproxy will now listen on both its original port (44322) and
the PCP web API port (44323) when the time series support is built.
pmproxy provides a compatible implementation of the live
PMWEBAPI(3) interfaces used traditionally by the Vector web application
(see the ``PCP-WEBAPPS'' section). It also provides extensions to the original
pmwebd REST APIs (such as derived metrics, namespace lookups and
instance domain profiles), support for the HTTPS protocol, and fast, scalable
time series querying using the
pmseries(1) REST API and
redis-server(1).
The partial Graphite API emulation provided by
pmwebd has not been
re-implemented - applications wishing to use similar services could use the
scalable time series REST APIs described on
PMWEBAPI(3).
pcp(1),
pmcd(1),
iostat2pcp(1),
sar2pcp(1),
pmrep(1),
pmfind(1),
pmfind_check(1),
pmlogconf(1),
pmproxy(1),
pmseries(1),
pmdabpftrace(1),
python(1),
redis-server(1),
grafana-server(1),
mmv_stats_register(3),
LOGIMPORT(3),
PMAPI(3),
PMDA(3) and
PMWEBAPI(3).