gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0003] branch master updated: review 7.1.1


From: gnunet
Subject: [lsd0003] branch master updated: review 7.1.1
Date: Mon, 14 Jun 2021 13:42:31 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository lsd0003.

The following commit(s) were added to refs/heads/master by this push:
     new b492d44  review 7.1.1
b492d44 is described below

commit b492d44ea06c6a00f3f8ba8608bfe7438bf7827a
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Jun 14 13:39:46 2021 +0200

    review 7.1.1
---
 draft-summermatter-set-union.xml | 52 +++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index ba5210e..5d23b96 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -2050,6 +2050,11 @@ FUNCTION decide_operation_mode(avg_es,
                                rtt)
 
     # If a set size is zero always do full sync
+    # TODO: check if these two conditions are
+    # actually meaningful, I suspect even without
+    # this check at the beginning the logic below
+    # should always yield the same result for these
+    # extreme cases, allowing us to omit this code.
     IF (0 == rss)
         RETURN FULL_SYNC_LOCAL_SENDING_FIRST
     IF END
@@ -2061,7 +2066,7 @@ FUNCTION decide_operation_mode(avg_es,
     # and transmitting local set first.
     estimated_total_diff = rsd + lsd
     total_elements_local_send = rsd + lss
-    total_bytes_local_send = avg_es * total_elements_local_send
+    cost_local_full_sync = avg_es * total_elements_local_send
                            + total_elements_local_send * 
sizeof(ELEMENT_MSG_HEADER)
                            + sizeof(FULL_DONE_MSG_HEADER) * 2
                            + RTT_MIN_FULL * rtt
@@ -2069,14 +2074,12 @@ FUNCTION decide_operation_mode(avg_es,
     # Estimate required transferred bytes when doing a full synchronisation
     # and transmitting remote set first.
     total_elements_remote_send = lsd + rss
-    total_bytes_remote_send = avg_es * total_elements_remote_send
+    cost_remote_full_sync = avg_es * total_elements_remote_send
                             + total_elements_remote_send * 
sizeof(ELEMENT_MSG_HEADER)
                             + sizeof(FULL_DONE_MSG_HEADER) * 2
                             + (RTT_MIN_FULL + 0.5) * rtt
                             + sizeof(REQUEST_FULL_MSG)
 
-    total_cost_local_send =
-
     # Estimate required transferred bytes when doing a differential 
synchronisation
 
     # Estimate messages required to transfer IBF
@@ -2087,16 +2090,22 @@ FUNCTION decide_operation_mode(avg_es,
     ibf_message_count = ceil (ibf_bucket_count / MAX_BUCKETS_PER_MESSAGE)
 
     # Estimate average counter length with variable counter
-    estimated_counter_size = MIN (2 * LOG2(lss / ibf_bucket_count),
+    estimated_counter_bits = MIN (2 * LOG2(lss / ibf_bucket_count),
                                   LOG2(lss))
-    counter_bytes = estimated_counter_size / 8
+    estimated_counter_bytes = estimated_counter_bits / 8
 
     # Sum up all messages required to do differential synchronisation
-    ibf_bytes =  sizeof(IBF_MESSAGE) * ibf_message_count * 1.2
-              + ibf_bucket_count * sizeof(IBF_KEY) * 1.2
-              + ibf_bucket_count * sizeof(IBF_KEYHASH) * 1.2
-              + ibf_bucket_count * counter_bytes * 1.2
-
+    ibf_bytes = sizeof(IBF_MESSAGE) * ibf_message_count
+              + ibf_bucket_count * sizeof(IBF_KEY)
+              + ibf_bucket_count * sizeof(IBF_KEYHASH)
+              + ibf_bucket_count * estimated_counter_bytes
+    # Add 20% overhead to cover IBF retries due to decoding failures
+    total_ibf_bytes = ibf_bytes * 1.2
+
+    # Estimate other message sizes to be transfered in diff sync
+    # Note that we simplify by adding the header each time;
+    # if the implementation combines multiple INQUIRY/DEMAND/OFFER
+    # requests in one message, the bandwidth would be lower.
     done_size = sizeof(DONE_HEADER)
     element_size = (avg_es + sizeof(ELEMENT_MSG_HEADER))
                  * estimated_total_diff
@@ -2107,16 +2116,16 @@ FUNCTION decide_operation_mode(avg_es,
     offer_size   = (sizeof(HASHCODE) + sizeof(OFFER_MSG_HEADER))
                  * estimated_total_diff
 
-    total_bytes_diff = (element_size + done_size + inquery_size
-                     + demand_size + offer_size + ibf_bytes)
-                     + DIFFERENTIAL_RTT_MEAN * rtt
+    # Estimate total cost
+    diff_cost = element_size + done_size + inquery_size
+              + demand_size + offer_size + total_ibf_bytes
+              + DIFFERENTIAL_RTT_MEAN * rtt
 
     # Decide for a optimal mode of operation
-
-    full_min = MIN (total_bytes_local_send,
-                    total_bytes_remote_send)
-    IF (full_min < total_bytes_diff)
-        IF (total_bytes_remote_send > total_bytes_local_send)
+    full_cost_min = MIN (cost_local_full_sync,
+                         cost_remote_full_sync)
+    IF (full_cost_min < diff_cost)
+        IF (cost_remote_full_sync > cost_local_full_sync)
             RETURN FULL_SYNC_LOCAL_SENDING_FIRST
         ELSE
             RETURN FULL_SYNC_REMOTE_SENDING_FIRST
@@ -2125,11 +2134,6 @@ FUNCTION decide_operation_mode(avg_es,
         RETURN DIFFERENTIAL_SYNC
     IF END
     ]]></artwork>
-<!-- FIXME: the above algorithm is a mess, starting with formatting; @Better 
now?
-     please begin by using shorter variable names and formatting so
-     that it renders properly in the HTML. Then, add some comments.
-     Also note that I switched the first two conditions, which
-     matters in case both sizes have set size of 0. -->
                     </figure>
                 </section>
                 <section anchor="performance_formula_ibf_parameters" 
numbered="true" toc="default">

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]