From cb023645f02e119debf6124da07b90554b8542aa Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Fri, 15 Feb 2013 14:30:47 +0000 Subject: Hacks to reduce per-peer load on CPU by increasing transport retransmission timeouts. This helps to keep the load on testbed node low. Thanks Bart! --- contrib/testbed_perfhacks.patch | 90 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 contrib/testbed_perfhacks.patch (limited to 'contrib') diff --git a/contrib/testbed_perfhacks.patch b/contrib/testbed_perfhacks.patch new file mode 100644 index 000000000..1ad524a30 --- /dev/null +++ b/contrib/testbed_perfhacks.patch @@ -0,0 +1,90 @@ +Index: src/include/gnunet_constants.h +=================================================================== +--- src/include/gnunet_constants.h (revision 26030) ++++ src/include/gnunet_constants.h (working copy) +@@ -49,7 +49,7 @@ + * After how long do we consider a connection to a peer dead + * if we don't receive messages from the peer? + */ +-#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) ++#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 5) + + /** + * How long do we delay reading more from a peer after a quota violation? +@@ -61,7 +61,7 @@ + * even if we assume that the service commonly does not + * respond instantly (DNS, Database, etc.). + */ +-#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10) ++#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 10) + + /** + * How long do we delay messages to get larger packet sizes (CORKing)? +Index: src/transport/gnunet-service-transport_neighbours.c +=================================================================== +--- src/transport/gnunet-service-transport_neighbours.c (revision 26030) ++++ src/transport/gnunet-service-transport_neighbours.c (working copy) +@@ -65,7 +65,7 @@ + * send 3 keepalives in each interval, so 3 messages would need to be + * lost in a row for a disconnect). + */ +-#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 100) ++#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 100) + + /** + * How long are we willing to wait for a response from ATS before timing out? +Index: src/transport/gnunet-service-transport_validation.c +=================================================================== +--- src/transport/gnunet-service-transport_validation.c (revision 26030) ++++ src/transport/gnunet-service-transport_validation.c (working copy) +@@ -43,7 +43,7 @@ + * OTOH, we don't want to spend too much time generating PONG signatures, + * so they must have some lifetime to reduce our CPU usage. + */ +-#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 1) ++#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 12) + + /** + * After how long do we expire an address in a HELLO that we just +@@ -58,24 +58,24 @@ + * we cannot validate (because after this time we can destroy the + * validation record). + */ +-#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) ++#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 4) + + /** + * How often do we PING an address that we have successfully validated + * in the past but are not actively using? Should be (significantly) + * smaller than HELLO_ADDRESS_EXPIRATION. + */ +-#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15) ++#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 6) + + /** + * How often do we PING an address that we are currently using? + */ +-#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 2) ++#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 2) + + /** + * How much delay is acceptable for sending the PING or PONG? + */ +-#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1) ++#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 1) + + /** + * Size of the validation map hashmap. +@@ -745,9 +745,9 @@ + void + GST_validation_start (unsigned int max_fds) + { +- validation_next = GNUNET_TIME_absolute_get(); +- validation_delay.rel_value = (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value) / max_fds; +- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Delay between validations: %u ms\n ", validation_delay.rel_value); ++ validation_next = GNUNET_TIME_absolute_get(); ++ validation_delay.rel_value = GNUNET_TIME_UNIT_MILLISECONDS.rel_value; ++ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Delay between validations: %u ms\n ", validation_delay.rel_value); + validation_map = GNUNET_CONTAINER_multihashmap_create (VALIDATION_MAP_SIZE, + GNUNET_NO); + pnc = GNUNET_PEERINFO_notify (GST_cfg, &process_peerinfo_hello, NULL); -- cgit v1.2.3