forked from Imagelibrary/rtems
score: Fix scheduler helping implementation
Do not extract the idle threads from the ready set so that there is always a thread available for comparison.
This commit is contained in:
@@ -148,28 +148,6 @@ static inline void _Scheduler_priority_SMP_Extract_from_ready(
|
||||
);
|
||||
}
|
||||
|
||||
static inline Thread_Control *_Scheduler_priority_SMP_Get_idle_thread(
|
||||
Scheduler_Context *context
|
||||
)
|
||||
{
|
||||
return _Scheduler_SMP_Get_idle_thread(
|
||||
context,
|
||||
_Scheduler_priority_SMP_Extract_from_ready
|
||||
);
|
||||
}
|
||||
|
||||
static void _Scheduler_priority_SMP_Release_idle_thread(
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *idle
|
||||
)
|
||||
{
|
||||
_Scheduler_SMP_Release_idle_thread(
|
||||
context,
|
||||
idle,
|
||||
_Scheduler_priority_SMP_Insert_ready_fifo
|
||||
);
|
||||
}
|
||||
|
||||
static inline void _Scheduler_priority_SMP_Do_update(
|
||||
Scheduler_Context *context,
|
||||
Scheduler_Node *node_to_update,
|
||||
|
||||
@@ -54,6 +54,10 @@ typedef struct {
|
||||
|
||||
/**
|
||||
* @brief Chain of the available idle threads.
|
||||
*
|
||||
* Idle threads are used for the scheduler helping protocol. It is crucial
|
||||
* that the idle threads preserve their relative order. This is the case for
|
||||
* this priority based scheduler.
|
||||
*/
|
||||
Chain_Control Idle_threads;
|
||||
} Scheduler_SMP_Context;
|
||||
|
||||
@@ -425,16 +425,12 @@ static inline bool _Scheduler_SMP_Is_processor_owned_by_us(
|
||||
}
|
||||
|
||||
static inline Thread_Control *_Scheduler_SMP_Get_idle_thread(
|
||||
Scheduler_Context *context,
|
||||
Scheduler_SMP_Extract extract_from_ready
|
||||
Scheduler_Context *context
|
||||
)
|
||||
{
|
||||
Scheduler_SMP_Context *self = _Scheduler_SMP_Get_self( context );
|
||||
Thread_Control *idle = (Thread_Control *)
|
||||
_Chain_Get_first_unprotected( &self->Idle_threads );
|
||||
Scheduler_Node *own_node = _Scheduler_Thread_get_own_node( idle );
|
||||
|
||||
( *extract_from_ready )( &self->Base, own_node );
|
||||
|
||||
_Assert( &idle->Object.Node != _Chain_Tail( &self->Idle_threads ) );
|
||||
|
||||
@@ -442,16 +438,13 @@ static inline Thread_Control *_Scheduler_SMP_Get_idle_thread(
|
||||
}
|
||||
|
||||
static inline void _Scheduler_SMP_Release_idle_thread(
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *idle,
|
||||
Scheduler_SMP_Insert insert_ready
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *idle
|
||||
)
|
||||
{
|
||||
Scheduler_SMP_Context *self = _Scheduler_SMP_Get_self( context );
|
||||
Scheduler_Node *own_node = _Scheduler_Thread_get_own_node( idle );
|
||||
|
||||
_Chain_Prepend_unprotected( &self->Idle_threads, &idle->Object.Node );
|
||||
( *insert_ready )( context, own_node );
|
||||
}
|
||||
|
||||
static inline void _Scheduler_SMP_Allocate_processor_lazy(
|
||||
@@ -536,8 +529,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_to_scheduled(
|
||||
Scheduler_Node *lowest_scheduled,
|
||||
Scheduler_SMP_Insert insert_scheduled,
|
||||
Scheduler_SMP_Move move_from_scheduled_to_ready,
|
||||
Scheduler_SMP_Allocate_processor allocate_processor,
|
||||
Scheduler_Release_idle_thread release_idle_thread
|
||||
Scheduler_SMP_Allocate_processor allocate_processor
|
||||
)
|
||||
{
|
||||
Thread_Control *user = _Scheduler_Node_get_user( node );
|
||||
@@ -570,7 +562,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_to_scheduled(
|
||||
idle = _Scheduler_Release_idle_thread(
|
||||
context,
|
||||
lowest_scheduled,
|
||||
release_idle_thread
|
||||
_Scheduler_SMP_Release_idle_thread
|
||||
);
|
||||
if ( idle == NULL ) {
|
||||
needs_help = lowest_scheduled_user;
|
||||
@@ -603,7 +595,6 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_to_scheduled(
|
||||
* if this pointer is passed as the second argument to the order function.
|
||||
* @param[in] allocate_processor Function to allocate a processor to a node
|
||||
* based on the rules of the scheduler.
|
||||
* @param[in] release_idle_thread Function to release an idle thread.
|
||||
*/
|
||||
static inline Thread_Control *_Scheduler_SMP_Enqueue_ordered(
|
||||
Scheduler_Context *context,
|
||||
@@ -614,8 +605,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_ordered(
|
||||
Scheduler_SMP_Insert insert_scheduled,
|
||||
Scheduler_SMP_Move move_from_scheduled_to_ready,
|
||||
Scheduler_SMP_Get_lowest_scheduled get_lowest_scheduled,
|
||||
Scheduler_SMP_Allocate_processor allocate_processor,
|
||||
Scheduler_Release_idle_thread release_idle_thread
|
||||
Scheduler_SMP_Allocate_processor allocate_processor
|
||||
)
|
||||
{
|
||||
Scheduler_Node *lowest_scheduled =
|
||||
@@ -628,8 +618,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_ordered(
|
||||
lowest_scheduled,
|
||||
insert_scheduled,
|
||||
move_from_scheduled_to_ready,
|
||||
allocate_processor,
|
||||
release_idle_thread
|
||||
allocate_processor
|
||||
);
|
||||
} else {
|
||||
( *insert_ready )( context, node );
|
||||
@@ -656,8 +645,6 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_ordered(
|
||||
* of ready nodes to the set of scheduled nodes.
|
||||
* @param[in] allocate_processor Function to allocate a processor to a node
|
||||
* based on the rules of the scheduler.
|
||||
* @param[in] get_idle_thread Function to get an idle thread.
|
||||
* @param[in] release_idle_thread Function to release an idle thread.
|
||||
*/
|
||||
static inline Thread_Control *_Scheduler_SMP_Enqueue_scheduled_ordered(
|
||||
Scheduler_Context *context,
|
||||
@@ -668,9 +655,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_scheduled_ordered(
|
||||
Scheduler_SMP_Insert insert_ready,
|
||||
Scheduler_SMP_Insert insert_scheduled,
|
||||
Scheduler_SMP_Move move_from_ready_to_scheduled,
|
||||
Scheduler_SMP_Allocate_processor allocate_processor,
|
||||
Scheduler_Get_idle_thread get_idle_thread,
|
||||
Scheduler_Release_idle_thread release_idle_thread
|
||||
Scheduler_SMP_Allocate_processor allocate_processor
|
||||
)
|
||||
{
|
||||
Thread_Control *needs_help;
|
||||
@@ -692,7 +677,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_scheduled_ordered(
|
||||
_Scheduler_Try_to_schedule_node(
|
||||
context,
|
||||
highest_ready,
|
||||
get_idle_thread
|
||||
_Scheduler_SMP_Get_idle_thread
|
||||
)
|
||||
) {
|
||||
Thread_Control *user = _Scheduler_Node_get_user( node );
|
||||
@@ -717,7 +702,7 @@ static inline Thread_Control *_Scheduler_SMP_Enqueue_scheduled_ordered(
|
||||
idle = _Scheduler_Release_idle_thread(
|
||||
context,
|
||||
node,
|
||||
release_idle_thread
|
||||
_Scheduler_SMP_Release_idle_thread
|
||||
);
|
||||
if ( idle == NULL ) {
|
||||
needs_help = user;
|
||||
@@ -752,8 +737,7 @@ static inline void _Scheduler_SMP_Schedule_highest_ready(
|
||||
Scheduler_SMP_Extract extract_from_ready,
|
||||
Scheduler_SMP_Get_highest_ready get_highest_ready,
|
||||
Scheduler_SMP_Move move_from_ready_to_scheduled,
|
||||
Scheduler_SMP_Allocate_processor allocate_processor,
|
||||
Scheduler_Get_idle_thread get_idle_thread
|
||||
Scheduler_SMP_Allocate_processor allocate_processor
|
||||
)
|
||||
{
|
||||
while ( true ) {
|
||||
@@ -763,7 +747,7 @@ static inline void _Scheduler_SMP_Schedule_highest_ready(
|
||||
_Scheduler_Try_to_schedule_node(
|
||||
context,
|
||||
highest_ready,
|
||||
get_idle_thread
|
||||
_Scheduler_SMP_Get_idle_thread
|
||||
)
|
||||
) {
|
||||
_Scheduler_SMP_Allocate_processor(
|
||||
@@ -797,7 +781,6 @@ static inline void _Scheduler_SMP_Schedule_highest_ready(
|
||||
* @param[in] get_highest_ready Function to get the highest ready node.
|
||||
* @param[in] move_from_ready_to_scheduled Function to move a node from the set
|
||||
* of ready nodes to the set of scheduled nodes.
|
||||
* @param[in] get_idle_thread Function to get an idle thread.
|
||||
*/
|
||||
static inline void _Scheduler_SMP_Block(
|
||||
Scheduler_Context *context,
|
||||
@@ -805,8 +788,7 @@ static inline void _Scheduler_SMP_Block(
|
||||
Scheduler_SMP_Extract extract_from_ready,
|
||||
Scheduler_SMP_Get_highest_ready get_highest_ready,
|
||||
Scheduler_SMP_Move move_from_ready_to_scheduled,
|
||||
Scheduler_SMP_Allocate_processor allocate_processor,
|
||||
Scheduler_Get_idle_thread get_idle_thread
|
||||
Scheduler_SMP_Allocate_processor allocate_processor
|
||||
)
|
||||
{
|
||||
Scheduler_SMP_Node *node = _Scheduler_SMP_Thread_get_node( thread );
|
||||
@@ -815,7 +797,7 @@ static inline void _Scheduler_SMP_Block(
|
||||
context,
|
||||
&node->Base,
|
||||
is_scheduled,
|
||||
get_idle_thread
|
||||
_Scheduler_SMP_Get_idle_thread
|
||||
);
|
||||
|
||||
if ( block ) {
|
||||
@@ -830,8 +812,7 @@ static inline void _Scheduler_SMP_Block(
|
||||
extract_from_ready,
|
||||
get_highest_ready,
|
||||
move_from_ready_to_scheduled,
|
||||
allocate_processor,
|
||||
get_idle_thread
|
||||
allocate_processor
|
||||
);
|
||||
} else {
|
||||
( *extract_from_ready )( context, &node->Base );
|
||||
@@ -842,8 +823,7 @@ static inline void _Scheduler_SMP_Block(
|
||||
static inline Thread_Control *_Scheduler_SMP_Unblock(
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *thread,
|
||||
Scheduler_SMP_Enqueue enqueue_fifo,
|
||||
Scheduler_Release_idle_thread release_idle_thread
|
||||
Scheduler_SMP_Enqueue enqueue_fifo
|
||||
)
|
||||
{
|
||||
Scheduler_SMP_Node *node = _Scheduler_SMP_Thread_get_node( thread );
|
||||
@@ -853,7 +833,7 @@ static inline Thread_Control *_Scheduler_SMP_Unblock(
|
||||
thread,
|
||||
&node->Base,
|
||||
is_scheduled,
|
||||
release_idle_thread
|
||||
_Scheduler_SMP_Release_idle_thread
|
||||
);
|
||||
Thread_Control *needs_help;
|
||||
|
||||
@@ -917,8 +897,7 @@ static inline Thread_Control *_Scheduler_SMP_Ask_for_help(
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *offers_help,
|
||||
Thread_Control *needs_help,
|
||||
Scheduler_SMP_Enqueue enqueue_fifo,
|
||||
Scheduler_Release_idle_thread release_idle_thread
|
||||
Scheduler_SMP_Enqueue enqueue_fifo
|
||||
)
|
||||
{
|
||||
Scheduler_SMP_Node *node = _Scheduler_SMP_Thread_get_own_node( offers_help );
|
||||
@@ -940,7 +919,7 @@ static inline Thread_Control *_Scheduler_SMP_Ask_for_help(
|
||||
offers_help,
|
||||
needs_help,
|
||||
previous_accepts_help,
|
||||
release_idle_thread
|
||||
_Scheduler_SMP_Release_idle_thread
|
||||
);
|
||||
break;
|
||||
case SCHEDULER_SMP_NODE_BLOCKED:
|
||||
|
||||
@@ -231,8 +231,7 @@ void _Scheduler_priority_affinity_SMP_Block(
|
||||
_Scheduler_priority_SMP_Extract_from_ready,
|
||||
_Scheduler_priority_affinity_SMP_Get_highest_ready,
|
||||
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_exact,
|
||||
_Scheduler_priority_SMP_Get_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_exact
|
||||
);
|
||||
|
||||
/*
|
||||
@@ -314,8 +313,7 @@ static Thread_Control *_Scheduler_priority_affinity_SMP_Enqueue_fifo(
|
||||
_Scheduler_SMP_Insert_scheduled_fifo,
|
||||
_Scheduler_priority_SMP_Move_from_scheduled_to_ready,
|
||||
_Scheduler_priority_affinity_SMP_Get_lowest_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_exact,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_exact
|
||||
);
|
||||
}
|
||||
|
||||
@@ -399,8 +397,7 @@ Thread_Control *_Scheduler_priority_affinity_SMP_Unblock(
|
||||
needs_help = _Scheduler_SMP_Unblock(
|
||||
context,
|
||||
thread,
|
||||
_Scheduler_priority_affinity_SMP_Enqueue_fifo,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_priority_affinity_SMP_Enqueue_fifo
|
||||
);
|
||||
|
||||
/*
|
||||
@@ -433,8 +430,7 @@ static Thread_Control *_Scheduler_priority_affinity_SMP_Enqueue_ordered(
|
||||
insert_scheduled,
|
||||
_Scheduler_priority_SMP_Move_from_scheduled_to_ready,
|
||||
_Scheduler_priority_affinity_SMP_Get_lowest_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_exact,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_exact
|
||||
);
|
||||
}
|
||||
|
||||
@@ -482,9 +478,7 @@ _Scheduler_priority_affinity_SMP_Enqueue_scheduled_ordered(
|
||||
insert_ready,
|
||||
insert_scheduled,
|
||||
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_exact,
|
||||
_Scheduler_priority_SMP_Get_idle_thread,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_exact
|
||||
);
|
||||
}
|
||||
|
||||
@@ -572,8 +566,7 @@ Thread_Control *_Scheduler_priority_affinity_SMP_Ask_for_help(
|
||||
context,
|
||||
offers_help,
|
||||
needs_help,
|
||||
_Scheduler_priority_affinity_SMP_Enqueue_fifo,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_priority_affinity_SMP_Enqueue_fifo
|
||||
);
|
||||
|
||||
_Scheduler_priority_affinity_SMP_Check_for_migrations( context );
|
||||
|
||||
@@ -93,8 +93,7 @@ void _Scheduler_priority_SMP_Block(
|
||||
_Scheduler_priority_SMP_Extract_from_ready,
|
||||
_Scheduler_priority_SMP_Get_highest_ready,
|
||||
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_priority_SMP_Get_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -116,8 +115,7 @@ static Thread_Control *_Scheduler_priority_SMP_Enqueue_ordered(
|
||||
insert_scheduled,
|
||||
_Scheduler_priority_SMP_Move_from_scheduled_to_ready,
|
||||
_Scheduler_SMP_Get_lowest_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -170,9 +168,7 @@ static Thread_Control *_Scheduler_priority_SMP_Enqueue_scheduled_ordered(
|
||||
insert_ready,
|
||||
insert_scheduled,
|
||||
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_priority_SMP_Get_idle_thread,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -214,8 +210,7 @@ Thread_Control *_Scheduler_priority_SMP_Unblock(
|
||||
return _Scheduler_SMP_Unblock(
|
||||
context,
|
||||
thread,
|
||||
_Scheduler_priority_SMP_Enqueue_fifo,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_priority_SMP_Enqueue_fifo
|
||||
);
|
||||
}
|
||||
|
||||
@@ -254,8 +249,7 @@ Thread_Control *_Scheduler_priority_SMP_Ask_for_help(
|
||||
context,
|
||||
offers_help,
|
||||
needs_help,
|
||||
_Scheduler_priority_SMP_Enqueue_fifo,
|
||||
_Scheduler_priority_SMP_Release_idle_thread
|
||||
_Scheduler_priority_SMP_Enqueue_fifo
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -165,28 +165,6 @@ static void _Scheduler_simple_SMP_Extract_from_ready(
|
||||
_Chain_Extract_unprotected( &node_to_extract->Node );
|
||||
}
|
||||
|
||||
static Thread_Control *_Scheduler_simple_SMP_Get_idle_thread(
|
||||
Scheduler_Context *context
|
||||
)
|
||||
{
|
||||
return _Scheduler_SMP_Get_idle_thread(
|
||||
context,
|
||||
_Scheduler_simple_SMP_Extract_from_ready
|
||||
);
|
||||
}
|
||||
|
||||
static void _Scheduler_simple_SMP_Release_idle_thread(
|
||||
Scheduler_Context *context,
|
||||
Thread_Control *idle
|
||||
)
|
||||
{
|
||||
_Scheduler_SMP_Release_idle_thread(
|
||||
context,
|
||||
idle,
|
||||
_Scheduler_simple_SMP_Insert_ready_fifo
|
||||
);
|
||||
}
|
||||
|
||||
void _Scheduler_simple_SMP_Block(
|
||||
const Scheduler_Control *scheduler,
|
||||
Thread_Control *thread
|
||||
@@ -200,8 +178,7 @@ void _Scheduler_simple_SMP_Block(
|
||||
_Scheduler_simple_SMP_Extract_from_ready,
|
||||
_Scheduler_simple_SMP_Get_highest_ready,
|
||||
_Scheduler_simple_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_simple_SMP_Get_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -223,8 +200,7 @@ static Thread_Control *_Scheduler_simple_SMP_Enqueue_ordered(
|
||||
insert_scheduled,
|
||||
_Scheduler_simple_SMP_Move_from_scheduled_to_ready,
|
||||
_Scheduler_SMP_Get_lowest_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_simple_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -277,9 +253,7 @@ static Thread_Control *_Scheduler_simple_SMP_Enqueue_scheduled_ordered(
|
||||
insert_ready,
|
||||
insert_scheduled,
|
||||
_Scheduler_simple_SMP_Move_from_ready_to_scheduled,
|
||||
_Scheduler_SMP_Allocate_processor_lazy,
|
||||
_Scheduler_simple_SMP_Get_idle_thread,
|
||||
_Scheduler_simple_SMP_Release_idle_thread
|
||||
_Scheduler_SMP_Allocate_processor_lazy
|
||||
);
|
||||
}
|
||||
|
||||
@@ -321,8 +295,7 @@ Thread_Control *_Scheduler_simple_SMP_Unblock(
|
||||
return _Scheduler_SMP_Unblock(
|
||||
context,
|
||||
thread,
|
||||
_Scheduler_simple_SMP_Enqueue_fifo,
|
||||
_Scheduler_simple_SMP_Release_idle_thread
|
||||
_Scheduler_simple_SMP_Enqueue_fifo
|
||||
);
|
||||
}
|
||||
|
||||
@@ -361,8 +334,7 @@ Thread_Control *_Scheduler_simple_SMP_Ask_for_help(
|
||||
context,
|
||||
offers_help,
|
||||
needs_help,
|
||||
_Scheduler_simple_SMP_Enqueue_fifo,
|
||||
_Scheduler_simple_SMP_Release_idle_thread
|
||||
_Scheduler_simple_SMP_Enqueue_fifo
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -900,9 +900,23 @@ static void test_mrsp_obtain_and_release_with_help(test_context *ctx)
|
||||
|
||||
rtems_test_assert(rtems_get_current_processor() == 1);
|
||||
|
||||
/*
|
||||
* With this operation the scheduler instance 0 has now only the main and the
|
||||
* idle threads in the ready set.
|
||||
*/
|
||||
sc = rtems_task_suspend(run_task_id);
|
||||
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
|
||||
|
||||
rtems_test_assert(rtems_get_current_processor() == 1);
|
||||
|
||||
change_prio(RTEMS_SELF, 1);
|
||||
change_prio(RTEMS_SELF, 3);
|
||||
|
||||
sc = rtems_semaphore_release(ctx->mrsp_ids[0]);
|
||||
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
|
||||
|
||||
rtems_test_assert(rtems_get_current_processor() == 0);
|
||||
|
||||
assert_prio(RTEMS_SELF, 3);
|
||||
|
||||
wait_for_prio(help_task_id, 3);
|
||||
|
||||
@@ -21,283 +21,283 @@ 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)
|
||||
[1] MAIN -> HELP (prio 2, node HELP)
|
||||
[0] IDLE -> MAIN (prio 3, node MAIN)
|
||||
[1] MAIN -> HELP (prio 2, node HELP)
|
||||
test MrsP obtain and release
|
||||
test MrsP load
|
||||
worker[0]
|
||||
sleep = 16
|
||||
timeout = 3420
|
||||
obtain[0] = 2503
|
||||
obtain[1] = 1671
|
||||
obtain[2] = 4446
|
||||
obtain[3] = 2850
|
||||
obtain[4] = 5003
|
||||
obtain[5] = 3793
|
||||
obtain[6] = 5575
|
||||
obtain[7] = 4468
|
||||
obtain[8] = 5326
|
||||
obtain[9] = 4645
|
||||
obtain[10] = 4565
|
||||
obtain[11] = 5082
|
||||
obtain[12] = 4050
|
||||
obtain[13] = 5203
|
||||
obtain[14] = 2945
|
||||
obtain[15] = 5704
|
||||
obtain[16] = 1652
|
||||
obtain[17] = 5870
|
||||
obtain[18] = 1472
|
||||
obtain[19] = 4933
|
||||
obtain[20] = 1136
|
||||
obtain[21] = 3463
|
||||
obtain[22] = 1257
|
||||
obtain[23] = 3230
|
||||
obtain[24] = 823
|
||||
obtain[25] = 2860
|
||||
obtain[26] = 736
|
||||
obtain[27] = 1270
|
||||
obtain[28] = 438
|
||||
obtain[29] = 1273
|
||||
obtain[30] = 378
|
||||
obtain[31] = 422
|
||||
cpu[0] = 116428
|
||||
cpu[1] = 16133
|
||||
cpu[2] = 32982
|
||||
cpu[3] = 32557
|
||||
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
|
||||
worker[1]
|
||||
sleep = 1
|
||||
timeout = 4
|
||||
obtain[0] = 2
|
||||
obtain[1] = 0
|
||||
obtain[2] = 3
|
||||
obtain[3] = 8
|
||||
obtain[4] = 10
|
||||
obtain[5] = 0
|
||||
obtain[6] = 7
|
||||
obtain[7] = 0
|
||||
obtain[8] = 0
|
||||
obtain[9] = 0
|
||||
obtain[10] = 11
|
||||
obtain[11] = 0
|
||||
obtain[12] = 26
|
||||
obtain[13] = 14
|
||||
obtain[14] = 5
|
||||
obtain[15] = 0
|
||||
obtain[16] = 0
|
||||
obtain[17] = 18
|
||||
obtain[18] = 12
|
||||
obtain[19] = 0
|
||||
obtain[20] = 0
|
||||
obtain[21] = 0
|
||||
obtain[22] = 0
|
||||
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
|
||||
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[23] = 0
|
||||
obtain[24] = 0
|
||||
obtain[25] = 0
|
||||
obtain[25] = 26
|
||||
obtain[26] = 0
|
||||
obtain[27] = 0
|
||||
obtain[28] = 0
|
||||
obtain[29] = 0
|
||||
obtain[30] = 0
|
||||
obtain[31] = 0
|
||||
cpu[0] = 140
|
||||
cpu[1] = 24
|
||||
cpu[2] = 33
|
||||
cpu[3] = 36
|
||||
cpu[0] = 650
|
||||
cpu[1] = 92
|
||||
cpu[2] = 379
|
||||
cpu[3] = 212
|
||||
worker[2]
|
||||
sleep = 14
|
||||
timeout = 3513
|
||||
obtain[0] = 2474
|
||||
obtain[1] = 1793
|
||||
obtain[2] = 4551
|
||||
obtain[3] = 2833
|
||||
obtain[4] = 5293
|
||||
obtain[5] = 3681
|
||||
obtain[6] = 5309
|
||||
obtain[7] = 4565
|
||||
obtain[8] = 5270
|
||||
obtain[9] = 4610
|
||||
obtain[10] = 4817
|
||||
obtain[11] = 4760
|
||||
obtain[12] = 3858
|
||||
obtain[13] = 5919
|
||||
obtain[14] = 3172
|
||||
obtain[15] = 5286
|
||||
obtain[16] = 1968
|
||||
obtain[17] = 5800
|
||||
obtain[18] = 1768
|
||||
obtain[19] = 4629
|
||||
obtain[20] = 1446
|
||||
obtain[21] = 4109
|
||||
obtain[22] = 1046
|
||||
obtain[23] = 3119
|
||||
obtain[24] = 1012
|
||||
obtain[25] = 2338
|
||||
obtain[26] = 790
|
||||
obtain[27] = 1628
|
||||
obtain[28] = 432
|
||||
obtain[29] = 1281
|
||||
obtain[30] = 270
|
||||
obtain[31] = 418
|
||||
cpu[0] = 15589
|
||||
cpu[1] = 121473
|
||||
cpu[2] = 31797
|
||||
cpu[3] = 31645
|
||||
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
|
||||
worker[3]
|
||||
sleep = 1
|
||||
timeout = 3
|
||||
obtain[0] = 4
|
||||
obtain[1] = 0
|
||||
obtain[2] = 9
|
||||
obtain[3] = 0
|
||||
obtain[4] = 5
|
||||
obtain[5] = 0
|
||||
obtain[6] = 0
|
||||
obtain[7] = 8
|
||||
obtain[8] = 0
|
||||
obtain[9] = 10
|
||||
obtain[10] = 0
|
||||
obtain[11] = 0
|
||||
obtain[12] = 0
|
||||
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
|
||||
obtain[13] = 0
|
||||
obtain[14] = 0
|
||||
obtain[14] = 15
|
||||
obtain[15] = 16
|
||||
obtain[16] = 0
|
||||
obtain[17] = 18
|
||||
obtain[18] = 0
|
||||
obtain[19] = 0
|
||||
obtain[19] = 42
|
||||
obtain[20] = 0
|
||||
obtain[21] = 1
|
||||
obtain[21] = 88
|
||||
obtain[22] = 0
|
||||
obtain[23] = 24
|
||||
obtain[24] = 0
|
||||
obtain[25] = 0
|
||||
obtain[26] = 0
|
||||
obtain[27] = 0
|
||||
obtain[27] = 28
|
||||
obtain[28] = 0
|
||||
obtain[29] = 0
|
||||
obtain[30] = 0
|
||||
obtain[30] = 31
|
||||
obtain[31] = 0
|
||||
cpu[0] = 22
|
||||
cpu[1] = 123
|
||||
cpu[2] = 7
|
||||
cpu[3] = 39
|
||||
cpu[0] = 136
|
||||
cpu[1] = 573
|
||||
cpu[2] = 291
|
||||
cpu[3] = 121
|
||||
worker[4]
|
||||
sleep = 19
|
||||
timeout = 3025
|
||||
obtain[0] = 2574
|
||||
obtain[1] = 1845
|
||||
obtain[2] = 4423
|
||||
obtain[3] = 2985
|
||||
obtain[4] = 5086
|
||||
obtain[5] = 3679
|
||||
obtain[6] = 5286
|
||||
obtain[7] = 4447
|
||||
obtain[8] = 5885
|
||||
obtain[9] = 4771
|
||||
obtain[10] = 4857
|
||||
obtain[11] = 5467
|
||||
obtain[12] = 4554
|
||||
obtain[13] = 5210
|
||||
obtain[14] = 3547
|
||||
obtain[15] = 6169
|
||||
obtain[16] = 2337
|
||||
obtain[17] = 6109
|
||||
obtain[18] = 1797
|
||||
obtain[19] = 5136
|
||||
obtain[20] = 1646
|
||||
obtain[21] = 4251
|
||||
obtain[22] = 1041
|
||||
obtain[23] = 3235
|
||||
obtain[24] = 975
|
||||
obtain[25] = 2961
|
||||
obtain[26] = 739
|
||||
obtain[27] = 1704
|
||||
obtain[28] = 554
|
||||
obtain[29] = 1344
|
||||
obtain[30] = 182
|
||||
obtain[31] = 559
|
||||
cpu[0] = 5617
|
||||
cpu[1] = 5834
|
||||
cpu[2] = 100129
|
||||
cpu[3] = 99149
|
||||
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
|
||||
worker[5]
|
||||
sleep = 18
|
||||
timeout = 3123
|
||||
obtain[0] = 2439
|
||||
obtain[1] = 1878
|
||||
obtain[2] = 4576
|
||||
obtain[3] = 2938
|
||||
obtain[4] = 5088
|
||||
obtain[5] = 3723
|
||||
obtain[6] = 5611
|
||||
obtain[7] = 4411
|
||||
obtain[8] = 5522
|
||||
obtain[9] = 4893
|
||||
obtain[10] = 4877
|
||||
obtain[11] = 4932
|
||||
obtain[12] = 4263
|
||||
obtain[13] = 5608
|
||||
obtain[14] = 2791
|
||||
obtain[15] = 5905
|
||||
obtain[16] = 1739
|
||||
obtain[17] = 5322
|
||||
obtain[18] = 1892
|
||||
obtain[19] = 5118
|
||||
obtain[20] = 1360
|
||||
obtain[21] = 4764
|
||||
obtain[22] = 1099
|
||||
obtain[23] = 3180
|
||||
obtain[24] = 913
|
||||
obtain[25] = 2612
|
||||
obtain[26] = 807
|
||||
obtain[27] = 1588
|
||||
obtain[28] = 493
|
||||
obtain[29] = 1348
|
||||
obtain[30] = 389
|
||||
obtain[31] = 471
|
||||
cpu[0] = 5554
|
||||
cpu[1] = 6139
|
||||
cpu[2] = 97852
|
||||
cpu[3] = 95573
|
||||
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
|
||||
worker[6]
|
||||
sleep = 1
|
||||
timeout = 11
|
||||
obtain[0] = 2
|
||||
obtain[1] = 2
|
||||
obtain[2] = 9
|
||||
obtain[3] = 4
|
||||
obtain[4] = 15
|
||||
obtain[5] = 12
|
||||
obtain[6] = 7
|
||||
obtain[7] = 16
|
||||
obtain[8] = 10
|
||||
obtain[9] = 20
|
||||
obtain[10] = 11
|
||||
obtain[11] = 5
|
||||
obtain[12] = 0
|
||||
obtain[13] = 0
|
||||
obtain[14] = 0
|
||||
obtain[15] = 16
|
||||
obtain[16] = 0
|
||||
obtain[17] = 0
|
||||
obtain[18] = 0
|
||||
obtain[19] = 20
|
||||
obtain[20] = 0
|
||||
obtain[21] = 44
|
||||
obtain[22] = 0
|
||||
obtain[23] = 0
|
||||
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
|
||||
obtain[24] = 0
|
||||
obtain[25] = 7
|
||||
obtain[25] = 78
|
||||
obtain[26] = 0
|
||||
obtain[27] = 0
|
||||
obtain[27] = 43
|
||||
obtain[28] = 0
|
||||
obtain[29] = 0
|
||||
obtain[30] = 0
|
||||
obtain[31] = 0
|
||||
cpu[0] = 10
|
||||
cpu[1] = 6
|
||||
cpu[2] = 168
|
||||
cpu[3] = 217
|
||||
obtain[31] = 32
|
||||
cpu[0] = 71
|
||||
cpu[1] = 39
|
||||
cpu[2] = 1333
|
||||
cpu[3] = 1254
|
||||
worker[7]
|
||||
sleep = 1
|
||||
timeout = 0
|
||||
@@ -337,8 +337,8 @@ worker[7]
|
||||
cpu[1] = 0
|
||||
cpu[2] = 1
|
||||
cpu[3] = 0
|
||||
migrations[0] = 110919
|
||||
migrations[1] = 110920
|
||||
migrations[2] = 109762
|
||||
migrations[3] = 112076
|
||||
migrations[0] = 437361
|
||||
migrations[1] = 437363
|
||||
migrations[2] = 441234
|
||||
migrations[3] = 433487
|
||||
*** END OF TEST SMPMRSP 1 ***
|
||||
|
||||
Reference in New Issue
Block a user