[Top][All Lists]
[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))
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r11388 - in gnunet: . src src/fs src/util,
gnunet <=