zephyr/tests/benchmarks/sched
Anas Nashif 057ba5cf45 tests: benchmarks: optimize filters and use platform_key.
Benchmarks are not tests, we run them to verify they still work and do
not bitrot. Running them on each architecture should be sufficient.

This reduces amount of churn in CI and still allows them to be run
individually on platforms.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2024-11-26 21:42:22 +01:00
..
boards tests: benchmarks/sched: limit CPU to 1 for Intel ADSP ACE 2024-11-16 14:07:08 -05:00
src tests: sched: Add busy threads for SMP 2024-11-16 14:07:08 -05:00
CMakeLists.txt
prj.conf
README.rst
testcase.yaml tests: benchmarks: optimize filters and use platform_key. 2024-11-26 21:42:22 +01:00

Scheduler Microbenchmark
########################

This is a scheduler microbenchmark, designed to measure minimum
latencies (not scaling performance) of specific low level scheduling
primitives independent of overhead from application or API
abstractions.  It works very simply: a main thread creates a "partner"
thread at a higher priority, the partner then sleeps using
_pend_curr_irqlock().  From this initial state:

1. The main thread calls _unpend_first_thread()
2. The main thread calls _ready_thread()
3. The main thread calls k_yield()
   (the kernel switches to the partner thread)
4. The partner thread then runs and calls _pend_curr_irqlock() again
   (the kernel switches to the main thread)
5. The main thread returns from k_yield()

It then iterates this many times, reporting timestamp latencies
between each numbered step and for the whole cycle, and a running
average for all cycles run.