pmconvscale(3) — Linux manual page
PMCONVSCALE(3) Library Functions Manual PMCONVSCALE(3)
NAME
pmConvScale - rescale a performance metric value
C SYNOPSIS
#include <pcp/pmapi.h>
int pmConvScale(int type, const pmAtomValue *ival,
const pmUnits *iunit, pmAtomValue *oval,
const pmUnits *ounit);
cc ... -lpcp
DESCRIPTION
All performance metric values may be encoded in a pmAtomValue
union, defined as follows;
typedef union {
__int32_t l; /* 32-bit signed */
__uint32_t ul; /* 32-bit unsigned */
__int64_t ll; /* 64-bit signed */
__uint64_t ull; /* 64-bit unsigned */
float f; /* 32-bit floating point */
double d; /* 64-bit floating point */
char *cp; /* char ptr */
pmValueBlock *vbp; /* pmValueBlock ptr */
} pmAtomValue;
The encoding of a performance metric's dimensionality and scale
uses a pmUnits structure; see pmLookupDesc(3).
Given a performance metric value pointed to by ival multiply it
by a scale factor and return the value in oval. The scaling
takes place from the units defined by iunit into the units de‐
fined by ounit. Both input and output units must have the same
dimensionality.
The performance metric type for both input and output values is
determined by type, the value for which is typically extracted
from a pmDesc structure, following a call to pmLookupDesc(3) for
a particular performance metric.
pmConvScale is most useful when values returned via pmFetch(3),
(and possibly extracted using pmExtractValue(3)) need to be nor‐
malized into some canonical scale and units for the purposes of
computation.
As a special case, if all components of the dimension are zero,
then this is treated as synonymous with a ``count'' dimension of
one, and so the ``count'' scale components determine the relative
scaling. This accommodates the case where performance metrics
are dimensionless, without special case handling on the part of
the caller.
DIAGNOSTICS
PM_ERR_CONV
iunit and ounit have different dimensionality, or have in‐
appropriate type
PM_ERR_UNIT
Inappropriate iunit or ounit parameter
SEE ALSO
PMAPI(3), pmAtomStr(3), pmExtractValue(3), pmFetch(3),
pmLookupDesc(3), pmPrintValue(3), pmTypeStr(3) and pmUnitsStr(3).
COLOPHON
This page is part of the PCP (Performance Co-Pilot) project. In‐
formation about the project can be found at ⟨http://www.pcp.io/⟩.
If you have a bug report for this manual page, send it to
pcp@groups.io. This page was obtained from the project's
upstream Git repository
⟨https://github.com/performancecopilot/pcp.git⟩ on 2024-06-14.
(At that time, the date of the most recent commit that was found
in the repository was 2024-06-14.) If you discover any rendering
problems in this HTML version of the page, or you believe there
is a better or more up-to-date source for the page, or you have
corrections or improvements to the information in this COLOPHON
(which is not part of the original manual page), send a mail to
man-pages@man7.org
Performance Co-Pilot PCP PMCONVSCALE(3)
Pages that refer to this page: pcpintro(3), pmapi(3), pmatomstr(3), pmextractvalue(3), pmlookupdesc(3), pmparseunitsstr(3), pmprintvalue(3), pmsemstr(3), pmtypestr(3), pmunitsstr(3)