It appears you are unfamiliar with "may" coroutines which is a userspace M:N scheduler.
Erlang phenomenon mentioned is the same and the behavior is easily reproducible on a normal laptop.
"may" defaults to the same number of OS threads as there are cores. Scale the set_pool_capacity() to 1000, 5000, or beyond for coroutine scaling. Also try set_workers() for OS threads.
Try it any which way and you see thread contention and cache locality penalty increasing latency.