I’ll start with the question of “why spread the jobs out more than required?” and move on to why the other items didn’t work:
- exclusive only ensures that others’ jobs don’t run on a node with your jobs, and does nothing about other jobs you own.
- spread-job distributes the work of one job across multiple nodes, but does nothing about multiple jobs
- distribution also distributes the work of one job
You might get something similar to what you want by changing the scheduler to use CR_LLN instead of CR_Core_Memory (or whatever you’re using), but that’ll potentially have serious side effects for others’ jobs.
So back to the original question: why *not* pack 20 jobs onto fewer nodes if those nodes have the capacity to run the full set of jobs? You shouldn’t have a constraint with memory or CPUs. Are you trying to spread out an I/O load somehow? Networking?