X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ffs%2Fgnunet-service-fs.h;h=e4efbb8f534cad872b1b1430ec7af43191c598d2;hb=bf886ddf525b991c6a11c9bd0be10e9aa0dd1c80;hp=d16b1a85688e856654204e04e22baa6730a014f3;hpb=8111b29a93408e1befe322c87b468d6a86a8ae66;p=oweals%2Fgnunet.git diff --git a/src/fs/gnunet-service-fs.h b/src/fs/gnunet-service-fs.h index d16b1a856..e4efbb8f5 100644 --- a/src/fs/gnunet-service-fs.h +++ b/src/fs/gnunet-service-fs.h @@ -33,6 +33,40 @@ #include "gnunet_block_lib.h" #include "fs.h" +#define DEBUG_FS GNUNET_YES + +#define DEBUG_FS_CLIENT GNUNET_EXTRA_LOGGING + + +/** + * Should we introduce random latency in processing? Required for proper + * implementation of GAP, but can be disabled for performance evaluation of + * the basic routing algorithm. + * + * Note that with delays enabled, performance can be significantly lower + * (several orders of magnitude in 2-peer test runs); if you want to + * measure throughput of other components, set this to NO. Also, you + * might want to consider changing 'RETRY_PROBABILITY_INV' to 1 for + * a rather wasteful mode of operation (that might still get the highest + * throughput overall). + * + * Performance measurements (for 50 MB file, 2 peers): + * + * - Without delays: 3300 kb/s + * - With delays: 101 kb/s + */ +#define SUPPORT_DELAYS GNUNET_NO + + +/** + * At what frequency should our datastore load decrease + * automatically (since if we don't use it, clearly the + * load must be going down). + */ +#define DATASTORE_LOAD_AUTODECLINE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 250) + + + /** * A connected peer. */ @@ -48,6 +82,16 @@ struct GSF_PendingRequest; */ struct GSF_LocalClient; +/** + * Information kept per plan per request ('pe' module). + */ +struct GSF_RequestPlan; + +/** + * DLL of request plans a particular pending request is + * involved with. + */ +struct GSF_RequestPlanReference; /** * Our connection to the datastore. @@ -80,6 +124,11 @@ extern struct GNUNET_DHT_Handle *GSF_dht; */ extern struct GNUNET_LOAD_Value *GSF_rt_entry_lifetime; +/** + * Running average of the observed latency to other peers (round trip). + */ +extern struct GNUNET_TIME_Relative GSF_avg_latency; + /** * Typical priorities we're seeing from other peers right now. Since * most priorities will be zero, this value is the weighted average of @@ -93,17 +142,48 @@ extern struct GNUNET_LOAD_Value *GSF_rt_entry_lifetime; extern double GSF_current_priorities; /** - * How many query messages have we received 'recently' that + * How many query messages have we received 'recently' that * have not yet been claimed as cover traffic? */ extern unsigned int GSF_cover_query_count; +/** + * How many content messages have we received 'recently' that + * have not yet been claimed as cover traffic? + */ +extern unsigned int GSF_cover_content_count; /** * Our block context. */ extern struct GNUNET_BLOCK_Context *GSF_block_ctx; +/** + * Are we introducing randomized delays for better anonymity? + */ +extern int GSF_enable_randomized_delays; + +/** + * Test if the DATABASE (GET) load on this peer is too high + * to even consider processing the query at + * all. + * + * @return GNUNET_YES if the load is too high to do anything (load high) + * GNUNET_NO to process normally (load normal) + * GNUNET_SYSERR to process for free (load low) + */ +int +GSF_test_get_load_too_high_ (uint32_t priority); + + +/** + * We've just now completed a datastore request. Update our + * datastore load calculations. + * + * @param start time when the datastore request was issued + */ +void +GSF_update_datastore_delay_ (struct GNUNET_TIME_Absolute start);