diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2013-09-18 09:24:32 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2013-09-18 09:24:32 +0000 |
commit | 8413204fafc0c84783bf3cd1ebee9ab3aa2f0ca7 (patch) | |
tree | db5e68c35205cc5e4599d2a9b8e97bbefa65ab19 /src/ats-tests/perf_ats.c | |
parent | 281a7aa769d656ffed541f144b5846205dd45e2d (diff) | |
download | gnunet-8413204fafc0c84783bf3cd1ebee9ab3aa2f0ca7.tar.gz gnunet-8413204fafc0c84783bf3cd1ebee9ab3aa2f0ca7.zip |
adding ats preference setting
Diffstat (limited to 'src/ats-tests/perf_ats.c')
-rw-r--r-- | src/ats-tests/perf_ats.c | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/ats-tests/perf_ats.c b/src/ats-tests/perf_ats.c index 4c2e96877..a50de992f 100644 --- a/src/ats-tests/perf_ats.c +++ b/src/ats-tests/perf_ats.c | |||
@@ -35,6 +35,10 @@ | |||
35 | #define DEFAULT_SLAVES_NUM 3 | 35 | #define DEFAULT_SLAVES_NUM 3 |
36 | #define DEFAULT_MASTERS_NUM 1 | 36 | #define DEFAULT_MASTERS_NUM 1 |
37 | 37 | ||
38 | #define TEST_ATS_PREFRENCE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1) | ||
39 | #define TEST_ATS_PREFRENCE_START 1.0 | ||
40 | #define TEST_ATS_PREFRENCE_DELTA 1.0 | ||
41 | |||
38 | #define TEST_MESSAGE_TYPE_PING 12345 | 42 | #define TEST_MESSAGE_TYPE_PING 12345 |
39 | #define TEST_MESSAGE_TYPE_PONG 12346 | 43 | #define TEST_MESSAGE_TYPE_PONG 12346 |
40 | #define TEST_MESSAGE_SIZE 1000 | 44 | #define TEST_MESSAGE_SIZE 1000 |
@@ -165,6 +169,18 @@ struct BenchmarkPeer | |||
165 | struct BenchmarkPeer *pref_partner; | 169 | struct BenchmarkPeer *pref_partner; |
166 | 170 | ||
167 | /** | 171 | /** |
172 | * Masters only | ||
173 | * Progress task | ||
174 | */ | ||
175 | GNUNET_SCHEDULER_TaskIdentifier ats_task; | ||
176 | |||
177 | /** | ||
178 | * Masters only | ||
179 | * Progress task | ||
180 | */ | ||
181 | double pref_value; | ||
182 | |||
183 | /** | ||
168 | * Array of partners with num_slaves entries (if master) or | 184 | * Array of partners with num_slaves entries (if master) or |
169 | * num_master entries (if slave) | 185 | * num_master entries (if slave) |
170 | */ | 186 | */ |
@@ -299,10 +315,13 @@ evaluate () | |||
299 | for (c_s = 0; c_s < num_slaves; c_s++) | 315 | for (c_s = 0; c_s < num_slaves; c_s++) |
300 | { | 316 | { |
301 | fprintf (stderr, | 317 | fprintf (stderr, |
302 | "Master [%u] -> Slave [%u]: sent %u KiB/s, received %u KiB/s \n", | 318 | "%c Master [%u] -> Slave [%u]: sent %u KiB/s (%.2f \%), received %u KiB/s (%.2f \%)\n", |
319 | (mp->pref_partner == mp->partners[c_s].dest) ? '*' : ' ', | ||
303 | mp->no, mp->partners[c_s].dest->no, | 320 | mp->no, mp->partners[c_s].dest->no, |
304 | (mp->partners[c_s].bytes_sent / 1024) / duration, | 321 | (mp->partners[c_s].bytes_sent / 1024) / duration, |
305 | (mp->partners[c_s].bytes_received / 1024) / duration); | 322 | ((double) mp->partners[c_s].bytes_sent * 100) / mp->total_bytes_sent, |
323 | (mp->partners[c_s].bytes_received / 1024) / duration, | ||
324 | ((double) mp->partners[c_s].bytes_received * 100) / mp->total_bytes_received ); | ||
306 | } | 325 | } |
307 | } | 326 | } |
308 | } | 327 | } |
@@ -340,6 +359,10 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
340 | mps[c_m].peer_id_op = NULL; | 359 | mps[c_m].peer_id_op = NULL; |
341 | } | 360 | } |
342 | 361 | ||
362 | if (GNUNET_SCHEDULER_NO_TASK != mps[c_m].ats_task) | ||
363 | GNUNET_SCHEDULER_cancel (mps[c_m].ats_task); | ||
364 | mps[c_m].ats_task = GNUNET_SCHEDULER_NO_TASK; | ||
365 | |||
343 | for (c_op = 0; c_op < num_slaves; c_op++) | 366 | for (c_op = 0; c_op < num_slaves; c_op++) |
344 | { | 367 | { |
345 | 368 | ||
@@ -494,6 +517,23 @@ print_progress () | |||
494 | } | 517 | } |
495 | 518 | ||
496 | static void | 519 | static void |
520 | ats_pref_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
521 | { | ||
522 | struct BenchmarkPeer *me = cls; | ||
523 | |||
524 | me->ats_task = GNUNET_SCHEDULER_NO_TASK; | ||
525 | |||
526 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, " Master [%u] set preference for slave [%u] to %f\n", | ||
527 | me->no, me->pref_partner->no, me->pref_value); | ||
528 | GNUNET_ATS_performance_change_preference (me->ats_perf_handle, | ||
529 | &me->pref_partner->id, | ||
530 | pref_val, me->pref_value, GNUNET_ATS_PREFERENCE_END); | ||
531 | me->pref_value += TEST_ATS_PREFRENCE_DELTA; | ||
532 | me->ats_task = GNUNET_SCHEDULER_add_delayed (TEST_ATS_PREFRENCE_FREQUENCY, | ||
533 | &ats_pref_task, cls); | ||
534 | } | ||
535 | |||
536 | static void | ||
497 | do_benchmark () | 537 | do_benchmark () |
498 | { | 538 | { |
499 | int c_m; | 539 | int c_m; |
@@ -524,6 +564,8 @@ do_benchmark () | |||
524 | mps[c_m].ch, GNUNET_NO, 0, GNUNET_TIME_UNIT_MINUTES, &sps[c_s].id, | 564 | mps[c_m].ch, GNUNET_NO, 0, GNUNET_TIME_UNIT_MINUTES, &sps[c_s].id, |
525 | TEST_MESSAGE_SIZE, &core_send_ready, &mps[c_m].partners[c_s]); | 565 | TEST_MESSAGE_SIZE, &core_send_ready, &mps[c_m].partners[c_s]); |
526 | } | 566 | } |
567 | if (pref_val != GNUNET_ATS_PREFERENCE_END) | ||
568 | mps[c_m].ats_task = GNUNET_SCHEDULER_add_now (&ats_pref_task, &mps[c_m]); | ||
527 | } | 569 | } |
528 | } | 570 | } |
529 | 571 | ||
@@ -1037,6 +1079,7 @@ main_run (void *cls, struct GNUNET_TESTBED_RunHandle *h, unsigned int num_peers, | |||
1037 | mps[c_m].no = c_m; | 1079 | mps[c_m].no = c_m; |
1038 | mps[c_m].master = GNUNET_YES; | 1080 | mps[c_m].master = GNUNET_YES; |
1039 | mps[c_m].pref_partner = &sps[c_m]; | 1081 | mps[c_m].pref_partner = &sps[c_m]; |
1082 | mps[c_m].pref_value = TEST_ATS_PREFRENCE_START; | ||
1040 | mps[c_m].partners = | 1083 | mps[c_m].partners = |
1041 | GNUNET_malloc (num_slaves * sizeof (struct BenchmarkPeer)); | 1084 | GNUNET_malloc (num_slaves * sizeof (struct BenchmarkPeer)); |
1042 | /* Initialize partners */ | 1085 | /* Initialize partners */ |