aboutsummaryrefslogtreecommitdiff
path: root/src/set/gnunet-set-profiler.c
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2015-12-11 16:50:44 +0000
committerFlorian Dold <florian.dold@gmail.com>2015-12-11 16:50:44 +0000
commit2718db6f29c81df70171b1f5488a068cc7650c72 (patch)
tree9ebbac759bd71afb2a05c4a981b1d77c45f34534 /src/set/gnunet-set-profiler.c
parent912f323c9f28c069195ff73926307d4aa92c78ac (diff)
downloadgnunet-2718db6f29c81df70171b1f5488a068cc7650c72.tar.gz
gnunet-2718db6f29c81df70171b1f5488a068cc7650c72.zip
Set statistics
Diffstat (limited to 'src/set/gnunet-set-profiler.c')
-rw-r--r--src/set/gnunet-set-profiler.c37
1 files changed, 28 insertions, 9 deletions
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;
36static unsigned int num_b = 5; 36static unsigned int num_b = 5;
37static unsigned int num_c = 20; 37static unsigned int num_c = 20;
38 38
39static unsigned int dump_statistics;
40
41static char *op_str = "union"; 39static char *op_str = "union";
42 40
43const static struct GNUNET_CONFIGURATION_Handle *config; 41const static struct GNUNET_CONFIGURATION_Handle *config;
@@ -60,8 +58,23 @@ static struct GNUNET_PeerIdentity local_peer;
60 58
61static struct GNUNET_SET_ListenHandle *set_listener; 59static struct GNUNET_SET_ListenHandle *set_listener;
62 60
61/**
62 * Handle to the statistics service.
63 */
63static struct GNUNET_STATISTICS_Handle *statistics; 64static struct GNUNET_STATISTICS_Handle *statistics;
64 65
66/**
67 * The profiler will write statistics
68 * for all peers to the file with this name.
69 */
70static char *statistics_filename;
71
72/**
73 * The profiler will write statistics
74 * for all peers to this file.
75 */
76static FILE *statistics_file;
77
65 78
66static int 79static int
67map_remove_iterator (void *cls, 80map_remove_iterator (void *cls,
@@ -98,7 +111,10 @@ statistics_result (void *cls,
98 uint64_t value, 111 uint64_t value,
99 int is_persistent) 112 int is_persistent)
100{ 113{
101 printf ("stat %s/%s=%lu\n", subsystem, name, (unsigned long) value); 114 if (NULL != statistics_file)
115 {
116 fprintf (statistics_file, "%s\t%s\t%lu\n", subsystem, name, (unsigned long) value);
117 }
102 return GNUNET_OK; 118 return GNUNET_OK;
103} 119}
104 120
@@ -108,10 +124,12 @@ statistics_done (void *cls,
108 int success) 124 int success)
109{ 125{
110 GNUNET_assert (GNUNET_YES == success); 126 GNUNET_assert (GNUNET_YES == success);
111 printf("dumped statistics\n"); 127 if (NULL != statistics_file)
128 fclose (statistics_file);
112 GNUNET_SCHEDULER_shutdown (); 129 GNUNET_SCHEDULER_shutdown ();
113} 130}
114 131
132
115static void 133static void
116check_all_done (void) 134check_all_done (void)
117{ 135{
@@ -124,12 +142,13 @@ check_all_done (void)
124 printf ("set a: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info1.sent)); 142 printf ("set a: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info1.sent));
125 printf ("set b: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info2.sent)); 143 printf ("set b: %d missing elements\n", GNUNET_CONTAINER_multihashmap_size (info2.sent));
126 144
127 if (0 == dump_statistics) 145 if (NULL == statistics_filename)
128 { 146 {
129 GNUNET_SCHEDULER_shutdown (); 147 GNUNET_SCHEDULER_shutdown ();
130 return; 148 return;
131 } 149 }
132 150
151 statistics_file = fopen (statistics_filename, "w");
133 GNUNET_STATISTICS_get (statistics, NULL, NULL, GNUNET_TIME_UNIT_FOREVER_REL, 152 GNUNET_STATISTICS_get (statistics, NULL, NULL, GNUNET_TIME_UNIT_FOREVER_REL,
134 statistics_done, statistics_result, NULL); 153 statistics_done, statistics_result, NULL);
135} 154}
@@ -137,8 +156,8 @@ check_all_done (void)
137 156
138static void 157static void
139set_result_cb (void *cls, 158set_result_cb (void *cls,
140 const struct GNUNET_SET_Element *element, 159 const struct GNUNET_SET_Element *element,
141 enum GNUNET_SET_Status status) 160 enum GNUNET_SET_Status status)
142{ 161{
143 struct SetInfo *info = cls; 162 struct SetInfo *info = cls;
144 struct GNUNET_HashCode hash; 163 struct GNUNET_HashCode hash;
@@ -365,8 +384,8 @@ main (int argc, char **argv)
365 gettext_noop ("operation to execute"), 384 gettext_noop ("operation to execute"),
366 GNUNET_YES, &GNUNET_GETOPT_set_string, &op_str }, 385 GNUNET_YES, &GNUNET_GETOPT_set_string, &op_str },
367 { 's', "statistics", NULL, 386 { 's', "statistics", NULL,
368 gettext_noop ("dump statistics to stdout after completion"), 387 gettext_noop ("write statistics to file"),
369 GNUNET_NO, &GNUNET_GETOPT_set_one, &dump_statistics }, 388 GNUNET_YES, &GNUNET_GETOPT_set_filename, &statistics_filename },
370 GNUNET_GETOPT_OPTION_END 389 GNUNET_GETOPT_OPTION_END
371 }; 390 };
372 GNUNET_PROGRAM_run2 (argc, argv, "gnunet-set-profiler", 391 GNUNET_PROGRAM_run2 (argc, argv, "gnunet-set-profiler",