diff options
-rw-r--r-- | src/setu/gnunet-service-setu.c | 55 | ||||
-rw-r--r-- | src/setu/perf_setu_api.c | 10 |
2 files changed, 32 insertions, 33 deletions
diff --git a/src/setu/gnunet-service-setu.c b/src/setu/gnunet-service-setu.c index 583ebeace..a39babd3d 100644 --- a/src/setu/gnunet-service-setu.c +++ b/src/setu/gnunet-service-setu.c | |||
@@ -682,6 +682,9 @@ struct perf_rtt_struct | |||
682 | struct perf_num_send_resived_msg over; | 682 | struct perf_num_send_resived_msg over; |
683 | int se_diff; | 683 | int se_diff; |
684 | int active_passive_switches; | 684 | int active_passive_switches; |
685 | int se_diff_local; | ||
686 | int se_diff_remote; | ||
687 | int mode_of_operation; | ||
685 | }; | 688 | }; |
686 | 689 | ||
687 | struct perf_rtt_struct perf_rtt; | 690 | struct perf_rtt_struct perf_rtt; |
@@ -726,7 +729,6 @@ sum_sent_received_bytes(int size, struct perf_num_send_resived_msg perf_rtt_stru | |||
726 | static float | 729 | static float |
727 | calculate_perf_rtt() { | 730 | calculate_perf_rtt() { |
728 | 731 | ||
729 | LOG(GNUNET_ERROR_TYPE_ERROR,"CALCUALATE PERFOMANCE VALUES\n"); | ||
730 | /** | 732 | /** |
731 | * Calculate RTT of init phase normally always 1 | 733 | * Calculate RTT of init phase normally always 1 |
732 | */ | 734 | */ |
@@ -737,18 +739,17 @@ calculate_perf_rtt() { | |||
737 | * Calculate RGNUNET_SETU_AcceptMessageRT of Fullsync normaly 1 or 1.5 depending | 739 | * Calculate RGNUNET_SETU_AcceptMessageRT of Fullsync normaly 1 or 1.5 depending |
738 | */ | 740 | */ |
739 | if (( perf_rtt.element_full.received != 0 ) || | 741 | if (( perf_rtt.element_full.received != 0 ) || |
740 | ( perf_rtt.element_full.sent != 0) | 742 | ( perf_rtt.element_full.sent != 0) |
741 | ) rtt += 1; | 743 | ) rtt += 1; |
742 | 744 | ||
743 | if (( perf_rtt.request_full.received != 0 ) || | 745 | if (( perf_rtt.request_full.received != 0 ) || |
744 | ( perf_rtt.request_full.sent != 0) | 746 | ( perf_rtt.request_full.sent != 0) |
745 | ) rtt += 0.5; | 747 | ) rtt += 0.5; |
746 | 748 | ||
747 | /** | 749 | /** |
748 | * In case of a differential sync 3 rtt's are needed. | 750 | * In case of a differential sync 3 rtt's are needed. |
749 | * for every active/passive switch additional 3.5 rtt's are used | 751 | * for every active/passive switch additional 3.5 rtt's are used |
750 | */ | 752 | */ |
751 | LOG(GNUNET_ERROR_TYPE_ERROR,"ITER: %d\n", perf_rtt.active_passive_switches); | ||
752 | if (( perf_rtt.element.received != 0 ) || | 753 | if (( perf_rtt.element.received != 0 ) || |
753 | ( perf_rtt.element.sent != 0)) { | 754 | ( perf_rtt.element.sent != 0)) { |
754 | int iterations = perf_rtt.active_passive_switches; | 755 | int iterations = perf_rtt.active_passive_switches; |
@@ -758,26 +759,22 @@ calculate_perf_rtt() { | |||
758 | rtt += 2.5; | 759 | rtt += 2.5; |
759 | } | 760 | } |
760 | 761 | ||
762 | |||
761 | /** | 763 | /** |
762 | * Calculate data sended size | 764 | * Calculate data sended size |
763 | */ | 765 | */ |
764 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_REQUEST_FULL), perf_rtt.request_full); | 766 | bytes_transmitted += sum_sent_received_bytes(4, perf_rtt.request_full); |
765 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_FULL_ELEMENT), perf_rtt.element_full); | ||
766 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_ELEMENTS), perf_rtt.element); | ||
767 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_OPERATION_REQUEST), perf_rtt.operation_request); | ||
768 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_SE), perf_rtt.se); | ||
769 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_FULL_DONE), perf_rtt.full_done); | ||
770 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_IBF), perf_rtt.ibf); | ||
771 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_INQUIRY), perf_rtt.inquery); | ||
772 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_DEMAND), perf_rtt.demand); | ||
773 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_OFFER), perf_rtt.offer); | ||
774 | bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_DONE), perf_rtt.done); | ||
775 | |||
776 | LOG(GNUNET_ERROR_TYPE_DEBUG,"Bytes Transmitted: %d\n", bytes_transmitted); | ||
777 | |||
778 | LOG(GNUNET_ERROR_TYPE_DEBUG,"Reached tradeoff bandwidth/rtt: %f\n", (bytes_transmitted / rtt )); | ||
779 | 767 | ||
780 | LOG(GNUNET_ERROR_TYPE_ERROR,"Estimateded set difference: %d\n", perf_rtt.se_diff); | 768 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct GNUNET_SETU_ElementMessage), perf_rtt.element_full); |
769 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct GNUNET_SETU_ElementMessage), perf_rtt.element); | ||
770 | // bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_OPERATION_REQUEST), perf_rtt.operation_request); | ||
771 | // bytes_transmitted += sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_SE), perf_rtt.se); | ||
772 | bytes_transmitted += sum_sent_received_bytes(4, perf_rtt.full_done); | ||
773 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct IBFMessage), perf_rtt.ibf); | ||
774 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct InquiryMessage), perf_rtt.inquery); | ||
775 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct GNUNET_MessageHeader), perf_rtt.demand); | ||
776 | bytes_transmitted += sum_sent_received_bytes(sizeof(struct GNUNET_MessageHeader), perf_rtt.offer); | ||
777 | bytes_transmitted += sum_sent_received_bytes(4, perf_rtt.done); | ||
781 | 778 | ||
782 | 779 | ||
783 | 780 | ||
@@ -793,12 +790,11 @@ calculate_perf_rtt() { | |||
793 | int decoded = 0; | 790 | int decoded = 0; |
794 | if(perf_rtt.active_passive_switches == 0) | 791 | if(perf_rtt.active_passive_switches == 0) |
795 | decoded = 1; | 792 | decoded = 1; |
796 | LOG(GNUNET_ERROR_TYPE_ERROR,"decoded=%d, msg_sent=%d, msg_recv=%d, byte_sent=%d, bytes_recv=%d \n", decoded, perf_rtt.ibf.sent, perf_rtt.ibf.received, perf_rtt.ibf.sent_var_bytes, perf_rtt.ibf.received_var_bytes); | 793 | int ibf_bytes_transmitted = sum_sent_received_bytes(sizeof(struct IBFMessage), perf_rtt.ibf); |
797 | int ibf_bytes_transmitted = sum_sent_received_bytes(sizeof(GNUNET_MESSAGE_TYPE_SETU_P2P_IBF), perf_rtt.ibf); | ||
798 | 794 | ||
799 | 795 | ||
800 | FILE *out1 = fopen("perf_failure_bucket_number_factor.csv", "a"); | 796 | FILE *out1 = fopen("perf_failure_bucket_number_factor.csv", "a"); |
801 | fprintf(out1, "%d,%f,%d,%d,%f,%d\n",num_per_bucket,factor,decoded,ibf_bytes_transmitted,rtt,perf_rtt.se_diff); | 797 | fprintf(out1, "%d,%f,%d,%d,%f,%d,%d,%d,%d,%d\n",num_per_bucket,factor,decoded,ibf_bytes_transmitted,rtt,perf_rtt.se_diff,bytes_transmitted,perf_rtt.se_diff_local,perf_rtt.se_diff_remote, perf_rtt.mode_of_operation); |
802 | fclose(out1); | 798 | fclose(out1); |
803 | 799 | ||
804 | 800 | ||
@@ -807,9 +803,9 @@ calculate_perf_rtt() { | |||
807 | * <se_diff>,<active_passive_switches>,<bytes_transmitted>,<rtt> | 803 | * <se_diff>,<active_passive_switches>,<bytes_transmitted>,<rtt> |
808 | */ | 804 | */ |
809 | 805 | ||
810 | FILE *out = fopen("perf_stats.csv", "a"); | 806 | // FILE *out = fopen("perf_stats.csv", "a"); |
811 | fprintf(out, "%d,%d,%d,%f\n", perf_rtt.se_diff, perf_rtt.active_passive_switches,bytes_transmitted,rtt); | 807 | // fprintf(out, "%d,%d,%d,%f\n", perf_rtt.se_diff, perf_rtt.active_passive_switches,bytes_transmitted,rtt); |
812 | fclose(out); | 808 | //fclose(out); |
813 | 809 | ||
814 | return rtt; | 810 | return rtt; |
815 | } | 811 | } |
@@ -1658,12 +1654,14 @@ handle_union_p2p_strata_estimator (void *cls, | |||
1658 | if ((op->initial_size <= other_size) || | 1654 | if ((op->initial_size <= other_size) || |
1659 | (0 == other_size)) | 1655 | (0 == other_size)) |
1660 | { | 1656 | { |
1657 | perf_rtt.mode_of_operation = 1; | ||
1661 | send_full_set (op); | 1658 | send_full_set (op); |
1662 | } | 1659 | } |
1663 | else | 1660 | else |
1664 | { | 1661 | { |
1665 | struct GNUNET_MQ_Envelope *ev; | 1662 | struct GNUNET_MQ_Envelope *ev; |
1666 | 1663 | ||
1664 | perf_rtt.mode_of_operation = 2; | ||
1667 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1665 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1668 | "Telling other peer that we expect its full set\n"); | 1666 | "Telling other peer that we expect its full set\n"); |
1669 | op->phase = PHASE_FULL_RECEIVING; | 1667 | op->phase = PHASE_FULL_RECEIVING; |
@@ -1680,6 +1678,7 @@ handle_union_p2p_strata_estimator (void *cls, | |||
1680 | "# of ibf sends", | 1678 | "# of ibf sends", |
1681 | 1, | 1679 | 1, |
1682 | GNUNET_NO); | 1680 | GNUNET_NO); |
1681 | perf_rtt.mode_of_operation = 0; | ||
1683 | if (GNUNET_OK != | 1682 | if (GNUNET_OK != |
1684 | send_ibf (op, | 1683 | send_ibf (op, |
1685 | get_order_from_difference (diff, op->ibf_number_buckets_per_element, op->ibf_bucket_number_factor))) | 1684 | get_order_from_difference (diff, op->ibf_number_buckets_per_element, op->ibf_bucket_number_factor))) |
diff --git a/src/setu/perf_setu_api.c b/src/setu/perf_setu_api.c index 9c7b51984..dd3eec614 100644 --- a/src/setu/perf_setu_api.c +++ b/src/setu/perf_setu_api.c | |||
@@ -404,7 +404,7 @@ run (void *cls, | |||
404 | "Running real set-reconciliation\n"); | 404 | "Running real set-reconciliation\n"); |
405 | //init_set1 (); | 405 | //init_set1 (); |
406 | // limit ~23800 element total | 406 | // limit ~23800 element total |
407 | initRandomSets(45,500,500,32); | 407 | initRandomSets(200,300,500,32); |
408 | } | 408 | } |
409 | 409 | ||
410 | void perf_thread() { | 410 | void perf_thread() { |
@@ -418,7 +418,7 @@ void perf_thread() { | |||
418 | 418 | ||
419 | 419 | ||
420 | static void run_petf_thread(int total_runs) { | 420 | static void run_petf_thread(int total_runs) { |
421 | int core_count = get_nprocs_conf() * 2; | 421 | int core_count = get_nprocs_conf(); |
422 | pid_t child_pid, wpid; | 422 | pid_t child_pid, wpid; |
423 | int status = 0; | 423 | int status = 0; |
424 | 424 | ||
@@ -447,9 +447,9 @@ static void execute_perf() { | |||
447 | //FILE *out = fopen("perfstats.log", "w"); | 447 | //FILE *out = fopen("perfstats.log", "w"); |
448 | //fprintf(out, "se_diff,active_passive_switches,bytes_transmitted,rtt\n"); | 448 | //fprintf(out, "se_diff,active_passive_switches,bytes_transmitted,rtt\n"); |
449 | 449 | ||
450 | for (int out_out_ctr = 1; out_out_ctr <= 10; out_out_ctr++) { | 450 | for (int out_out_ctr = 4; out_out_ctr <= 4; out_out_ctr++) { |
451 | 451 | ||
452 | for (int out_ctr = 10; out_ctr <= 60; out_ctr++) { | 452 | for (int out_ctr = 40; out_ctr <= 40; out_ctr++) { |
453 | 453 | ||
454 | float base = 0.1; | 454 | float base = 0.1; |
455 | float x = out_ctr * base; | 455 | float x = out_ctr * base; |
@@ -461,7 +461,7 @@ static void execute_perf() { | |||
461 | GNUNET_CONFIGURATION_set_value_number(setu_cfg, "IBF", "NUMBER_PER_BUCKET", out_out_ctr); // K default=4 | 461 | GNUNET_CONFIGURATION_set_value_number(setu_cfg, "IBF", "NUMBER_PER_BUCKET", out_out_ctr); // K default=4 |
462 | GNUNET_CONFIGURATION_set_value_string(setu_cfg, "PERFORMANCE", "TRADEOFF", "0.25"); | 462 | GNUNET_CONFIGURATION_set_value_string(setu_cfg, "PERFORMANCE", "TRADEOFF", "0.25"); |
463 | GNUNET_CONFIGURATION_set_value_string(setu_cfg, "PERFORMANCE", "MAX_SET_DIFF_FACTOR_DIFFERENTIAL", | 463 | GNUNET_CONFIGURATION_set_value_string(setu_cfg, "PERFORMANCE", "MAX_SET_DIFF_FACTOR_DIFFERENTIAL", |
464 | "20000");//default=0.25 | 464 | "0.25");//default=0.25 |
465 | 465 | ||
466 | 466 | ||
467 | if (GNUNET_OK != GNUNET_CONFIGURATION_write(setu_cfg, "/tmp/perf_setu.conf")) | 467 | if (GNUNET_OK != GNUNET_CONFIGURATION_write(setu_cfg, "/tmp/perf_setu.conf")) |