diff options
author | Florian Dold <florian.dold@gmail.com> | 2015-12-11 16:50:44 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2015-12-11 16:50:44 +0000 |
commit | 2718db6f29c81df70171b1f5488a068cc7650c72 (patch) | |
tree | 9ebbac759bd71afb2a05c4a981b1d77c45f34534 /src/set/gnunet-set-profiler.c | |
parent | 912f323c9f28c069195ff73926307d4aa92c78ac (diff) | |
download | gnunet-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.c | 37 |
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; | |||
36 | static unsigned int num_b = 5; | 36 | static unsigned int num_b = 5; |
37 | static unsigned int num_c = 20; | 37 | static unsigned int num_c = 20; |
38 | 38 | ||
39 | static unsigned int dump_statistics; | ||
40 | |||
41 | static char *op_str = "union"; | 39 | static char *op_str = "union"; |
42 | 40 | ||
43 | const static struct GNUNET_CONFIGURATION_Handle *config; | 41 | const static struct GNUNET_CONFIGURATION_Handle *config; |
@@ -60,8 +58,23 @@ static struct GNUNET_PeerIdentity local_peer; | |||
60 | 58 | ||
61 | static struct GNUNET_SET_ListenHandle *set_listener; | 59 | static struct GNUNET_SET_ListenHandle *set_listener; |
62 | 60 | ||
61 | /** | ||
62 | * Handle to the statistics service. | ||
63 | */ | ||
63 | static struct GNUNET_STATISTICS_Handle *statistics; | 64 | static 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 | */ | ||
70 | static char *statistics_filename; | ||
71 | |||
72 | /** | ||
73 | * The profiler will write statistics | ||
74 | * for all peers to this file. | ||
75 | */ | ||
76 | static FILE *statistics_file; | ||
77 | |||
65 | 78 | ||
66 | static int | 79 | static int |
67 | map_remove_iterator (void *cls, | 80 | map_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 | |||
115 | static void | 133 | static void |
116 | check_all_done (void) | 134 | check_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 | ||
138 | static void | 157 | static void |
139 | set_result_cb (void *cls, | 158 | set_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", |