Hi all, The patch I sent contained a bug. The second change in flood_profile.c causes the new relative_times_sizes_process_stats to always be used if you specify relative_times for your report. I've included a patch to fix the problem. I had mistakenly changed the list that's used to initialize the handlers when you specify the relative_times report. The fix is to remove the new relative_times_sizes_process_stats entry from the array report_relative_times_group[].
I also discovered that the patch provided only enables recording the buffer sizes for the request and response. But, there's some additional work needed to ensure we're retrieving the entire response from the server. I noticed that my report would state that flood received about 1K for a 18K image. The missing piece seems to be the "wantresponse" flag in the request_t structure. For what I'm measuring (total bytes sent and received), I need it to be true before flood calls either generic_recv_resp() and keepalive_recv_resp() to have the response from the server. It seems we need to be able to conditionally turn on some kind of "full-response" flag for the "relative_times_sizes_process_stats" patch to be useful. Cheers, Phi-Long. --- flood_profile.c.orig 2003-02-07 09:34:02.000000000 -0800 +++ flood_profile.c 2003-02-07 14:01:16.000000000 -0800 @@ -306,7 +306,7 @@ const char * socket_generic_group[] = { "generic_socket_init", "generic_begin_conn", "generic_send_req", "generic_recv_resp", "generic_end_conn", "generic_socket_destroy", NULL }; const char * socket_keepalive_group[] = { "keepalive_socket_init", "keepalive_begin_conn", "keepalive_send_req", "keepalive_recv_resp", "keepalive_end_conn", "keepalive_socket_destroy", NULL }; const char * profile_round_robin_group[] = { "round_robin_profile_init", "round_robin_get_next_url", "round_robin_create_req", "round_robin_postprocess", "round_robin_loop_condition", "round_robin_profile_destroy", NULL }; -const char * report_relative_times_group[] = { "relative_times_report_init", "relative_times_process_stats", "relative_times_sizes_process_stats", "relative_times_report_stats", "relative_times_destroy_report", NULL }; +const char * report_relative_times_group[] = { "relative_times_report_init", "relative_times_process_stats", "relative_times_report_stats", "relative_times_destroy_report", NULL }; profile_group_handler_t profile_group_handlers[] = { {"report", "easy", report_easy_group }, ------- Original Message Dated: Fri, 07 Feb 2003 08:22:58 -0800 | From: [EMAIL PROTECTED] | To: [EMAIL PROTECTED] | Subject: [PATCH] flood: Add handler relative_times_sizes_process_stats | This patch adds an alternative to the handler: | relative_times_process_stats | The new handler: | relative_times_sizes_process_stats | includes the number of bytes sent in the request and received in the | response. This patch retrieves the number of bytes sent and received | from data member "rbufsize" in the request (request_t) and response | (response_t) structures. | ...