Package org.jgroups.protocols
Class TIME
- java.lang.Object
-
- org.jgroups.stack.Protocol
-
- org.jgroups.protocols.TIME
-
public class TIME extends Protocol
Protocol measuring delivery times. Can be used in the up or down direction JIRA: https://issues.redhat.com/browse/JGRP-2101- Since:
- 4.0
- Author:
- Bela Ban
-
-
Field Summary
Fields Modifier and Type Field Description protected AverageMinMax
avg_up_batch_size
protected AverageMinMax
down_delivery
protected boolean
down_msgs
protected boolean
up_batches
protected AverageMinMax
up_delivery_batches
protected AverageMinMax
up_delivery_msgs
protected boolean
up_msgs
-
Fields inherited from class org.jgroups.stack.Protocol
after_creation_hook, down_prot, ergonomics, id, log, stack, stats, up_prot
-
-
Constructor Summary
Constructors Constructor Description TIME()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static void
add(AverageMinMax avg, long num)
protected static double
avgTimePerMessageIncludingDelay(int num, long time)
java.lang.Object
down(Message msg)
A message is sent down the stack.void
resetStats()
java.lang.Object
up(Message msg)
A single message was received.void
up(MessageBatch batch)
Dividing the delivery time for a batch by the batch size is problematic, e.g.-
Methods inherited from class org.jgroups.stack.Protocol
accept, afterCreationHook, destroy, down, enableStats, getConfigurableObjects, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getLog, getName, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getUpServices, getValue, init, isErgonomics, level, parse, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStatistics, setDownProtocol, setErgonomics, setId, setLevel, setProtocolStack, setSocketFactory, setUpProtocol, setValue, start, statsEnabled, stop, up
-
-
-
-
Field Detail
-
up_delivery_msgs
protected final AverageMinMax up_delivery_msgs
-
up_delivery_batches
protected final AverageMinMax up_delivery_batches
-
avg_up_batch_size
protected final AverageMinMax avg_up_batch_size
-
down_delivery
protected final AverageMinMax down_delivery
-
down_msgs
protected boolean down_msgs
-
up_batches
protected boolean up_batches
-
up_msgs
protected boolean up_msgs
-
-
Method Detail
-
resetStats
public void resetStats()
- Overrides:
resetStats
in classProtocol
-
down
public java.lang.Object down(Message msg)
Description copied from class:Protocol
A message is sent down the stack. Protocols may examine the message and do something (e.g. add a header) with it before passing it down.
-
up
public java.lang.Object up(Message msg)
Description copied from class:Protocol
A single message was received. Protocols may examine the message and do something (e.g. add a header) with it before passing it up.
-
up
public void up(MessageBatch batch)
Dividing the delivery time for a batch by the batch size is problematic, e.g. if a batch of 5 is received at time 0 and the 5 messages are delivered at times 20, 40, 60, 80 and 100, then the total time is 100, divided by 5 would be 20 per message.
However, this is incorrect as it ignores the waiting times for the individual messages: e.g. message 3 gets delayed for 60 until it is processed.
The correct average delivery time per message is therefore (20+40+60+80+100)/5 = 60.
The above computation is not correct: we don't know whether a protocol looks at all messages: it may even remove some (making 'size' incorrect)!
Also, we don't know whether messages in a batch are processed in order, on by one, or whether they are processed in parallel. Therefore, times for individual messages will not be computed.
-
avgTimePerMessageIncludingDelay
protected static double avgTimePerMessageIncludingDelay(int num, long time)
-
add
protected static void add(AverageMinMax avg, long num)
-
-