[jboss-jira] [JBoss JIRA] Commented: (JGRP-1331) Digest: remove low seqno

Bela Ban (JIRA) jira-events at lists.jboss.org
Wed Aug 17 05:26:18 EDT 2011


    [ https://issues.jboss.org/browse/JGRP-1331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12621533#comment-12621533 ] 

Bela Ban commented on JGRP-1331:
--------------------------------

For marshalling purposes, we could add a flag 'options' to the serialized bytes (Digest.writeTo(),readFrom()):
- NORMAL: 3 longs follow
- ZERO: nothing follows (all 3 longs are 0)
- COMPRESSED_SHORT_INT: 1 long, 1 short, 1 int. The first value is uncompressed, the second is a short diff to the second, the 3rd is an int diff to the first.
- COMPRESSED_SHORT_SHORT: (similar to above)
- COMPRESSED_INT_SHORT:
- COMPRESSED_INT_INT:

If we have 100000 (low), 120000 (highest_delivered) and 125000 (highest_received), we'd send the digest as:
| COMPRESSED_SHORT_SHORT | 100000 (long) | 20000 (short) | 5000 (short) |

As an additional optimization, we could use the special marker -1 to mean that the value is the same as the previous value, e.g. for (100000,120000,120000): | 100000 | 20000 (short) | -1 (short) |

These optimizations are possible because we know that the highest_received and highest_delivered seqnos are usually very close to each other (unless there are gaps and retransmission). The low seqno is a bit further apart, depending on settings of STABLE.

If we can get rid of low, then we could even further optimize the serialization of highest_received and highest_delivered seqnos !

> Digest: remove low seqno
> ------------------------
>
>                 Key: JGRP-1331
>                 URL: https://issues.jboss.org/browse/JGRP-1331
>             Project: JGroups
>          Issue Type: Task
>            Reporter: Bela Ban
>            Assignee: Bela Ban
>            Priority: Minor
>             Fix For: 3.1
>
>
> We don't need Digest.Entry.low_seqno for NakReceiverWindow anymore. We only need it for the Retransmitter implementations. If we can remove that last dependency, e.g. by storing the last seqno removed from a retransmitter, we can remove low_seqno from a digest. This is significant, for example if we have 100 nodes, a digest includes 300 longs:(low+highest_received+highest_delivered) * 100. If we remove low_seqno, we only have 200 longs. (These will still be further compressed in a different JIRA).
> This is important for large clusters, to reduce the size of STABLE messages and views.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list