summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests/smpmrsp01
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-05-10 21:30:26 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-05-11 08:58:40 +0200
commitbe0366bb62ed4a804725a484ffd73242cd4f1d7b (patch)
tree4267cd07e8e1134284ec145280f8197480aa55b7 /testsuites/smptests/smpmrsp01
parentmrm332-testsuite.tcfg: Add fileio (diff)
downloadrtems-be0366bb62ed4a804725a484ffd73242cd4f1d7b.tar.bz2
score: Fix scheduler helping protocol
Account for priority changes of threads executing in a foreign partition. Exchange idle threads in case a victim node uses an idle thread and the new scheduled node needs an idle thread.
Diffstat (limited to 'testsuites/smptests/smpmrsp01')
-rw-r--r--testsuites/smptests/smpmrsp01/init.c224
-rw-r--r--testsuites/smptests/smpmrsp01/smpmrsp01.scn504
2 files changed, 478 insertions, 250 deletions
diff --git a/testsuites/smptests/smpmrsp01/init.c b/testsuites/smptests/smpmrsp01/init.c
index a1aae86276..1f079047d5 100644
--- a/testsuites/smptests/smpmrsp01/init.c
+++ b/testsuites/smptests/smpmrsp01/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2014-2015 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -74,7 +74,6 @@ typedef struct {
} test_context;
static test_context test_instance = {
- .barrier = SMP_BARRIER_CONTROL_INITIALIZER,
.switch_lock = SMP_LOCK_INITIALIZER("test instance switch lock")
};
@@ -87,6 +86,11 @@ static void busy_wait(void)
}
}
+static void barrier_init(test_context *ctx)
+{
+ _SMP_barrier_Control_initialize(&ctx->barrier);
+}
+
static void barrier(test_context *ctx, SMP_barrier_State *bs)
{
_SMP_barrier_Wait(&ctx->barrier, bs, 2);
@@ -291,6 +295,7 @@ static void test_mrsp_obtain_and_release(test_context *ctx)
change_prio(RTEMS_SELF, 3);
+ barrier_init(ctx);
reset_switch_events(ctx);
ctx->high_run[0] = false;
@@ -467,6 +472,219 @@ static void test_mrsp_obtain_and_release(test_context *ctx)
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
+static void obtain_after_migration_worker(rtems_task_argument arg)
+{
+ test_context *ctx = &test_instance;
+ rtems_status_code sc;
+ SMP_barrier_State barrier_state = SMP_BARRIER_STATE_INITIALIZER;
+
+ assert_prio(RTEMS_SELF, 3);
+
+ sc = rtems_semaphore_obtain(ctx->mrsp_ids[0], RTEMS_WAIT, RTEMS_NO_TIMEOUT);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_release(ctx->mrsp_ids[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ /* Worker done (K) */
+ barrier(ctx, &barrier_state);
+
+ while (true) {
+ /* Wait for termination */
+ }
+}
+
+static void obtain_after_migration_high(rtems_task_argument arg)
+{
+ test_context *ctx = &test_instance;
+ rtems_status_code sc;
+ SMP_barrier_State barrier_state = SMP_BARRIER_STATE_INITIALIZER;
+
+ assert_prio(RTEMS_SELF, 2);
+
+ sc = rtems_semaphore_obtain(ctx->mrsp_ids[1], RTEMS_WAIT, RTEMS_NO_TIMEOUT);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ /* Obtain done (I) */
+ barrier(ctx, &barrier_state);
+
+ /* Ready to release (J) */
+ barrier(ctx, &barrier_state);
+
+ sc = rtems_semaphore_release(ctx->mrsp_ids[1]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_task_suspend(RTEMS_SELF);
+ rtems_test_assert(0);
+}
+
+static void test_mrsp_obtain_after_migration(test_context *ctx)
+{
+ rtems_status_code sc;
+ rtems_task_priority prio;
+ rtems_id scheduler_id;
+ SMP_barrier_State barrier_state;
+
+ puts("test MrsP obtain after migration");
+
+ change_prio(RTEMS_SELF, 3);
+
+ barrier_init(ctx);
+ reset_switch_events(ctx);
+
+ /* Create tasks */
+
+ sc = rtems_task_create(
+ rtems_build_name('H', 'I', 'G', '0'),
+ 2,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &ctx->high_task_id[0]
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_create(
+ rtems_build_name('W', 'O', 'R', 'K'),
+ 3,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &ctx->worker_ids[0]
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_set_scheduler(ctx->worker_ids[0], ctx->scheduler_ids[1]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ /* Create a MrsP semaphore objects */
+
+ sc = rtems_semaphore_create(
+ rtems_build_name('M', 'R', 'S', 'P'),
+ 1,
+ RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
+ | RTEMS_BINARY_SEMAPHORE,
+ 3,
+ &ctx->mrsp_ids[0]
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_create(
+ rtems_build_name('M', 'R', 'S', 'P'),
+ 1,
+ RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
+ | RTEMS_BINARY_SEMAPHORE,
+ 2,
+ &ctx->mrsp_ids[1]
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_create(
+ rtems_build_name('M', 'R', 'S', 'P'),
+ 1,
+ RTEMS_MULTIPROCESSOR_RESOURCE_SHARING
+ | RTEMS_BINARY_SEMAPHORE,
+ 1,
+ &ctx->mrsp_ids[2]
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ prio = 4;
+ sc = rtems_semaphore_set_priority(
+ ctx->mrsp_ids[2],
+ ctx->scheduler_ids[1],
+ prio,
+ &prio
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+ rtems_test_assert(prio == 1);
+
+ /* Check executing task parameters */
+
+ sc = rtems_task_get_scheduler(RTEMS_SELF, &scheduler_id);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(ctx->scheduler_ids[0] == scheduler_id);
+
+ assert_prio(RTEMS_SELF, 3);
+
+ sc = rtems_semaphore_obtain(ctx->mrsp_ids[0], RTEMS_WAIT, RTEMS_NO_TIMEOUT);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ assert_prio(RTEMS_SELF, 3);
+
+ /* Start other tasks */
+
+ sc = rtems_task_start(ctx->worker_ids[0], obtain_after_migration_worker, 0);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_start(ctx->high_task_id[0], obtain_after_migration_high, 0);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(rtems_get_current_processor() == 1);
+
+ /* Obtain done (I) */
+ _SMP_barrier_State_initialize(&barrier_state);
+ barrier(ctx, &barrier_state);
+
+ sc = rtems_task_suspend(ctx->high_task_id[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(rtems_get_current_processor() == 1);
+
+ /*
+ * Obtain second MrsP semaphore and ensure that we change the priority of our
+ * own scheduler node and not the one we are currently using.
+ */
+
+ sc = rtems_semaphore_obtain(ctx->mrsp_ids[2], RTEMS_WAIT, RTEMS_NO_TIMEOUT);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ assert_prio(RTEMS_SELF, 1);
+
+ rtems_test_assert(rtems_get_current_processor() == 1);
+
+ sc = rtems_semaphore_release(ctx->mrsp_ids[2]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_resume(ctx->high_task_id[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ /* Ready to release (J) */
+ barrier(ctx, &barrier_state);
+
+ rtems_test_assert(rtems_get_current_processor() == 1);
+
+ /* Prepare barrier for worker */
+ barrier_init(ctx);
+ _SMP_barrier_State_initialize(&barrier_state);
+
+ sc = rtems_semaphore_release(ctx->mrsp_ids[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(rtems_get_current_processor() == 0);
+
+ print_switch_events(ctx);
+
+ /* Worker done (K) */
+ barrier(ctx, &barrier_state);
+
+ sc = rtems_task_delete(ctx->worker_ids[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_delete(ctx->high_task_id[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_delete(ctx->mrsp_ids[0]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_delete(ctx->mrsp_ids[1]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_semaphore_delete(ctx->mrsp_ids[2]);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+}
+
static void test_mrsp_flush_error(void)
{
rtems_status_code sc;
@@ -1034,6 +1252,7 @@ static void test_mrsp_various_block_and_unblock(test_context *ctx)
change_prio(RTEMS_SELF, 4);
+ barrier_init(ctx);
reset_switch_events(ctx);
ctx->low_run[0] = false;
@@ -1637,6 +1856,7 @@ static void Init(rtems_task_argument arg)
test_mrsp_deadlock_error(ctx);
test_mrsp_multiple_obtain();
test_mrsp_various_block_and_unblock(ctx);
+ test_mrsp_obtain_after_migration(ctx);
test_mrsp_obtain_and_sleep_and_release(ctx);
test_mrsp_obtain_and_release_with_help(ctx);
test_mrsp_obtain_and_release(ctx);
diff --git a/testsuites/smptests/smpmrsp01/smpmrsp01.scn b/testsuites/smptests/smpmrsp01/smpmrsp01.scn
index 90184b571c..19a4fbb1f3 100644
--- a/testsuites/smptests/smpmrsp01/smpmrsp01.scn
+++ b/testsuites/smptests/smpmrsp01/smpmrsp01.scn
@@ -23,9 +23,17 @@ test MrsP various block and unblock
[0] MAIN -> HIG0 (prio 2, node HIG0)
[1] MAIN -> HIG1 (prio 2, node HIG1)
[1] HIG1 -> MAIN (prio 3, node WORK)
-[0] HIG0 -> IDLE (prio 4, node MAIN)
-[1] MAIN -> WORK (prio 3, node WORK)
+[0] HIG0 -> IDLE (prio 255, node IDLE)
[0] IDLE -> MAIN (prio 4, node MAIN)
+[1] MAIN -> WORK (prio 3, node WORK)
+test MrsP obtain after migration
+[1] IDLE -> WORK (prio 3, node WORK)
+[0] MAIN -> HIG0 (prio 2, node HIG0)
+[1] WORK -> MAIN (prio 3, node WORK)
+[0] HIG0 -> IDLE (prio 2, node HIG0)
+[0] IDLE -> HIG0 (prio 2, node HIG0)
+[1] MAIN -> WORK (prio 3, node WORK)
+[0] HIG0 -> MAIN (prio 3, node MAIN)
test MrsP obtain and sleep and release
[0] MAIN -> RUN (prio 2, node RUN)
[0] RUN -> MAIN (prio 1, node MAIN)
@@ -42,290 +50,290 @@ test MrsP obtain and release with help
[0] RUN -> IDLE (prio 2, node MAIN)
[1] MAIN -> HELP (prio 2, node HELP)
[1] HELP -> MAIN (prio 2, node HELP)
-[0] IDLE -> MAIN (prio 3, node MAIN)
+[0] IDLE -> MAIN (prio 1, node MAIN)
[1] MAIN -> HELP (prio 2, node HELP)
test MrsP obtain and release
[1] IDLE -> WORK (prio 4, node WORK)
[1] WORK -> MAIN (prio 3, node WORK)
[0] MAIN -> HIG0 (prio 1, node HIG0)
-[1] MAIN -> WORK (prio 4, node WORK)
+[1] MAIN -> WORK (prio 3, node WORK)
[0] HIG0 -> MAIN (prio 2, node MAIN)
test MrsP load
worker[0]
- sleep = 53
- timeout = 3445
- obtain[0] = 7240
- obtain[1] = 5484
- obtain[2] = 12983
- obtain[3] = 9453
- obtain[4] = 16142
- obtain[5] = 12509
- obtain[6] = 16471
- obtain[7] = 14380
- obtain[8] = 16566
- obtain[9] = 16192
- obtain[10] = 14868
- obtain[11] = 18208
- obtain[12] = 12505
- obtain[13] = 19995
- obtain[14] = 11155
- obtain[15] = 20684
- obtain[16] = 7288
- obtain[17] = 22252
- obtain[18] = 6476
- obtain[19] = 18299
- obtain[20] = 5711
- obtain[21] = 17063
- obtain[22] = 4791
- obtain[23] = 14655
- obtain[24] = 3452
- obtain[25] = 10565
- obtain[26] = 2912
- obtain[27] = 8142
- obtain[28] = 2090
- obtain[29] = 5086
- obtain[30] = 1145
- obtain[31] = 1946
- cpu[0] = 378475
- cpu[1] = 64814
- cpu[2] = 132133
- cpu[3] = 138047
+ sleep = 7
+ timeout = 1780
+ obtain[0] = 607
+ obtain[1] = 443
+ obtain[2] = 988
+ obtain[3] = 659
+ obtain[4] = 1169
+ obtain[5] = 846
+ obtain[6] = 1267
+ obtain[7] = 854
+ obtain[8] = 1016
+ obtain[9] = 1079
+ obtain[10] = 1165
+ obtain[11] = 1020
+ obtai[12] = 767
+ obtain[13] = 925
+ obtain[14] = 792
+ obtain[15] = 881
+ obtain[16] = 439
+ obtain[17] = 1007
+ obtain[18] = 243
+ obtain[19] = 853
+ obtain[20] = 210
+ obtain[21] = 445
+ obtain[22] = 247
+ obtain[23] = 497
+ obtain[24] = 102
+ obtain[25] = 580
+ obtain[26] = 90
+ obtain[27] = 186
+ obtain[28] = 74
+ obtain[29] = 139
+ obtain[30] = 68
+ obtain[31] = 98
+ cpu[0] = 27776
+ cpu[1] = 2795
+ cpu[2] = 4397
+ cpu[3] = 4551
worker[1]
sleep = 1
- timeout = 6
- obtain[0] = 19
- obtain[1] = 8
- obtain[2] = 15
- obtain[3] = 24
- obtain[4] = 20
- obtain[5] = 19
- obtain[6] = 14
- obtain[7] = 40
- obtain[8] = 45
- obtain[9] = 20
+ timeout = 0
+ obtain[0] = 1
+ obtain[1] = 0
+ obtain[2] = 3
+ obtain[3] = 0
+ obtain[4] = 0
+ obtain[5] = 0
+ obtain[6] = 0
+ obtain[7] = 0
+ obtain[8] = 0
+ obtain[9] = 0
obtain[10] = 0
- obtain[11] = 48
- obtain[12] = 13
- obtain[13] = 57
- obtain[14] = 30
- obtain[15] = 48
- obtain[16] = 36
- obtain[17] = 36
- obtain[18] = 19
- obtain[19] = 20
- obtain[20] = 42
- obtain[21] = 44
- obtain[22] = 23
+ obtain[11] = 0
+ obtain[12] = 0
+ obtain[13] = 0
+ obtain[14] = 0
+ obtain[15] = 0
+ obtain[16] = 0
+ obtain[17] = 0
+ obtain[18] = 0
+ obtain[19] = 0
+ obtain[20] = 0
+ obtain[21] = 0
+ obtain[22] = 0
obtain[23] = 0
obtain[24] = 0
- obtain[25] = 26
+ obtain[25] = 0
obtain[26] = 0
obtain[27] = 0
obtain[28] = 0
obtain[29] = 0
obtain[30] = 0
obtain[31] = 0
- cpu[0] = 650
- cpu[1] = 92
- cpu[2] = 379
- cpu[3] = 212
+ cpu[0] = 9
+ cpu[1] = 0
+ cpu[2] = 0
+ cpu[3] = 0
worker[2]
- sleep = 51
- timeout = 3731
- obtain[0] = 7182
- obtain[1] = 5663
- obtain[2] = 12945
- obtain[3] = 9229
- obtain[4] = 15592
- obtain[5] = 12125
- obtain[6] = 16767
- obtain[7] = 14480
- obtain[8] = 16620
- obtain[9] = 16098
- obtain[10] = 16409
- obtain[11] = 18109
- obtain[12] = 12995
- obtain[13] = 19452
- obtain[14] = 10719
- obtain[15] = 20024
- obtain[16] = 7769
- obtain[17] = 21913
- obtain[18] = 6636
- obtain[19] = 18524
- obtain[20] = 5952
- obtain[21] = 16411
- obtain[22] = 5228
- obtain[23] = 14456
- obtain[24] = 4292
- obtain[25] = 11143
- obtain[26] = 3019
- obtain[27] = 8023
- obtain[28] = 2006
- obtain[29] = 4664
- obtain[30] = 1109
- obtain[31] = 1976
- cpu[0] = 65356
- cpu[1] = 381723
- cpu[2] = 133444
- cpu[3] = 134588
+ sleep = 5
+ timeout = 2083
+ obtain[0] = 740
+ obtain[1] = 489
+ obtain[2] = 1232
+ obtain[3] = 732
+ obtain[4] = 1361
+ obtain[5] = 1070
+ obtain[6] = 1334
+ obtain[7] = 997
+ obtain[8] = 1418
+ obtain[9] = 1087
+ obtain[10] = 1005
+ obtain[11] = 1088
+ obtain[12] = 865
+ obtain[13] = 1279
+ obtain[14] = 698
+ obtain[15] = 1152
+ obtain[16] = 339
+ obtain[17] = 1347
+ obtain[18] = 340
+ obtain[19] = 723
+ obtain[20] = 295
+ obtain[21] = 933
+ obtain[22] = 223
+ obtain[23] = 633
+ obtain[24] = 236
+ obtain[25] = 405
+ obtain[26] = 140
+ obtain[27] = 261
+ obtain[28] = 70
+ obtain[29] = 157
+ obtain[30] = 89
+ obtain[31] = 71
+ cpu[0] = 1931
+ cpu[1] = 35336
+ cpu[2] = 4338
+ cpu[3] = 4018
worker[3]
sleep = 1
- timeout = 11
- obtain[0] = 11
- obtain[1] = 6
- obtain[2] = 33
- obtain[3] = 20
- obtain[4] = 10
- obtain[5] = 10
- obtain[6] = 28
- obtain[7] = 18
- obtain[8] = 27
- obtain[9] = 40
- obtain[10] = 33
- obtain[11] = 36
- obtain[12] = 26
+ timeout = 1
+ obtain[0] = 0
+ obtain[1] = 0
+ obtain[2] = 3
+ obtain[3] = 0
+ obtain[4] = 5
+ obtain[5] = 0
+ obtain[6] = 0
+ obtain[7] = 0
+ obtain[8] = 0
+ obtain[9] = 0
+ obtain[10] = 0
+ obtain[11] = 0
+ obtain[12] = 0
obtain[13] = 0
- obtain[14] = 15
- obtain[15] = 16
+ obtain[14] = 0
+ obtain[15] = 0
obtain[16] = 0
- obtain[17] = 18
+ obtain[17] = 0
obtain[18] = 0
- obtain[19] = 42
+ obtain[19] = 0
obtain[20] = 0
- obtain[21] = 88
+ obtain[21] = 0
obtain[22] = 0
- obtain[23] = 24
+ obtain[23] = 0
obtain[24] = 0
obtain[25] = 0
obtain[26] = 0
- obtain[27] = 28
+ obtain[27] = 0
obtain[28] = 0
obtain[29] = 0
- obtain[30] = 31
+ obtain[30] = 0
obtain[31] = 0
- cpu[0] = 136
- cpu[1] = 573
- cpu[2] = 291
- cpu[3] = 121
+ cpu[0] = 0
+ cpu[1] = 14
+ cpu[2] = 0
+ cpu[3] = 3
worker[4]
- sleep = 47
- timeout = 3278
- obtain[0] = 7397
- obtain[1] = 5723
- obtain[2] = 13399
- obtain[3] = 9018
- obtain[4] = 16575
- obtain[5] = 12731
- obtain[6] = 16571
- obtain[7] = 14376
- obtain[8] = 16786
- obtain[9] = 17022
- obtain[10] = 15889
- obtain[11] = 19338
- obtain[12] = 13240
- obtain[13] = 19055
- obtain[14] = 11533
- obtain[15] = 22667
- obtain[16] = 7521
- obtain[17] = 21826
- obtain[18] = 6320
- obtain[19] = 18522
- obtain[20] = 6874
- obtain[21] = 16498
- obtain[22] = 4983
- obtain[23] = 14210
- obtain[24] = 4019
- obtain[25] = 11510
- obtain[26] = 3425
- obtain[27] = 8809
- obtain[28] = 2002
- obtain[29] = 5197
- obtain[30] = 996
- obtain[31] = 2276
- cpu[0] = 20729
- cpu[1] = 19760
- cpu[2] = 343613
- cpu[3] = 348561
+ sleep = 9
+ timeout = 2196
+ obtain[0] = 896
+ obtain[1] = 565
+ obtain[2] = 1443
+ obtain[3] = 936
+ obtain[4] = 1506
+ obtain[5] = 1028
+ obtain[6] = 1541
+ obtain[7] = 1088
+ obtain[8] = 1683
+ obtain[9] = 1494
+ obtain[10] = 1283
+ obtain[11] = 1075
+ obtain[12] = 1101
+ obtain[13] = 1038
+ obtain[14] = 758
+ obtain[15] = 1300
+ obtain[16] = 350
+ obtain[17] = 1180
+ obtain[18] = 396
+ obtain[19] = 1171
+ obtain[20] = 232
+ obtain[21] = 767
+ obtain[22] = 336
+ obtain[23] = 470
+ obtain[24] = 196
+ obtain[25] = 461
+ obtain[26] = 148
+ obtain[27] = 394
+ obtain[28] = 68
+ obtain[29] = 259
+ obtain[30] = 80
+ obtain[31] = 54
+ cpu[0] = 725
+ cpu[1] = 1001
+ cpu[2] = 25845
+ cpu[3] = 23032
worker[5]
- sleep = 61
- timeout = 3183
- obtain[0] = 7291
- obtain[1] = 5782
- obtain[2] = 13633
- obtain[3] = 9864
- obtain[4] = 16465
- obtain[5] = 12581
- obtain[6] = 17135
- obtain[7] = 14616
- obtain[8] = 16524
- obtain[9] = 16472
- obtain[10] = 15194
- obtain[11] = 18038
- obtain[12] = 13801
- obtain[13] = 19959
- obtain[14] = 11693
- obtain[15] = 20770
- obtain[16] = 7328
- obtain[17] = 23222
- obtain[18] = 7186
- obtain[19] = 19739
- obtain[20] = 6584
- obtain[21] = 17450
- obtain[22] = 5241
- obtain[23] = 14808
- obtain[24] = 4287
- obtain[25] = 11387
- obtain[26] = 3367
- obtain[27] = 8149
- obtain[28] = 1887
- obtain[29] = 4969
- obtain[30] = 1123
- obtain[31] = 1695
- cpu[0] = 19504
- cpu[1] = 20069
- cpu[2] = 346015
- cpu[3] = 350953
+ sleep = 8
+ timeout = 2062
+ obtain[0] = 754
+ obtain[1] = 540
+ obtain[2] = 1318
+ obtain[3] = 886
+ obtain[4] = 1396
+ obtain[5] = 1030
+ obtain[6] = 1556
+ obtain[7] = 1126
+ obtain[8] = 1338
+ obtain[9] = 1061
+ obtain[10] = 1173
+ obtain[11] = 1396
+ obtain[12] = 1130
+ obtain[13] = 1189
+ obtain[14] = 867
+ obtain[15] = 1290
+ obtain[16] = 339
+ obtain[17] = 1177
+ obtain[18] = 396
+ obtain[19] = 915
+ obtain[20] = 236
+ obtain[21] = 1084
+ obtain[22] = 146
+ obtain[23] = 699
+ obtain[24] = 185
+ obtain[25] = 562
+ obtain[26] = 120
+ obtain[27] = 423
+ obtain[28] = 153
+ obtain[29] = 347
+ obtain[30] = 28
+ obtain[31] = 250
+ cpu[0] = 911
+ cpu[1] = 1018
+ cpu[2] = 23145
+ cpu[3] = 25154
worker[6]
sleep = 1
- timeout = 15
- obtain[0] = 26
- obtain[1] = 22
- obtain[2] = 45
- obtain[3] = 32
- obtain[4] = 45
- obtain[5] = 76
- obtain[6] = 49
- obtain[7] = 64
- obtain[8] = 99
- obtain[9] = 70
- obtain[10] = 55
- obtain[11] = 48
- obtain[12] = 39
- obtain[13] = 28
- obtain[14] = 60
- obtain[15] = 48
- obtain[16] = 17
- obtain[17] = 74
- obtain[18] = 38
- obtain[19] = 60
- obtain[20] = 63
- obtain[21] = 66
- obtain[22] = 23
- obtain[23] = 48
+ timeout = 3
+ obtain[0] = 3
+ obtain[1] = 0
+ obtain[2] = 3
+ obtain[3] = 0
+ obtain[4] = 0
+ obtain[5] = 6
+ obtain[6] = 0
+ obtain[7] = 8
+ obtain[8] = 3
+ obtain[9] = 0
+ obtain[10] = 0
+ obtain[11] = 0
+ obtain[12] = 13
+ obtain[13] = 0
+ obtain[14] = 0
+ obtain[15] = 0
+ obtain[16] = 2
+ obtain[17] = 0
+ obtain[18] = 0
+ obtain[19] = 0
+ obtain[20] = 0
+ obtain[21] = 0
+ obtain[22] = 0
+ obtain[23] = 0
obtain[24] = 0
- obtain[25] = 78
+ obtain[25] = 0
obtain[26] = 0
- obtain[27] = 43
+ obtain[27] = 0
obtain[28] = 0
obtain[29] = 0
obtain[30] = 0
- obtain[31] = 32
- cpu[0] = 71
- cpu[1] = 39
- cpu[2] = 1333
- cpu[3] = 1254
+ obtain[31] = 0
+ cpu[0] = 0
+ cpu[1] = 11
+ cpu[2] = 42
+ cpu[3] = 24
worker[7]
- sleep = 1
+ sleep = 0
timeout = 0
obtain[0] = 0
obtain[1] = 0
@@ -361,10 +369,10 @@ worker[7]
obtain[31] = 0
cpu[0] = 0
cpu[1] = 0
- cpu[2] = 1
+ cpu[2] = 0
cpu[3] = 0
-migrations[0] = 437361
-migrations[1] = 437363
-migrations[2] = 441234
-migrations[3] = 433487
+migrations[0] = 20731
+migrations[1] = 20731
+migrations[2] = 20366
+migrations[3] = 21099
*** END OF TEST SMPMRSP 1 ***