https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82604
--- Comment #22 from Jakub Jelinek <jakub at gcc dot gnu.org> --- libgomp has many ways to tweak the wait behavior, look for OMP_WAIT_POLICY and GOMP_SPINCOUNT environment variables to tweak the spinning vs. futex waiting. Is the work scheduled for each thread roughly the same or are there threads that do more work than others? There is also --param parloops-schedule={static,dynamic,guided,auto,runtime} with which you can choose different kinds of OpenMP scheduling, with runtime even using env vars.