[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r34971 - gnunet/src/rps
From: |
gnunet |
Subject: |
[GNUnet-SVN] r34971 - gnunet/src/rps |
Date: |
Fri, 23 Jan 2015 00:08:42 +0100 |
Author: ch3
Date: 2015-01-23 00:08:42 +0100 (Fri, 23 Jan 2015)
New Revision: 34971
Modified:
gnunet/src/rps/gnunet-service-rps.c
Log:
moved the client request rate estimation in fkt of its own
Modified: gnunet/src/rps/gnunet-service-rps.c
===================================================================
--- gnunet/src/rps/gnunet-service-rps.c 2015-01-22 23:07:14 UTC (rev 34970)
+++ gnunet/src/rps/gnunet-service-rps.c 2015-01-22 23:08:42 UTC (rev 34971)
@@ -683,6 +683,7 @@
RPS_sampler_update_list (peer);
}
+
/**
* Check whether #insert_in_sampler was already scheduled
*/
@@ -725,6 +726,45 @@
}
+/**
+ * Estimate request rate
+ *
+ * Called every time we receive a request from the client.
+ */
+ void
+est_request_rate()
+{
+ struct GNUNET_TIME_Relative max_round_duration;
+
+ if (request_deltas_size > req_counter)
+ req_counter++;
+ if ( 1 < req_counter)
+ {
+ /* Shift last request deltas to the right */
+ memcpy (&request_deltas[1],
+ request_deltas,
+ (req_counter - 1) * sizeof (struct GNUNET_TIME_Relative));
+
+ /* Add current delta to beginning */
+ request_deltas[0] = GNUNET_TIME_absolute_get_difference (last_request,
+ GNUNET_TIME_absolute_get ());
+ request_rate = T_relative_avg (request_deltas, req_counter);
+
+ /* Compute the duration a round will maximally take */
+ max_round_duration = GNUNET_TIME_relative_add (round_interval,
+ GNUNET_TIME_relative_divide (round_interval, 2));
+
+ /* Set the estimated size the sampler has to have to
+ * satisfy the current client request rate */
+ sampler_size_client_need = max_round_duration.rel_value_us /
request_rate.rel_value_us;
+
+ /* Resize the sampler */
+ resize_wrapper ();
+ }
+ last_request = GNUNET_TIME_absolute_get ();
+}
+
+
/***********************************************************************
* /Util functions
***********************************************************************/
@@ -812,37 +852,15 @@
{
struct GNUNET_RPS_CS_RequestMessage *msg;
uint32_t num_peers;
- struct GNUNET_TIME_Relative max_round_duration;
+ uint32_t i;
-
- /* Estimate request rate */
- if (request_deltas_size > req_counter)
- req_counter++;
- if ( 1 < req_counter)
- {
- /* Shift last request deltas to the right */
- memcpy (&request_deltas[1],
- request_deltas,
- (req_counter - 1) * sizeof (struct GNUNET_TIME_Relative));
- /* Add current delta to beginning */
- request_deltas[0] = GNUNET_TIME_absolute_get_difference (last_request,
- GNUNET_TIME_absolute_get ());
- request_rate = T_relative_avg (request_deltas, req_counter);
-
- max_round_duration = GNUNET_TIME_relative_add (round_interval,
- GNUNET_TIME_relative_divide (round_interval, 2));
- sampler_size_client_need = max_round_duration.rel_value_us /
request_rate.rel_value_us;
-
- resize_wrapper ();
- }
- last_request = GNUNET_TIME_absolute_get ();
-
-
- // TODO check message size
msg = (struct GNUNET_RPS_CS_RequestMessage *) message;
num_peers = ntohl (msg->num_peers);
+ for (i = 0 ; i < num_peers ; i++)
+ est_request_rate();
+
LOG (GNUNET_ERROR_TYPE_DEBUG, "Client requested %" PRIX32 " random
peer(s).\n", num_peers);
RPS_sampler_get_n_rand_peers (client_respond, client, num_peers, GNUNET_YES);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r34971 - gnunet/src/rps,
gnunet <=