SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause copyrights: - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) enabled-by: RTEMS_SMP limits: sparc/gr712rc/smp/qual-only/3Y1G8SMm2FRTpZB5_0NhbpDnatbEYmbDLLW58d-wXuY=: DirtyCache: max-upper-bound: 1.296e-06 median-lower-bound: 8.480000000000001e-07 median-upper-bound: 1.272e-06 min-lower-bound: 8.480000000000001e-07 FullCache: max-upper-bound: 1.272e-06 median-lower-bound: 8.32e-07 median-upper-bound: 1.248e-06 min-lower-bound: 8.32e-07 HotCache: max-upper-bound: 1.272e-06 median-lower-bound: 8.32e-07 median-upper-bound: 1.248e-06 min-lower-bound: 8.32e-07 Load/1: max-upper-bound: 1.3919999999999998e-06 median-lower-bound: 9.279999999999999e-07 median-upper-bound: 1.3919999999999998e-06 min-lower-bound: 9.279999999999999e-07 Load/2: max-upper-bound: 1.3919999999999998e-06 median-lower-bound: 9.279999999999999e-07 median-upper-bound: 1.3919999999999998e-06 min-lower-bound: 9.120000000000001e-07 sparc/gr712rc/smp/qual-only/LDe0OENspSb4U2hhl9QK2R3q4ntkBdYP_JLnD_-aZ34=: DirtyCache: max-upper-bound: 2.0243999999999996e-06 median-lower-bound: 1.34e-06 median-upper-bound: 2.01e-06 min-lower-bound: 1.34e-06 FullCache: max-upper-bound: 1.17e-06 median-lower-bound: 5.296e-07 median-upper-bound: 7.944e-07 min-lower-bound: 5.2e-07 HotCache: max-upper-bound: 7.043999999999999e-07 median-lower-bound: 4.6000000000000004e-07 median-upper-bound: 6.9e-07 min-lower-bound: 4.6000000000000004e-07 Load/1: max-upper-bound: 1.9944e-06 median-lower-bound: 1.32e-06 median-upper-bound: 1.98e-06 min-lower-bound: 1.32e-06 Load/2: max-upper-bound: 2.01e-06 median-lower-bound: 1.32e-06 median-upper-bound: 1.98e-06 min-lower-bound: 1.32e-06 sparc/gr740/smp/qual-only/3Y1G8SMm2FRTpZB5_0NhbpDnatbEYmbDLLW58d-wXuY=: DirtyCache: max-upper-bound: 6.1152e-05 median-lower-bound: 4.0768e-05 median-upper-bound: 6.1152e-05 min-lower-bound: 4.0768e-05 FullCache: max-upper-bound: 6.0119999999999994e-05 median-lower-bound: 4.008e-05 median-upper-bound: 6.0119999999999994e-05 min-lower-bound: 3.9824000000000004e-05 HotCache: max-upper-bound: 6.0048e-05 median-lower-bound: 4.0032000000000006e-05 median-upper-bound: 6.0048e-05 min-lower-bound: 3.996800000000001e-05 Load/1: max-upper-bound: 6.6072e-05 median-lower-bound: 4.4048e-05 median-upper-bound: 6.6072e-05 min-lower-bound: 4.3984000000000004e-05 Load/2: max-upper-bound: 6.6072e-05 median-lower-bound: 4.4048e-05 median-upper-bound: 6.6072e-05 min-lower-bound: 4.3984000000000004e-05 Load/3: max-upper-bound: 6.6072e-05 median-lower-bound: 4.4048e-05 median-upper-bound: 6.6072e-05 min-lower-bound: 4.3984000000000004e-05 Load/4: max-upper-bound: 6.6072e-05 median-lower-bound: 4.4048e-05 median-upper-bound: 6.6072e-05 min-lower-bound: 4.3984000000000004e-05 sparc/gr740/smp/qual-only/qpmWME3Tk2kfoQL1kmgyerzkvLKkrfPY7xWIWGfY0Fg=: DirtyCache: max-upper-bound: 6.0072e-05 median-lower-bound: 3.74688e-05 median-upper-bound: 5.620319999999999e-05 min-lower-bound: 3.72928e-05 FullCache: max-upper-bound: 3.19296e-05 median-lower-bound: 1.68192e-05 median-upper-bound: 2.52288e-05 min-lower-bound: 1.6752e-05 HotCache: max-upper-bound: 1.23312e-05 median-lower-bound: 8.2112e-06 median-upper-bound: 1.23168e-05 min-lower-bound: 8.208e-06 Load/1: max-upper-bound: 7.648799999999999e-05 median-lower-bound: 3.6755200000000003e-05 median-upper-bound: 5.5132799999999995e-05 min-lower-bound: 3.66336e-05 Load/2: max-upper-bound: 7.30416e-05 median-lower-bound: 3.69472e-05 median-upper-bound: 5.5420799999999996e-05 min-lower-bound: 3.65504e-05 Load/3: max-upper-bound: 0.00034555199999999995 median-lower-bound: 0.0001987136 median-upper-bound: 0.00029807039999999997 min-lower-bound: 0.0001984928 Load/4: max-upper-bound: 0.0005223648 median-lower-bound: 0.0003007328 median-upper-bound: 0.0004510992 min-lower-bound: 0.0002964096 links: - role: requirement-refinement uid: perf-runtime - role: runtime-measurement-request uid: ../val/perf non-functional-type: performance-runtime params: {} rationale: null references: [] requirement-type: non-functional test-body: brief: | Move the worker to scheduler A. code: | ctx->begin = T_tick(); ctx->status = rtems_task_set_scheduler( ctx->worker_id, SCHEDULER_A_ID, PRIO_HIGH ); description: null test-cleanup: brief: | Delete the worker tasks. code: | ResumeTask( ctx->worker_2_id ); DeleteTask( ctx->worker_2_id ); DeleteTask( ctx->worker_id ); description: null test-prepare: brief: | Create and start two worker tasks for scheduler B. Make the second worker busy. code: | ctx->worker_id = CreateTask( "WORK", PRIO_NORMAL ); SetScheduler( ctx->worker_id, SCHEDULER_B_ID, PRIO_NORMAL ); StartTask( ctx->worker_id, Worker, ctx ); Send( ctx, EVENT_SET_END ); WaitForNextTask( 1, ctx->worker_id ); ctx->worker_2_id = CreateTask( "WRK2", PRIO_NORMAL ); SetScheduler( ctx->worker_2_id, SCHEDULER_B_ID, PRIO_HIGH ); StartTask( ctx->worker_2_id, Worker, ctx ); SendEvents( ctx->worker_2_id, EVENT_BUSY ); SuspendTask( ctx->worker_2_id ); description: null test-setup: brief: | Move the worker to scheduler B. Make the worker ready to set the end time. code: | ResumeTask( ctx->worker_2_id ); SetScheduler( ctx->worker_id, SCHEDULER_B_ID, PRIO_NORMAL ); Send( ctx, EVENT_SET_END ); description: null test-teardown: brief: | Set the measured runtime. Discard samples interrupted by a clock tick. code: | T_quiet_rsc_success( ctx->status ); *delta = ctx->end - ctx->begin; SuspendTask( ctx->worker_2_id ); return tic == toc; description: null text: | Let U and V be two tasks with the distinct home schedulers. Let :math:`B` be a time point measured by U right before a call to ${../if/set-scheduler:/name} which moves task V to the home scheduler of U which preempts the caller. Let :math:`E` be a time point measured by V right after the first context switch after :math:`B`. While the execution environment is ${.:/environment}, while the measurement sample is :math:`E - B`, when exactly ${../val/perf:/params/sample-count} samples are collected, the ${.:/limit-kind} shall be ${.:/limit-condition}. type: requirement