A velha regra de polegares que uso é:
Média de carga aceitável ≤ número de núcleos +1
Isso garante que nunca mais do que um processo esteja aguardando enquanto seus recursos são totalmente utilizados. No entanto, carregada dessa forma, a máquina pode parecer um pouco indiferente quando usada interativamente, você pode considerar liberar alguns recursos para essa finalidade.
A queda que você vê em% cpu para mais de 6 processos simultâneos pode ser causada por muitos fatores diferentes (os cpus não são o único recurso compartilhado ...), para saber qual (is) você precisaria fazer alguns perfis no seu programa.
De qualquer forma, como esta máquina parece compartilhada entre vários usuários para fins de cálculo, aconselho vivamente a configurar alguma forma de agendamento de trabalho, mesmo para o acesso ao shell (você também pode introduzir algum balanceamento de carga dessa maneira). Existem algumas ferramentas para permitir isso, os dois que eu uso são Torque / PBS e Sun Grid Engine (ambos os projetos de OSS).