Userspace 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. Contrary to the non-userspace version, it runs threads
in userspace with different memory domains.
It works very simply: a main thread creates n "yielders"
threads at a higher priority, from this initial state:
1. The main thread starts all yielders
2. Each yielder yields k times
5. The main thread joins all yielders
This is run for multiples values of n, reporting each time the
average time taken for a yield context switch.