aboutsummaryrefslogtreecommitdiff
path: root/src/fs
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-05-30 15:33:19 +0000
committerChristian Grothoff <christian@grothoff.org>2011-05-30 15:33:19 +0000
commit93002ad128d9dc23f80fc2384e0dd3f033315c14 (patch)
tree3c164635a06ae666d39acd155d7d947465f95b74 /src/fs
parent8dc367b10a197123c7148505aa1757055c2e3502 (diff)
downloadgnunet-93002ad128d9dc23f80fc2384e0dd3f033315c14.tar.gz
gnunet-93002ad128d9dc23f80fc2384e0dd3f033315c14.zip
track performance data
Diffstat (limited to 'src/fs')
-rw-r--r--src/fs/gnunet-service-fs_cp.c6
-rw-r--r--src/fs/gnunet-service-fs_pe.c46
-rw-r--r--src/fs/gnunet-service-fs_pr.c18
3 files changed, 63 insertions, 7 deletions
diff --git a/src/fs/gnunet-service-fs_cp.c b/src/fs/gnunet-service-fs_cp.c
index e0154f2d7..7123db73a 100644
--- a/src/fs/gnunet-service-fs_cp.c
+++ b/src/fs/gnunet-service-fs_cp.c
@@ -1177,6 +1177,10 @@ GSF_handle_p2p_query_ (const struct GNUNET_PeerIdentity *other,
1177 return NULL; 1177 return NULL;
1178 } 1178 }
1179 /* existing request has lower TTL, drop old one! */ 1179 /* existing request has lower TTL, drop old one! */
1180 GNUNET_STATISTICS_update (GSF_stats,
1181 gettext_noop ("# P2P searches active"),
1182 -1,
1183 GNUNET_NO);
1180 priority += prd->priority; 1184 priority += prd->priority;
1181 GSF_pending_request_cancel_ (pr); 1185 GSF_pending_request_cancel_ (pr);
1182 GNUNET_assert (GNUNET_YES == 1186 GNUNET_assert (GNUNET_YES ==
@@ -1217,7 +1221,7 @@ GSF_handle_p2p_query_ (const struct GNUNET_PeerIdentity *other,
1217 peerreq, 1221 peerreq,
1218 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); 1222 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE));
1219 GNUNET_STATISTICS_update (GSF_stats, 1223 GNUNET_STATISTICS_update (GSF_stats,
1220 gettext_noop ("# P2P searches received"), 1224 gettext_noop ("# P2P query messages received and processed"),
1221 1, 1225 1,
1222 GNUNET_NO); 1226 GNUNET_NO);
1223 GNUNET_STATISTICS_update (GSF_stats, 1227 GNUNET_STATISTICS_update (GSF_stats,
diff --git a/src/fs/gnunet-service-fs_pe.c b/src/fs/gnunet-service-fs_pe.c
index 2ae50259d..6c4d3df17 100644
--- a/src/fs/gnunet-service-fs_pe.c
+++ b/src/fs/gnunet-service-fs_pe.c
@@ -119,6 +119,16 @@ struct PeerPlan
119 */ 119 */
120static struct GNUNET_CONTAINER_MultiHashMap *plans; 120static struct GNUNET_CONTAINER_MultiHashMap *plans;
121 121
122/**
123 * Sum of all transmission counters (equals total delay for all plan entries).
124 */
125static unsigned long long total_delay;
126
127/**
128 * Number of plan entries.
129 */
130static unsigned long long plan_count;
131
122 132
123/** 133/**
124 * Figure out when and how to transmit to the given peer. 134 * Figure out when and how to transmit to the given peer.
@@ -142,15 +152,19 @@ plan (struct PeerPlan *pp,
142 struct GSF_RequestPlan *rp) 152 struct GSF_RequestPlan *rp)
143{ 153{
144 struct GSF_PendingRequestData *prd; 154 struct GSF_PendingRequestData *prd;
155 struct GNUNET_TIME_Relative delay;
145 156
157 GNUNET_STATISTICS_set (GSF_stats,
158 gettext_noop ("# average retransmission delay (ms)"),
159 total_delay * 1000LL / plan_count,
160 GNUNET_NO);
146 prd = GSF_pending_request_get_data_ (rp->pr); 161 prd = GSF_pending_request_get_data_ (rp->pr);
147 // FIXME: calculate 'rp->earliest_transmission'! 162 // FIXME: calculate 'rp->earliest_transmission'!
148 // FIXME: claculate 'rp->priority'! 163 // FIXME: claculate 'rp->priority'!
164 delay = GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
165 rp->transmission_counter);
149 rp->earliest_transmission 166 rp->earliest_transmission
150 = GNUNET_TIME_relative_to_absolute 167 = GNUNET_TIME_relative_to_absolute (delay);
151 (GNUNET_TIME_relative_multiply
152 (GNUNET_TIME_UNIT_SECONDS,
153 rp->transmission_counter));
154#if DEBUG_FS 168#if DEBUG_FS
155 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 169 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
156 "Earliest (re)transmission for `%s' in %us\n", 170 "Earliest (re)transmission for `%s' in %us\n",
@@ -215,6 +229,7 @@ transmit_message_callback (void *cls,
215 rp->hn = NULL; 229 rp->hn = NULL;
216 rp->last_transmission = GNUNET_TIME_absolute_get (); 230 rp->last_transmission = GNUNET_TIME_absolute_get ();
217 rp->transmission_counter++; 231 rp->transmission_counter++;
232 total_delay++;
218#if DEBUG_FS 233#if DEBUG_FS
219 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 234 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
220 "Executing plan %p executed %u times, planning retransmission\n", 235 "Executing plan %p executed %u times, planning retransmission\n",
@@ -222,6 +237,10 @@ transmit_message_callback (void *cls,
222 rp->transmission_counter); 237 rp->transmission_counter);
223#endif 238#endif
224 plan (pp, rp); 239 plan (pp, rp);
240 GNUNET_STATISTICS_update (GSF_stats,
241 gettext_noop ("# queries messages sent to other peers"),
242 1,
243 GNUNET_NO);
225 return msize; 244 return msize;
226} 245}
227 246
@@ -330,6 +349,11 @@ GSF_plan_add_ (struct GSF_ConnectedPeer *cp,
330 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); 349 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY);
331 } 350 }
332 prd = GSF_pending_request_get_data_ (pr); 351 prd = GSF_pending_request_get_data_ (pr);
352 plan_count++;
353 GNUNET_STATISTICS_update (GSF_stats,
354 gettext_noop ("# query plan entries"),
355 1,
356 GNUNET_NO);
333 rp = GNUNET_malloc (sizeof (struct GSF_RequestPlan)); 357 rp = GNUNET_malloc (sizeof (struct GSF_RequestPlan));
334#if DEBUG_FS 358#if DEBUG_FS
335 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 359 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -381,6 +405,7 @@ GSF_plan_notify_peer_disconnect_ (const struct GSF_ConnectedPeer *cp)
381 GNUNET_CONTAINER_DLL_remove (prd->rp_head, 405 GNUNET_CONTAINER_DLL_remove (prd->rp_head,
382 prd->rp_tail, 406 prd->rp_tail,
383 rp); 407 rp);
408 plan_count--;
384 GNUNET_free (rp); 409 GNUNET_free (rp);
385 } 410 }
386 GNUNET_CONTAINER_heap_destroy (pp->priority_heap); 411 GNUNET_CONTAINER_heap_destroy (pp->priority_heap);
@@ -390,8 +415,14 @@ GSF_plan_notify_peer_disconnect_ (const struct GSF_ConnectedPeer *cp)
390 GNUNET_CONTAINER_DLL_remove (prd->rp_head, 415 GNUNET_CONTAINER_DLL_remove (prd->rp_head,
391 prd->rp_tail, 416 prd->rp_tail,
392 rp); 417 rp);
418 plan_count--;
393 GNUNET_free (rp); 419 GNUNET_free (rp);
394 } 420 }
421 GNUNET_STATISTICS_set (GSF_stats,
422 gettext_noop ("# query plan entries"),
423 plan_count,
424 GNUNET_NO);
425
395 GNUNET_CONTAINER_heap_destroy (pp->delay_heap); 426 GNUNET_CONTAINER_heap_destroy (pp->delay_heap);
396 GNUNET_free (pp); 427 GNUNET_free (pp);
397} 428}
@@ -416,8 +447,13 @@ GSF_plan_notify_request_done_ (struct GSF_PendingRequest *pr)
416 GNUNET_CONTAINER_DLL_remove (prd->rp_head, 447 GNUNET_CONTAINER_DLL_remove (prd->rp_head,
417 prd->rp_tail, 448 prd->rp_tail,
418 rp); 449 rp);
450 plan_count--;
419 GNUNET_free (rp); 451 GNUNET_free (rp);
420 } 452 }
453 GNUNET_STATISTICS_set (GSF_stats,
454 gettext_noop ("# query plan entries"),
455 plan_count,
456 GNUNET_NO);
421} 457}
422 458
423 459
diff --git a/src/fs/gnunet-service-fs_pr.c b/src/fs/gnunet-service-fs_pr.c
index 1347f7789..d4f14985b 100644
--- a/src/fs/gnunet-service-fs_pr.c
+++ b/src/fs/gnunet-service-fs_pr.c
@@ -1146,6 +1146,12 @@ process_local_reply (void *cls,
1146 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1146 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1147 "No further local responses available.\n"); 1147 "No further local responses available.\n");
1148#endif 1148#endif
1149 if ( (pr->public_data.type == GNUNET_BLOCK_TYPE_FS_DBLOCK) ||
1150 (pr->public_data.type == GNUNET_BLOCK_TYPE_FS_IBLOCK) )
1151 GNUNET_STATISTICS_update (GSF_stats,
1152 gettext_noop ("# requested DBLOCK or IBLOCK not found"),
1153 1,
1154 GNUNET_NO);
1149 goto check_error_and_continue; 1155 goto check_error_and_continue;
1150 } 1156 }
1151#if DEBUG_FS 1157#if DEBUG_FS
@@ -1174,7 +1180,17 @@ process_local_reply (void *cls,
1174 anonymity, expiration, uid, 1180 anonymity, expiration, uid,
1175 &process_local_reply, 1181 &process_local_reply,
1176 pr)) 1182 pr))
1177 return; /* we're done */ 1183 {
1184 GNUNET_STATISTICS_update (GSF_stats,
1185 gettext_noop ("# on-demand lookups performed successfully"),
1186 1,
1187 GNUNET_NO);
1188 return; /* we're done */
1189 }
1190 GNUNET_STATISTICS_update (GSF_stats,
1191 gettext_noop ("# on-demand lookups failed"),
1192 1,
1193 GNUNET_NO);
1178 GNUNET_SCHEDULER_cancel (pr->warn_task); 1194 GNUNET_SCHEDULER_cancel (pr->warn_task);
1179 pr->warn_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES, 1195 pr->warn_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES,
1180 &warn_delay_task, 1196 &warn_delay_task,