[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: rps profiler: collect stati
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: rps profiler: collect statistics |
Date: |
Wed, 21 Mar 2018 11:11:02 +0100 |
This is an automated email from the git hooks/post-receive script.
julius-buenger pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 77b71b410 rps profiler: collect statistics
77b71b410 is described below
commit 77b71b4106bea8f2e229fd610aca3dcfbc56d34f
Author: Julius Bünger <address@hidden>
AuthorDate: Wed Mar 21 10:31:04 2018 +0100
rps profiler: collect statistics
---
src/rps/test_rps.c | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 174 insertions(+), 5 deletions(-)
diff --git a/src/rps/test_rps.c b/src/rps/test_rps.c
index d9f0a2c77..93a406aaf 100644
--- a/src/rps/test_rps.c
+++ b/src/rps/test_rps.c
@@ -268,6 +268,26 @@ struct RPSPeer
* @brief Number of peers in the #cur_view.
*/
uint32_t cur_view_count;
+
+ /**
+ * @brief statistics values
+ */
+ uint64_t num_rounds;
+ uint64_t num_blocks;
+ uint64_t num_blocks_many_push;
+ uint64_t num_blocks_no_push;
+ uint64_t num_blocks_no_pull;
+ uint64_t num_blocks_many_push_no_pull;
+ uint64_t num_blocks_no_push_no_pull;
+ uint64_t num_issued_push;
+ uint64_t num_issued_pull_req;
+ uint64_t num_issued_pull_rep;
+ uint64_t num_sent_push;
+ uint64_t num_sent_pull_req;
+ uint64_t num_sent_pull_rep;
+ uint64_t num_recv_push;
+ uint64_t num_recv_pull_req;
+ uint64_t num_recv_pull_rep;
};
enum STAT_TYPE
@@ -1942,6 +1962,37 @@ pre_profiler (struct RPSPeer *rps_peer, struct
GNUNET_RPS_Handle *h)
GNUNET_RPS_view_request (h, 0, view_update_cb, rps_peer);
}
+void write_final_stats (void){
+ uint32_t i;
+
+ for (i = 0; i < num_peers; i++)
+ {
+ to_file ("/tmp/rps/final_stats.dat",
+ "%s %" PRIu64
+ " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %"
PRIu64 /* blocking */
+ " %" PRIu64 " %" PRIu64 " %" PRIu64 /* issued */
+ " %" PRIu64 " %" PRIu64 " %" PRIu64 /* sent */
+ " %" PRIu64 " %" PRIu64 " %" PRIu64 /* recv */,
+ GNUNET_i2s (rps_peers[i].peer_id),
+ rps_peers[i].num_rounds,
+ rps_peers[i].num_blocks,
+ rps_peers[i].num_blocks_many_push,
+ rps_peers[i].num_blocks_no_push,
+ rps_peers[i].num_blocks_no_pull,
+ rps_peers[i].num_blocks_many_push_no_pull,
+ rps_peers[i].num_blocks_no_push_no_pull,
+ rps_peers[i].num_issued_push,
+ rps_peers[i].num_issued_pull_req,
+ rps_peers[i].num_issued_pull_rep,
+ rps_peers[i].num_sent_push,
+ rps_peers[i].num_sent_pull_req,
+ rps_peers[i].num_sent_pull_rep,
+ rps_peers[i].num_recv_push,
+ rps_peers[i].num_recv_pull_req,
+ rps_peers[i].num_recv_pull_rep);
+ }
+}
+
/**
* Continuation called by #GNUNET_STATISTICS_get() functions.
*
@@ -1979,6 +2030,7 @@ post_test_shutdown_ready_cb (void *cls,
if (GNUNET_YES == check_statistics_collect_completed())
{
+ write_final_stats ();
GNUNET_free (stat_cls);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Shutting down\n");
@@ -1989,6 +2041,83 @@ post_test_shutdown_ready_cb (void *cls,
}
/**
+ * @brief Converts string representation to the corresponding #STAT_TYPE enum.
+ *
+ * @param stat_str string representation of statistics specifier
+ *
+ * @return corresponding enum
+ */
+enum STAT_TYPE stat_str_2_type (const char *stat_str)
+{
+ if (GNUNET_YES == strncmp ("# rounds", stat_str, strlen ("# rounds")))
+ {
+ return STAT_TYPE_ROUNDS;
+ }
+ if (GNUNET_YES == strncmp ("# rounds blocked", stat_str, strlen ("# rounds
blocked")))
+ {
+ return STAT_TYPE_BLOCKS;
+ }
+ if (0 == strncmp ("# rounds blocked - too many pushes", stat_str, strlen ("#
rounds blocked - too many pushes")))
+ {
+ return STAT_TYPE_BLOCKS_MANY_PUSH;
+ }
+ if (0 == strncmp ("# rounds blocked - no pushes", stat_str, strlen ("#
rounds blocked - no pushes")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PUSH;
+ }
+ if (0 == strncmp ("# rounds blocked - no pull replies", stat_str, strlen ("#
rounds blocked - no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PULL;
+ }
+ if (0 == strncmp ("# rounds blocked - too many pushes, no pull replies",
stat_str, strlen ("# rounds blocked - too many pushes, no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL;
+ }
+ if (0 == strncmp ("# rounds blocked - no pushes, no pull replies", stat_str,
strlen ("# rounds blocked - no pushes, no pull replies")))
+ {
+ return STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL;
+ }
+ if (0 == strncmp ("# push send issued", stat_str, strlen ("# push send
issued")))
+ {
+ return STAT_TYPE_ISSUED_PUSH_SEND;
+ }
+ if (0 == strncmp ("# pull request send issued", stat_str, strlen ("# pull
request send issued")))
+ {
+ return STAT_TYPE_ISSUED_PULL_REQ;
+ }
+ if (0 == strncmp ("# pull reply send issued", stat_str, strlen ("# pull
reply send issued")))
+ {
+ return STAT_TYPE_ISSUED_PULL_REP;
+ }
+ if (0 == strncmp ("# pushes sent", stat_str, strlen ("# pushes sent")))
+ {
+ return STAT_TYPE_SENT_PUSH_SEND;
+ }
+ if (0 == strncmp ("# pull requests sent", stat_str, strlen ("# pull requests
sent")))
+ {
+ return STAT_TYPE_SENT_PULL_REQ;
+ }
+ if (0 == strncmp ("# pull replys sent", stat_str, strlen ("# pull replys
sent")))
+ {
+ return STAT_TYPE_SENT_PULL_REP;
+ }
+ if (0 == strncmp ("# push message received", stat_str, strlen ("# push
message received")))
+ {
+ return STAT_TYPE_RECV_PUSH_SEND;
+ }
+ if (0 == strncmp ("# pull request message received", stat_str, strlen ("#
pull request message received")))
+ {
+ return STAT_TYPE_RECV_PULL_REQ;
+ }
+ if (0 == strncmp ("# pull reply messages received", stat_str, strlen ("#
pull reply messages received")))
+ {
+ return STAT_TYPE_RECV_PULL_REP;
+ }
+ return STAT_TYPE_MAX;
+}
+
+
+/**
* @brief Converts #STAT_TYPE enum to the equivalent string representation that
* is stored with the statistics service.
*
@@ -2057,15 +2186,55 @@ stat_iterator (void *cls,
int is_persistent)
{
const struct STATcls *stat_cls = (const struct STATcls *) cls;
- const struct RPSPeer *rps_peer = (const struct RPSPeer *) stat_cls->rps_peer;
+ struct RPSPeer *rps_peer = (struct RPSPeer *) stat_cls->rps_peer;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got stat value: %s - %" PRIu64 "\n",
//stat_type_2_str (stat_cls->stat_type),
name,
value);
- to_file (rps_peer->file_name_stats,
- "%s: %" PRIu64 "\n",
- name,
- value);
+ //to_file (rps_peer->file_name_stats,
+ // "%s: %" PRIu64 "\n",
+ // name,
+ // value);
+ switch (stat_str_2_type (name))
+ {
+ case STAT_TYPE_ROUNDS:
+ rps_peer->num_blocks = value;
+ case STAT_TYPE_BLOCKS:
+ rps_peer->num_blocks = value;
+ case STAT_TYPE_BLOCKS_MANY_PUSH:
+ rps_peer->num_blocks_many_push = value;
+ case STAT_TYPE_BLOCKS_NO_PUSH:
+ rps_peer->num_blocks_no_push = value;
+ case STAT_TYPE_BLOCKS_NO_PULL:
+ rps_peer->num_blocks_no_pull = value;
+ case STAT_TYPE_BLOCKS_MANY_PUSH_NO_PULL:
+ rps_peer->num_blocks_many_push_no_pull = value;
+ case STAT_TYPE_BLOCKS_NO_PUSH_NO_PULL:
+ rps_peer->num_blocks_no_push_no_pull = value;
+ case STAT_TYPE_ISSUED_PUSH_SEND:
+ rps_peer->num_issued_push = value;
+ case STAT_TYPE_ISSUED_PULL_REQ:
+ rps_peer->num_issued_pull_req = value;
+ case STAT_TYPE_ISSUED_PULL_REP:
+ rps_peer->num_issued_pull_rep = value;
+ case STAT_TYPE_SENT_PUSH_SEND:
+ rps_peer->num_sent_push = value;
+ case STAT_TYPE_SENT_PULL_REQ:
+ rps_peer->num_sent_pull_req = value;
+ case STAT_TYPE_SENT_PULL_REP:
+ rps_peer->num_sent_pull_rep = value;
+ case STAT_TYPE_RECV_PUSH_SEND:
+ rps_peer->num_recv_push = value;
+ case STAT_TYPE_RECV_PULL_REQ:
+ rps_peer->num_recv_pull_req = value;
+ case STAT_TYPE_RECV_PULL_REP:
+ rps_peer->num_recv_pull_rep = value;
+ case STAT_TYPE_MAX:
+ default:
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Unknown statistics string: %s\n",
+ name);
+ }
return GNUNET_OK;
}
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: rps profiler: collect statistics,
gnunet <=