gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r11388 - in gnunet: . src src/fs src/util


From: gnunet
Subject: [GNUnet-SVN] r11388 - in gnunet: . src src/fs src/util
Date: Sat, 15 May 2010 23:39:13 +0200

Author: grothoff
Date: 2010-05-15 23:39:13 +0200 (Sat, 15 May 2010)
New Revision: 11388

Removed:
   gnunet/src/migration/
Modified:
   gnunet/TODO
   gnunet/configure.ac
   gnunet/src/Makefile.am
   gnunet/src/fs/fs.h
   gnunet/src/fs/gnunet-service-fs.c
   gnunet/src/util/scheduler.c
Log:
work on migration

Modified: gnunet/TODO
===================================================================
--- gnunet/TODO 2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/TODO 2010-05-15 21:39:13 UTC (rev 11388)
@@ -1,25 +1,12 @@
 0.9.0pre1:
-* FS-LIB:
-  - _start functions should return void
 * MIGRATION [CG]
   - on-demand encoding => move logic to block-library!?
   - peer selection => how to consider latency/bw/etc?
   - content transmission => how often the same block?
   - how to select delay before next migration? 
-  - migration to us
   - testing
-  - integrate with FS or not? (peer list, index/on-demand encoding, block code,
-    inbound priority assignment; all would be easier with tight integration!)
 * FS: [CG]
   - gnunet-service-fs (hot-path routing, load-based routing, nitpicks)  
-  - [gnunet-service-fs.c:208]: member 'LocalGetContext::results_bf_size' is 
never used
-  - [gnunet-service-fs.c:501]: member 'PendingRequest::used_pids_size' is 
never used
-  - [gnunet-service-fs.c:654]: member 'ConnectedPeer::last_client_replies' is 
never used
-  - [gnunet-service-fs.c:669]: member 'ConnectedPeer::avg_delay' is never used
-  - [gnunet-service-fs.c:675]: member 'ConnectedPeer::avg_priority' is never 
used
-  - [gnunet-service-fs.c:688]: member 'ConnectedPeer::pending_requests' is 
never used
-  - [gnunet-service-fs.c:694]: member 'ConnectedPeer::last_p2p_replies_woff' 
is never used
-  - [gnunet-service-fs.c:700]: member 
'ConnectedPeer::last_client_replies_woff' is never used
   - GAP improvements:
     + active reply route caching design & implementation of service; gap 
extension!
 * TBENCH: [MW]

Modified: gnunet/configure.ac
===================================================================
--- gnunet/configure.ac 2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/configure.ac 2010-05-15 21:39:13 UTC (rev 11388)
@@ -663,7 +663,6 @@
 src/include/Makefile
 src/include/gnunet_directories.h
 src/hostlist/Makefile
-src/migration/Makefile
 src/nat/Makefile
 src/nat/libnatpmp/Makefile
 src/nat/miniupnp/Makefile

Modified: gnunet/src/Makefile.am
===================================================================
--- gnunet/src/Makefile.am      2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/src/Makefile.am      2010-05-15 21:39:13 UTC (rev 11388)
@@ -23,5 +23,5 @@
   testing \
   hostlist \
   topology \
-  $(NAT_DIR) 
-
+  $(NAT_DIR) \
+  fs

Modified: gnunet/src/fs/fs.h
===================================================================
--- gnunet/src/fs/fs.h  2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/src/fs/fs.h  2010-05-15 21:39:13 UTC (rev 11388)
@@ -42,6 +42,13 @@
 #define MAX_MIGRATION_QUEUE 32
 
 /**
+ * Ratio for moving average delay calculation.  The previous
+ * average goes in with a factor of (n-1) into the calculation.
+ * Must be > 0.
+ */
+#define RUNAVG_DELAY_N 16
+
+/**
  * Size of the individual blocks used for file-sharing.
  */
 #define DBLOCK_SIZE (32*1024)

