A razão para isso pode ser a lixeira de cache. A carga da CPU não é apenas computação pura. É a atividade da CPU, ou seja, tudo, exceto dormir e esperar por E / S.
Se um único processo estiver em execução, provavelmente ele pode usar a maioria dos cache da CPU. Se você iniciar um segundo processo, o Kernel pode ser inteligente o suficiente para compartilhar o código entre os dois processos, mas eles não compartilham (a maioria) dos dados.
Assim, se as partes relevantes (para a atividade geral da CPU) do código usarem dados com alta localidade e a quantidade desses dados for maior que a metade do tamanho do cache, os dois processos descartarão dados um do outro o tempo todo. . Ou seja a latência de memória média aumenta seriamente. O acesso à memória faz parte da carga da CPU.
Não tenho conhecimento de qualquer possibilidade de ver qual parte dos acessos foi atendida por qual nível de cache ou por RAM.
Outra possibilidade é que o processo precise de uma quantidade tão grande de memória que a troca (o "mesmo cache externo ...") se torne um problema. Mas isso não parece tão provável para mim neste caso.