Most processes take up 1 core, but a number of them are able to take advantage of thread-level parallelism. --omp-nthreads controls the maximum for those processes, but no process will claim 8 if it only needs 1. But if a process is able to use 8, there’s no way to dynamically say “there are only 4 available, so tell this specific process to use 4”. (Though that would be nice…)
The BrokenProcessPool issue is one that we’ve been struggling with. It usually means excessive memory usage led to a process being killed by the operating system, and it’s related to the execution plugin. You can try using the LegacyMultiProc plugin, as described here: