blob: 8c084d1d240c8ee9bb7639dd320e6c6af4fb2214 [file] [log] [blame]
POSIX Thread Benchmark
######################
Overview
********
This benchmark creates and joins as many threads as possible within a configurable time window.
It provides a rough comparison Zephyr's POSIX threads (pthreads) with Zephyr's kernel threads
(k_threads) API, highlighting the overhead of the POSIX. Ideally, this overhead would shrink over
time.
Sample output of the benchmark::
*** Booting Zephyr OS build v4.0.0-1410-gfca33facee37 ***
ASSERT: y
BOARD: qemu_riscv64
NUM_CPUS: 1
TEST_DELAY_US: 0
TEST_DURATION_S: 5
SMP: n
API, Thread ID, time(s), threads, cores, rate (threads/s/core)
k_thread, ALL, 5, 47663, 1, 9532
pthread, ALL, 5, 28180, 1, 5636
PROJECT EXECUTION SUCCESSFUL
To observe periodic statistics on a per-thread basis in addition to the summary of statistics
printed at the end of execution, use CONFIG_TEST_PERIODIC_STATS.
Several other options can be tuned on an as-needed basis:
- CONFIG_MP_MAX_NUM_CPUS - Number of CPUs to use in parallel.
- CONFIG_TEST_DURATION_S - Number of seconds to run the test.
- CONFIG_TEST_DELAY_US - Microseconds to delay between pthread join and create.
- CONFIG_TEST_KTHREADS - Exercise k_threads in the test app.
- CONFIG_TEST_PTHREADS - Exercise pthreads in the test app.
- CONFIG_TEST_STACK_SIZE - Size of each thread stack in this test.
The following table summarizes the purposes of the different extra
configuration files that are available to be used with this benchmark.
A tester may mix and match them allowing them different scenarios to
be easily compared the default.
+-----------------------------+----------------------------------------+
| prj-assert.conf | Enable assertions for API verification |
+-----------------------------+----------------------------------------+