gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [gnunet] branch master updated: update velocity always at t


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: update velocity always at the end of iteration
Date: Mon, 30 Apr 2018 18:51:40 +0200

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

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new 75bc13ffb update velocity always at the end of iteration
75bc13ffb is described below

commit 75bc13ffbb0c3081129706f7c22bf61234f2358e
Author: Christian Grothoff <address@hidden>
AuthorDate: Mon Apr 30 18:51:37 2018 +0200

    update velocity always at the end of iteration
---
 src/zonemaster/gnunet-service-zonemaster.c | 86 +++++++++++++++++-------------
 1 file changed, 48 insertions(+), 38 deletions(-)

diff --git a/src/zonemaster/gnunet-service-zonemaster.c 
b/src/zonemaster/gnunet-service-zonemaster.c
index c4d9bcc17..3be822529 100644
--- a/src/zonemaster/gnunet-service-zonemaster.c
+++ b/src/zonemaster/gnunet-service-zonemaster.c
@@ -378,34 +378,6 @@ dht_put_monitor_continuation (void *cls)
 
 
 /**
- * Check if the current zone iteration needs to be continued
- * by calling #publish_zone_namestore_next(), and if so with what delay.
- */
-static void
-check_zone_namestore_next ()
-{
-  struct GNUNET_TIME_Relative delay;
-
-  if (0 != ns_iteration_left)
-    return; /* current NAMESTORE iteration not yet done */
-  delay = GNUNET_TIME_relative_subtract (next_put_interval,
-                                         sub_delta);
-  /* We delay *once* per #NS_BLOCK_SIZE, so we need to multiply the
-     per-record delay calculated so far with the #NS_BLOCK_SIZE */
-  delay = GNUNET_TIME_relative_multiply (delay,
-                                         NS_BLOCK_SIZE);
-  GNUNET_assert (NULL == zone_publish_task);
-  GNUNET_STATISTICS_set (statistics,
-                         "Current artificial NAMESTORE delay (μs)",
-                         delay.rel_value_us,
-                         GNUNET_NO);
-  zone_publish_task = GNUNET_SCHEDULER_add_delayed (delay,
-                                                    
&publish_zone_namestore_next,
-                                                    NULL);
-}
-
-
-/**
  * Calculate #next_put_interval.
  */
 static void
@@ -434,10 +406,10 @@ calculate_put_interval ()
     next_put_interval
       = GNUNET_TIME_relative_divide (zone_publish_time_window,
                                     last_num_public_records);
-    next_put_interval
-      = GNUNET_TIME_relative_min (next_put_interval,
-                                 MAXIMUM_ZONE_ITERATION_INTERVAL);
   }
+  next_put_interval
+    = GNUNET_TIME_relative_min (next_put_interval,
+                               MAXIMUM_ZONE_ITERATION_INTERVAL);
   GNUNET_STATISTICS_set (statistics,
                         "Minimum relative record expiration (in ms)",
                         last_min_relative_record_time.rel_value_us / 1000LL,
@@ -446,6 +418,10 @@ calculate_put_interval ()
                         "Zone publication time window (in ms)",
                         zone_publish_time_window.rel_value_us / 1000LL,
                         GNUNET_NO);
+  GNUNET_STATISTICS_set (statistics,
+                         "Target zone iteration velocity (μs)",
+                         next_put_interval.rel_value_us,
+                         GNUNET_NO);
 }
 
 
@@ -453,16 +429,20 @@ calculate_put_interval ()
  * Re-calculate our velocity and the desired velocity.
  * We have succeeded in making #DELTA_INTERVAL puts, so
  * now calculate the new desired delay between puts.
+ *
+ * @param cnt how many records were processed since the last call?
  */
 static void
-update_velocity ()
+update_velocity (unsigned int cnt)
 {
   struct GNUNET_TIME_Relative delta;
   unsigned long long pct = 0;
 
+  if (0 == cnt)
+    return;
   /* How fast were we really? */
   delta = GNUNET_TIME_absolute_get_duration (last_put_100);
-  delta.rel_value_us /= DELTA_INTERVAL;
+  delta.rel_value_us /= cnt;
   last_put_100 = GNUNET_TIME_absolute_get ();
 
   /* calculate expected frequency */
@@ -481,10 +461,6 @@ update_velocity ()
 
   /* Tell statistics actual vs. desired speed */
   GNUNET_STATISTICS_set (statistics,
-                         "Target zone iteration velocity (μs)",
-                         next_put_interval.rel_value_us,
-                         GNUNET_NO);
-  GNUNET_STATISTICS_set (statistics,
                          "Current zone iteration velocity (μs)",
                          delta.rel_value_us,
                          GNUNET_NO);
@@ -550,6 +526,36 @@ update_velocity ()
 
 
 /**
+ * Check if the current zone iteration needs to be continued
+ * by calling #publish_zone_namestore_next(), and if so with what delay.
+ */
+static void
+check_zone_namestore_next ()
+{
+  struct GNUNET_TIME_Relative delay;
+
+  if (0 != ns_iteration_left)
+    return; /* current NAMESTORE iteration not yet done */
+  update_velocity (put_cnt);
+  put_cnt = 0;
+  delay = GNUNET_TIME_relative_subtract (next_put_interval,
+                                         sub_delta);
+  /* We delay *once* per #NS_BLOCK_SIZE, so we need to multiply the
+     per-record delay calculated so far with the #NS_BLOCK_SIZE */
+  delay = GNUNET_TIME_relative_multiply (delay,
+                                         NS_BLOCK_SIZE);
+  GNUNET_assert (NULL == zone_publish_task);
+  GNUNET_STATISTICS_set (statistics,
+                         "Current artificial NAMESTORE delay (μs)",
+                         delay.rel_value_us,
+                         GNUNET_NO);
+  zone_publish_task = GNUNET_SCHEDULER_add_delayed (delay,
+                                                    
&publish_zone_namestore_next,
+                                                    NULL);
+}
+
+
+/**
  * Continuation called from DHT once the PUT operation is done.
  *
  * @param cls a `struct DhtPutActivity`
@@ -805,7 +811,7 @@ put_gns_record (void *cls,
                             ma);
   put_cnt++;
   if (0 == put_cnt % DELTA_INTERVAL)
-    update_velocity ();
+    update_velocity (DELTA_INTERVAL);
   check_zone_namestore_next ();
   if (NULL == ma->ph)
   {
@@ -997,6 +1003,10 @@ run (void *cls,
     = GNUNET_TIME_relative_multiply (GNUNET_DHT_DEFAULT_REPUBLISH_FREQUENCY,
                                     PUBLISH_OPS_PER_EXPIRATION);
   next_put_interval = INITIAL_PUT_INTERVAL;
+  GNUNET_STATISTICS_set (statistics,
+                         "Target zone iteration velocity (μs)",
+                         next_put_interval.rel_value_us,
+                         GNUNET_NO);
   namestore_handle = GNUNET_NAMESTORE_connect (c);
   if (NULL == namestore_handle)
   {

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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