zephyr/tests/benchmarks/latency_measure
Ioannis Glaropoulos 8ef34566ed tests: explicitly disable HW Stack Protection when needed
Some ARM platforms, now, enable HW Stack Protection by
default in the Board definition. So if some tests
need to run without stack protection, it is not
sufficient to disable TEST_HW_STACK_PROTECTION;
we need to explicitly disable HW_STACK_PROTECTION.

Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
2020-09-24 15:42:09 -05:00
..
boards
src
CMakeLists.txt
prj.conf
README.rst
testcase.yaml

Latency Measurements
####################

This benchmark measures the latency of selected kernel capabilities, including:


* Measure time to switch from ISR back to interrupted thread
* Measure time from ISR to executing a different thread (rescheduled)
* Measure average time to signal a semaphore then test that semaphore
* Measure average time to signal a semaphore then test that semaphore with a context switch
* Measure average time to lock a mutex then unlock that mutex
* Measure average context switch time between threads using (k_yield)
* Measure average context switch time between threads (coop)
* Time it takes to suspend a thread
* Time it takes to resume a suspended thread
* Time it takes to create a new thread (without starting it)
* Time it takes to start a newly created thread


Sample output of the benchmark::

        *** Booting Zephyr OS build zephyr-v2.3.0-2257-g0f420483db07  ***
        START - Time Measurement
        Timing results: Clock frequency: 120 MHz
        Average thread context switch using yield                   :     420 cycles ,     3502 ns
        Average context switch time between threads (coop)          :     429 cycles ,     3583 ns
        Switch from ISR back to interrupted thread                  :     670 cycles ,     5583 ns
        Time from ISR to executing a different thread               :     570 cycles ,     4750 ns
        Time to create a thread (without start)                     :     360 cycles ,     3000 ns
        Time to start a thread                                      :     545 cycles ,     4541 ns
        Time to suspend a thread                                    :     605 cycles ,     5041 ns
        Time to resume a thread                                     :     660 cycles ,     5500 ns
        Time to abort a thread (not running)                        :     495 cycles ,     4125 ns
        Average semaphore signal time                               :     195 cycles ,     1626 ns
        Average semaphore test time                                 :      62 cycles ,      518 ns
        Semaphore take time (context switch)                        :     695 cycles ,     5791 ns
        Semaphore give time (context switch)                        :     845 cycles ,     7041 ns
        Average time to lock a mutex                                :      79 cycles ,      659 ns
        Average time to unlock a mutex                              :     370 cycles ,     3085 ns
        ===================================================================
        PROJECT EXECUTION SUCCESSFUL