blob: 90141b558b06dd3692793bea5528e6747e0a5372 [file] [log] [blame]
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.