Poster of Linux kernelThe best gift for a Linux geek
PMCONVSCALE

PMCONVSCALE

Section: C Library Functions (3) Updated: SGI
Local index Up
 

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 */
    void         *vp;   /* void 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.  

SEE ALSO

PMAPI(3), pmAtomStr(3), pmExtractValue(3), pmFetch(3), pmLookupDesc(3), pmPrintValue(3), pmTypeStr(3) and pmUnitsStr(3).  

DIAGNOSTICS

PM_ERR_CONV

iunit and ounit have different dimensionality, or have inappropriate type

PM_ERR_UNIT

Inappropriate iunit or ounit parameter


 

Index

NAME
C SYNOPSIS
DESCRIPTION
SEE ALSO
DIAGNOSTICS

This document was created by man2html, using the manual pages.
Time: 21:52:35 GMT, April 16, 2011