Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-2140

Replace Table with RingBuffer in UNICAST3 and NAKACK2

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Won't Do
    • Icon: Major Major
    • 5.1.7
    • None
    • None

      Table does allocate memory on resizing or compaction; whereas RingBuffer doesn't. Replacing Table with RingBuffer might bring memory allocation rates even further down.

      However, using RingBuffer as message store means that the capacity is fixed; when the RingBuffer is full, sender threads would have to block as messages cannot be dropped.

      However, blocking is something that should be done in a flow control protocol, such as UFC or MFC, and some applications might choose completely non-blocking flow control, e.g. UFC_NB or MFC_NB, and blocking in UNICAST3 or NAKACK2 would move part of the blocking/non-blocking aspect away from the flow control protocols.

      Measure the impact on performance. Table is a critical class used by NAKACK2 and UNICAST3, and is battle tested. Do this only if the benefits trump the risk.

              rhn-engineering-bban Bela Ban
              rhn-engineering-bban Bela Ban
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: