[zeromq-dev] Statistics protocol v0.1

Andrew Hume andrew at research.att.com
Fri Jun 1 13:48:43 CEST 2012

comments interpolated below.

On Jun 1, 2012, at 1:40 AM, Marten Feldtmann wrote:

> Ah,
> I was not precise enough ...
>> Why you don't use pub/sub?
> We use pub/sub .... via multicast in our system ... sorry, that I did 
> not make that clear.
>> What it consists of?
>>> ->  location (computer) of the process sending this information
>>> (ip-number - no name)
>> Why do you use IP number instead names? I believe
>> it's internal internal policy in your company or somesuch.
>> Or is it just debugging info, along with node name?
>>> ->  name of the process
>>> ->  process id
>> Is PID just a debugging info, or is it meaningful? (do you aggregate
>> info from several processes?)
> Well I have to differentiate, where the statistic informations come from 
> and due to the fact, that several instances of the same system can run 
> on one computer I have to add an additional information, which makes the 
> definition of the running program more or less possible.

in my system, i have arranged things so that i can run a cluster of several nodes
all on the one server. these instances are differentiated by the root of their
directory trees. we have a standardised way of munging the process name, instance number,
dir tree root and server into a single string; that is what we use for a name.

>>> ->  start-time of statistic interval (in ASCII to make it more readable
>>> in a format like: 01.06.2012T21:00:00.000+12 .. in that well known
>>> format) and including timezone information.
>> It's interesting from two points:
>> 1. Textual data format may be nicer than unix timestamp. But
>> I'd prefer UTC only timestamp. As it's not intended to be presented
>> to user as is (except for debugging), its easier to deal with UTC
>> timestamps than with diverse timezones.
> Well I like to have an overview over that info and a string is more 
> readable and to get a Unix Timestamp is not that portable and overall 
> easy possible to retrieve.

in my current project we simply use numeric milliseconds since the unix/posix epoch.
in my previous project, we used a pair of routines that converted between unix time
and several string formats. both schemes are equally plausible. but for heaven's sake,
don't reinvent this wheel.

>> 2. We used to send timestamp at the time of sending, not
>> the start of interval. Its easier  to produce, and it's more logical
>> when we send a counter, instead of a rate value (see below).

ugh. what is a statistic? this needs to be defined if these things are to have semantics.
generally, i consider a statistic to be a sequence of events.
a measurement then is putting a cursor in this sequence (specified by a timestamp)
and then representing the events between this timestamp and the previous one.
this is not the only scheme/model, but it avoids worrying about discontinuities
introduced by specifying intervals.

>>> ->  duration length of the statistic interval in milliseconds
>> This one I've obviously missed. Will add shortly.

can you give an example or two? i've never felt a need for this.
if i ever needed to know the intervals, i use an FFT and compute the correct answer.

>>> ->  symbolic name of the statistic producer (0MQ node)
>>> ->  sub-symbolic name of the statistic producer (0MQ node)

why not just a name? why is a two level hierarchy exposed at this level?

>> So, according to the text below, I think that symbolic name
>> it's DNS name of the node, and sub-symbolic name it's name
>> of the subsystem, inside of the process. Am I right?
> Well, we do not do script programming here. We have some Smalltalk 
> systems and within each running Smalltalk system (each is a process 
> within the operating system) ) we have some 0MQ sockets (or node) doing 
> its work/task. After all I would like to find out, what traffic each of 
> these processes/tasks are doing.
> As an example (remember: all of these nodes may run within one Smalltalk 
> image - one OS process, but many, many Smalltalk light processes).

if you care about an entity's name, then it needs to have a name.
then just use it. this is easy. it only gets confusing when people want to
reftrofit some external model onto these names; just treat them as opaque blobs.

> * we have a 0MQ statistic collector node (subscribe) (which itselfs 
> produces statistics also - but only receiving traffic ones). This one 
> collects the statistics info published. Its node type-name is "statsub". 
> We have only up to one statistic collector node in one running process, 
> so there is no need to give this type a subtype name. This node runs 
> only when needed.
> * each process has one 0MQ statistic sending node (publisher). (which 
> itselfs produces statistics also - but only sending traffic ones). Its 
> node type-name is "statpub". We have only one statistic sender node in 
> one running process, so there is no need to give this type a subtype name.
> The same happens for logging information. publish/subscribe and only 
> singletons are within a running process. Type names are "logpub" and 
> "logsub". No sub types needed
> * then we have a domain working node (producing PDF files). (request and 
> reply). This one received commands and sends results - therefore another 
> source for statistics information. There may be several of instances 
> running within ONE process - therefore a subtype is useful (which may be 
> a unique number).
> * Then we have service publishers. Each application (pub/sub) can offer 
> its services to the local network.
> Marten
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Andrew Hume  (best -> Telework) +1 623-551-2845
andrew at research.att.com  (Work) +1 973-236-2014
AT&T Labs - Research; member of USENIX and LOPSA

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120601/6bb81f7f/attachment.htm>

More information about the zeromq-dev mailing list