Modified: gnunet/src/fs/gnunet-service-fs.c
===================================================================
--- gnunet/src/fs/gnunet-service-fs.c   2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/src/fs/gnunet-service-fs.c   2010-05-15 21:39:13 UTC (rev 11388)
@@ -27,10 +27,9 @@
  * - TTL/priority calculations are absent!
  * TODO:
  * - have non-zero preference / priority for requests we initiate!
- * - track stats for hot-path routing
  * - implement hot-path routing decision procedure
  * - implement: bound_priority, test_load_too_high, validate_nblock
- * - add content migration support (store locally) [or create new service]
+ * - add content migration support (forward from migration list)
  * - statistics
  */
 #include "platform.h"
@@ -482,6 +481,7 @@
   struct GNUNET_DATASTORE_QueueEntry *qe;
 
   /**
+
    * Size of the 'bf' (in bytes).
    */
   size_t bf_size;
@@ -2005,7 +2005,10 @@
    */
   const void *data;
 
-  // FIXME: add 'struct ConnectedPeer' to track 'last_xxx_replies' here!
+  /**
+   * Who gave us this reply? NULL for local host.
+   */
+  struct ConnectedPeer *sender;
 
   /**
    * When the reply expires.
@@ -2055,6 +2058,7 @@
   struct ClientList *cl;
   struct PutMessage *pm;
   struct ConnectedPeer *cp;
+  struct GNUNET_TIME_Relative cur_delay;
   GNUNET_HashCode chash;
   GNUNET_HashCode mhash;
   size_t msize;
@@ -2069,6 +2073,33 @@
                            gettext_noop ("# replies received and matched"),
                            1,
                            GNUNET_NO);
+  if (prq->sender != NULL)
+    {
+      /* FIXME: should we be more precise here and not use
+        "start_time" but a peer-specific time stamp? */
+      cur_delay = GNUNET_TIME_absolute_get_duration (pr->start_time);
+      prq->sender->avg_delay.value
+       = (prq->sender->avg_delay.value * 
+          (RUNAVG_DELAY_N - 1) + cur_delay.value) / RUNAVG_DELAY_N; 
+      prq->sender->avg_priority
+       = (prq->sender->avg_priority * 
+          (RUNAVG_DELAY_N - 1) + pr->priority) / (double) RUNAVG_DELAY_N;
+      if (pr->cp != NULL)
+       {
+         GNUNET_PEER_change_rc (prq->sender->last_p2p_replies
+                                [prq->sender->last_p2p_replies_woff % 
P2P_SUCCESS_LIST_SIZE], -1);
+         GNUNET_PEER_change_rc (pr->cp->pid, 1);
+         prq->sender->last_p2p_replies
+           [(prq->sender->last_p2p_replies_woff++) % P2P_SUCCESS_LIST_SIZE]
+           = pr->cp->pid;
+       }
+      else
+       {
+         prq->sender->last_client_replies
+           [(prq->sender->last_client_replies_woff++) % CS2P_SUCCESS_LIST_SIZE]
+           = pr->client_request_list->client_list->client;
+       }
+    }
   GNUNET_CRYPTO_hash (prq->data,
                      prq->size,
                      &chash);
@@ -2317,6 +2348,9 @@
                            GNUNET_NO);
   /* now, lookup 'query' */
   prq.data = (const void*) &put[1];
+  if (other != NULL)
+    prq.sender = GNUNET_CONTAINER_multihashmap_get (connected_peers,
+                                                   &other->hashPubKey);
   prq.size = dsize;
   prq.type = type;
   prq.expiration = expiration;

Modified: gnunet/src/util/scheduler.c
===================================================================
--- gnunet/src/util/scheduler.c 2010-05-15 19:07:15 UTC (rev 11387)
+++ gnunet/src/util/scheduler.c 2010-05-15 21:39:13 UTC (rev 11388)
@@ -613,7 +613,8 @@
           if (errno == EINTR)
             continue;
           GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "select");
-          break;
+          abort ();
+         break;
         }
       if (GNUNET_NETWORK_fdset_handle_isset (rs, pr))
         {




reply via email to

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