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

Bela Ban (JIRA) jira-events at lists.jboss.org
Tue Aug 23 07:21:17 EDT 2011


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

Bela Ban edited comment on JGRP-1331 at 8/23/11 7:19 AM:
---------------------------------------------------------

Digest actually consists of a ConcurrentHashMap of senders (Address) and (low,high_recv,high_del) entries (Entry).
The ConcurrentHashMap is (1) absolutely not necessary, as Entry is immutable and (2) overkill as it adds to the size of a Digest in memory !
SOLUTION: replace ConcurrentHashMap with something more specific and less memory hungry, e.g. similar to org.jgroups.util.Headers. Even a HashMap would be less memory hungry than a ConcurrentHashMap !

We could use 2 arrays: one for senders and one for Digests (or byte[] buffers, see below). 

Note that digests are usually *not* accessed randomly, but most access patterns iterate through a digest, and get all senders and their associated Digest.Entry's in turn. This favors use of 2 arrays rather than a hashmap !

      was (Author: belaban):
    Digest actually consists of a ConcurrentHashMap of senders (Address) and (low,high_recv,high_del) entries (Entry).
The ConcurrentHashMap is (1) absolutely not necessary, as Entry is immutable and (2) overkill as it adds to the size of a Digest in memory !
SOLUTION: replace ConcurrentHashMap with something more specific and less memory hungry, e.g. similar to org.jgroups.util.Headers. Even a HashMap would be less memory hungry than a ConcurrentHashMap !
  
> 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.0
>
>
> 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