aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-06-25 21:41:35 +0000
committerChristian Grothoff <christian@grothoff.org>2010-06-25 21:41:35 +0000
commit1174c809820401ec254a701b4d478a8e88b8af59 (patch)
tree6f68cc38ef9fafcc63f478fd8b71c46deace5fc0 /src
parent59921d3b90ed8bf823605517f6692c26a1c9dc44 (diff)
downloadgnunet-1174c809820401ec254a701b4d478a8e88b8af59.tar.gz
gnunet-1174c809820401ec254a701b4d478a8e88b8af59.zip
marking performance issues
Diffstat (limited to 'src')
-rw-r--r--src/transport/gnunet-service-transport.c2
-rw-r--r--src/transport/plugin_transport_tcp.c6
-rw-r--r--src/transport/test_transport_api_reliability.c2
-rw-r--r--src/transport/test_transport_api_tcp_peer1.conf2
-rw-r--r--src/transport/test_transport_api_tcp_peer2.conf1
-rw-r--r--src/util/scheduler.c8
6 files changed, 18 insertions, 3 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index f9191747e..c96652c75 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -1772,6 +1772,7 @@ transmit_to_peer (struct TransportClient *client,
1772 mq = GNUNET_malloc (sizeof (struct MessageQueue) + message_buf_size); 1772 mq = GNUNET_malloc (sizeof (struct MessageQueue) + message_buf_size);
1773 mq->specific_address = peer_address; 1773 mq->specific_address = peer_address;
1774 mq->client = client; 1774 mq->client = client;
1775 /* FIXME: this memcpy can be up to 7% of our total runtime! */
1775 memcpy (&mq[1], message_buf, message_buf_size); 1776 memcpy (&mq[1], message_buf, message_buf_size);
1776 mq->message_buf = (const char*) &mq[1]; 1777 mq->message_buf = (const char*) &mq[1];
1777 mq->message_buf_size = message_buf_size; 1778 mq->message_buf_size = message_buf_size;
@@ -4781,6 +4782,7 @@ handle_send (void *cls,
4781 tcmc->priority = ntohl (obm->priority); 4782 tcmc->priority = ntohl (obm->priority);
4782 tcmc->timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_relative_ntoh (obm->timeout)); 4783 tcmc->timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_relative_ntoh (obm->timeout));
4783 tcmc->msize = msize; 4784 tcmc->msize = msize;
4785 /* FIXME: this memcpy can be up to 7% of our total runtime */
4784 memcpy (&tcmc[1], obmm, msize); 4786 memcpy (&tcmc[1], obmm, msize);
4785 GNUNET_SERVER_client_keep (client); 4787 GNUNET_SERVER_client_keep (client);
4786 setup_peer_check_blacklist (&obm->peer, GNUNET_YES, 4788 setup_peer_check_blacklist (&obm->peer, GNUNET_YES,
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index c1397da61..08bb00ff6 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -647,6 +647,7 @@ do_transmit (void *cls, size_t size, void *buf)
647 session->pending_messages_tail, 647 session->pending_messages_tail,
648 pos); 648 pos);
649 GNUNET_assert (size >= pos->message_size); 649 GNUNET_assert (size >= pos->message_size);
650 /* FIXME: this memcpy can be up to 7% of our total runtime */
650 memcpy (cbuf, pos->msg, pos->message_size); 651 memcpy (cbuf, pos->msg, pos->message_size);
651 cbuf += pos->message_size; 652 cbuf += pos->message_size;
652 ret += pos->message_size; 653 ret += pos->message_size;
@@ -1089,8 +1090,11 @@ tcp_plugin_send (void *cls,
1089 1090
1090 /* create new message entry */ 1091 /* create new message entry */
1091 pm = GNUNET_malloc (sizeof (struct PendingMessage) + msgbuf_size); 1092 pm = GNUNET_malloc (sizeof (struct PendingMessage) + msgbuf_size);
1093 /* FIXME: the memset of this malloc can be up to 2% of our total runtime */
1092 pm->msg = (const char*) &pm[1]; 1094 pm->msg = (const char*) &pm[1];
1093 memcpy (&pm[1], msg, msgbuf_size); 1095 memcpy (&pm[1], msg, msgbuf_size);
1096 /* FIXME: this memcpy can be up to 7% of our total run-time
1097 (for transport service) */
1094 pm->message_size = msgbuf_size; 1098 pm->message_size = msgbuf_size;
1095 pm->timeout = GNUNET_TIME_relative_to_absolute (timeout); 1099 pm->timeout = GNUNET_TIME_relative_to_absolute (timeout);
1096 pm->transmit_cont = cont; 1100 pm->transmit_cont = cont;
diff --git a/src/transport/test_transport_api_reliability.c b/src/transport/test_transport_api_reliability.c
index 27b86b388..b1891b32d 100644
--- a/src/transport/test_transport_api_reliability.c
+++ b/src/transport/test_transport_api_reliability.c
@@ -47,7 +47,7 @@
47 * 'MAX_PENDING' in 'gnunet-service-transport.c', otherwise 47 * 'MAX_PENDING' in 'gnunet-service-transport.c', otherwise
48 * messages may be dropped even for a reliable transport. 48 * messages may be dropped even for a reliable transport.
49 */ 49 */
50#define TOTAL_MSGS (60000 * 2) 50#define TOTAL_MSGS (60000 * 20)
51 51
52/** 52/**
53 * How long until we give up on transmitting the message? 53 * How long until we give up on transmitting the message?
diff --git a/src/transport/test_transport_api_tcp_peer1.conf b/src/transport/test_transport_api_tcp_peer1.conf
index 363791e1c..2fe256318 100644
--- a/src/transport/test_transport_api_tcp_peer1.conf
+++ b/src/transport/test_transport_api_tcp_peer1.conf
@@ -34,7 +34,7 @@ MINIMUM-FRIENDS = 0
34PLUGINS = tcp 34PLUGINS = tcp
35#DEBUG = YES 35#DEBUG = YES
36#PREFIX = xterm -T transport2 -e gdb --command=cmd --args 36#PREFIX = xterm -T transport2 -e gdb --command=cmd --args
37#PREFIX = valgrind --leak-check=full 37#PREFIX = valgrind --tool=callgrind
38ACCEPT_FROM6 = ::1; 38ACCEPT_FROM6 = ::1;
39ACCEPT_FROM = 127.0.0.1; 39ACCEPT_FROM = 127.0.0.1;
40NEIGHBOUR_LIMIT = 50 40NEIGHBOUR_LIMIT = 50
diff --git a/src/transport/test_transport_api_tcp_peer2.conf b/src/transport/test_transport_api_tcp_peer2.conf
index 3c7a8b8ff..58abe56eb 100644
--- a/src/transport/test_transport_api_tcp_peer2.conf
+++ b/src/transport/test_transport_api_tcp_peer2.conf
@@ -35,6 +35,7 @@ PLUGINS = tcp
35#DEBUG = YES 35#DEBUG = YES
36ACCEPT_FROM6 = ::1; 36ACCEPT_FROM6 = ::1;
37ACCEPT_FROM = 127.0.0.1; 37ACCEPT_FROM = 127.0.0.1;
38#PREFIX = valgrind --tool=callgrind
38NEIGHBOUR_LIMIT = 50 39NEIGHBOUR_LIMIT = 50
39#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/transport/.libs/gnunet-service-transport 40#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/transport/.libs/gnunet-service-transport
40BINARY = gnunet-service-transport 41BINARY = gnunet-service-transport
diff --git a/src/util/scheduler.c b/src/util/scheduler.c
index b94152025..5a10987ac 100644
--- a/src/util/scheduler.c
+++ b/src/util/scheduler.c
@@ -306,6 +306,10 @@ update_sets (struct GNUNET_SCHEDULER_Handle *sched,
306 if (timeout->value > to.value) 306 if (timeout->value > to.value)
307 *timeout = to; 307 *timeout = to;
308 } 308 }
309 /* FIXME: this is a very expensive (9% of runtime for some
310 benchmarks!) way to merge the bit sets; specializing
311 the common case where we only have one bit in the pos's
312 set should improve performance dramatically! */
309 if (pos->read_set != NULL) 313 if (pos->read_set != NULL)
310 GNUNET_NETWORK_fdset_add (rs, pos->read_set); 314 GNUNET_NETWORK_fdset_add (rs, pos->read_set);
311 if (pos->write_set != NULL) 315 if (pos->write_set != NULL)
@@ -332,6 +336,10 @@ set_overlaps (const struct GNUNET_NETWORK_FDSet *ready,
332{ 336{
333 if (NULL == want) 337 if (NULL == want)
334 return GNUNET_NO; 338 return GNUNET_NO;
339 /* FIXME: this is a very expensive (10% of runtime for some
340 benchmarks!) way to merge the bit sets; specializing
341 the common case where we only have one bit in the pos's
342 set should improve performance dramatically! */
335 if (GNUNET_NETWORK_fdset_overlap (ready, want)) 343 if (GNUNET_NETWORK_fdset_overlap (ready, want))
336 { 344 {
337 /* copy all over (yes, there maybe unrelated bits, 345 /* copy all over (yes, there maybe unrelated bits,