From 2718db6f29c81df70171b1f5488a068cc7650c72 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 11 Dec 2015 16:50:44 +0000 Subject: [PATCH] Set statistics --- src/set/gnunet-service-set_union.c | 5 ++++ src/set/gnunet-set-profiler.c | 37 ++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/set/gnunet-service-set_union.c b/src/set/gnunet-service-set_union.c index 637ea6e70..4cba00eb0 100644 --- a/src/set/gnunet-service-set_union.c +++ b/src/set/gnunet-service-set_union.c @@ -681,6 +681,11 @@ handle_p2p_strata_estimator (void *cls, int diff; size_t len; + GNUNET_STATISTICS_update (_GSS_statistics, + "# bytes of SE received", + ntohs (mh->size), + GNUNET_NO); + if (op->state->phase != PHASE_EXPECT_SE) { fail_union_operation (op); diff --git a/src/set/gnunet-set-profiler.c b/src/set/gnunet-set-profiler.c index 4b6a1e202..11b921bf0 100644 --- a/src/set/gnunet-set-profiler.c +++ b/src/set/gnunet-set-profiler.c @@ -36,8 +36,6 @@ static unsigned int num_a = 5; static unsigned int num_b = 5; static unsigned int num_c = 20; -static unsigned int dump_statistics; - static char *op_str = "union"; const static struct GNUNET_CONFIGURATION_Handle *config; @@ -60,8 +58,23 @@ static struct GNUNET_PeerIdentity local_peer; static struct GNUNET_SET_ListenHandle *set_listener; +/** + * Handle to the statistics service. + */ static struct GNUNET_STATISTICS_Handle *statistics; +/** + * The profiler will write statistics + * for all peers to the file with this name. + */ +static char *statistics_filename; + +/** + * The profiler will write statistics + * for all peers to this file. + */ +static FILE *statistics_file; + static int map_remove_iterator (void *cls, @@ -98,7 +111,10 @@ statistics_result (void *cls, uint64_t value, int is_persistent) { - printf ("stat %s/%s=%lu\n", subsystem, name, (unsigned long) value); + if (NULL != statistics_file) + { + fprintf (statistics_file, "%s\t%s\t%lu\n", subsystem, name, (unsigned long) value); + } return GNUNET_OK; } @@ -108,10 +124,12 @@ statistics_done (void *cls, int success) { GNUNET_assert (GNUNET_YES == success); - printf("dumped statistics\n"); + if (NULL != statistics_file) + fclose (statistics_file); GNUNET_SCHEDULER_shutdown (); } + static void check_all_done (void) { @@ -124,12 +142,13 @@ check_all_done (void) printf ("set a: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info1.sent)); printf ("set b: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info2.sent)); - if (0 == dump_statistics) + if (NULL == statistics_filename) { GNUNET_SCHEDULER_shutdown (); return; } + statistics_file = fopen (statistics_filename, "w"); GNUNET_STATISTICS_get (statistics, NULL, NULL, GNUNET_TIME_UNIT_FOREVER_REL, statistics_done, statistics_result, NULL); } @@ -137,8 +156,8 @@ check_all_done (void) static void set_result_cb (void *cls, - const struct GNUNET_SET_Element *element, - enum GNUNET_SET_Status status) + const struct GNUNET_SET_Element *element, + enum GNUNET_SET_Status status) { struct SetInfo *info = cls; struct GNUNET_HashCode hash; @@ -365,8 +384,8 @@ main (int argc, char **argv) gettext_noop ("operation to execute"), GNUNET_YES, &GNUNET_GETOPT_set_string, &op_str }, { 's', "statistics", NULL, - gettext_noop ("dump statistics to stdout after completion"), - GNUNET_NO, &GNUNET_GETOPT_set_one, &dump_statistics }, + gettext_noop ("write statistics to file"), + GNUNET_YES, &GNUNET_GETOPT_set_filename, &statistics_filename }, GNUNET_GETOPT_OPTION_END }; GNUNET_PROGRAM_run2 (argc, argv, "gnunet-set-profiler", -- 2.25.1