On Thu, 6 Dec 2007, Brad Nicholes wrote:
> >>> On 12/6/2007 at 5:22 PM, in message > <[EMAIL PROTECTED]>, Matthias > Blankenhaus <[EMAIL PROTECTED]> wrote: > > > > > On Thu, 6 Dec 2007, Brad Nicholes wrote: > > > >> >>> On Wed, Dec 5, 2007 at 3:48 PM, in message > >> <[EMAIL PROTECTED]>, Matthias > >> Blankenhaus <[EMAIL PROTECTED]> wrote: > >> > Hi Brad ! > >> > > >> > Nice meeting you yesterday :-) > >> > > >> > I took a closer look at PCP to see what it uses for the meta level > >> > description for every metric. I thought this might be interesting for > >> > you. Here you go: > >> > > >> > > >> > - Data type: union of all C types, plus blob > >> > - Semantics: counter, instant, descrete > >> > - Units and scale: dimension and scale for space, time, count > >> > > >> > > >> > Here are some examples: > >> > > >> > > >> > kernel.all.load [1, 5 and 15 minute load average] > >> > Data Type: float InDom: 60.2 0xf000002 > >> > Semantics: instant Units: none > >> > > >> > kernel.percpu.cpu.user [percpu user CPU time metric from /proc/stat] > >> > Data Type: 64-bit unsigned int InDom: 60.0 0xf000000 > >> > Semantics: counter Units: millisec > >> > > >> > > >> > For detailed info you can check out "man PMAPI" on any SLES box. > >> > > >> > > >> > Matthias > >> > >> If I am understanding this correctly, this is actually similar in concept > >> to > > the XDR restructuring that I did for gmond. However the metadata and the > > value message are split into two different structures. The metadata is a > > struct that contains the basic metric description elements plus a blob > > (basically. It is really an array of additional elements). The value > > message > > is a union of all of the supported data types. Both message types > > (metadata, > > value) carry a metric ID header struct that defines the host, metric name > > and > > spoof indicator. Since this structure is basically the header for every > > XDR > > message, even before the XDR message type is determined, the host and > > metric > > can be identified. Take a look at lib/protocol.h. > > > > Among other thinks I saw this: > > > > enum Ganglia_value_types { > > GANGLIA_VALUE_UNKNOWN = 0, > > GANGLIA_VALUE_STRING = 1, > > GANGLIA_VALUE_UNSIGNED_SHORT = 2, > > GANGLIA_VALUE_SHORT = 3, > > GANGLIA_VALUE_UNSIGNED_INT = 4, > > GANGLIA_VALUE_INT = 5, > > GANGLIA_VALUE_FLOAT = 6, > > GANGLIA_VALUE_DOUBLE = 7, > > }; > > > > What does int, short amount to for various platforms ? I think to > > make this portable you might want to make it explicit to avoid any > > integral promotion problem, e.g. have INT32, UINT32, INT64, UINT64 types. > > > > But maybe, I misunderstood the concept. > > > > > > True, I guess I am assuming that XDR would take care of that > (http://en.wikipedia.org/wiki/External_Data_Representation). The point of > using XDR is to allow the data packets to be transmitted across different > platforms. So far in my testing I have been exchanging packets between 64 > and 32 bit machines without any problem. If I am assuming too much, then yes > the data types will have to be more granular. Of course we are also limited > by the data types that XDR allows you to use when describing a packet. > Makes sense ! From RFC1014 it looks like XDR provides four integer type: [unsigned] integer : 32 bit [unsigned] hyper integer: 64 bit Matthias > Brad > > > ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers