plucky (3) pmConvScale.3.gz

Provided by: libpcp3-dev_6.3.3-1_amd64 bug

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  defined  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 normalized 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 inappropriate 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).