Várias coisas podem causar isso, e eu diria primeiro que isso não é motivo para alarme ou preocupação.
Não sabendo mais nada sobre o que você está fazendo do que a lista de processos que você incluiu expõe, e não sabendo nada realmente sobre o Matlab, eu vou sugerir algumas coisas possíveis que estão acontecendo que são completamente normais, e podem resultar no que você está vendo.
Primeiro, porém, quero salientar que top está mostrando um valor médio durante um certo período de tempo, e provavelmente um valor muito curto - na ordem de alguns segundos. Um de seus processos rodando a apenas 93% por alguns segundos (ao invés de 100%) não é uma coisa enorme. É provavelmente até 100% (e um processo diferente até 93%) no próximo intervalo.
Voltar para o porquê:
Se um processo fizer qualquer coisa que exija uma chamada de sistema, especialmente E / S de disco, pode ficar inativo por um tempo aguardando a conclusão dessa operação. Isso resultará em < 100% de uso da CPU, como parte do tempo que ele está bloqueando na E / S. Processos de outros usuários definitivamente têm um efeito aqui. Pode haver núcleos mais do que suficientes, mas se todos competirem por largura de banda no mesmo disco rígido, ninguém verá 100% de utilização da CPU.
Seu aplicativo parece usar vários processos ou até vários segmentos de uma só vez. Isso pode acelerar as coisas até certo ponto (e isso depende diretamente do aplicativo e de como ele está dividindo o trabalho). No entanto, isso também pode ter um custo associado a ele quando se trata de comunicação entre processos. Se, por exemplo, cada processo filho (ou thread) tiver que se comunicar entre si, o número de canais de comunicação aumentará significativamente à medida que o número de processos aumentar. Mesmo que cada processo esteja apenas se comunicando com um processo principal responsável, os filhos podem bloquear a comunicação com o pai, conforme o pai fala com um filho diferente. Isso não é tão diferente do bloqueio na E / S do disco.
No final, mesmo com um número infinito de núcleos, você provavelmente verá retornos decrescentes com cada processo adicional usado para fazer seu trabalho. Há provavelmente um ponto ideal em algum lugar, e talvez seja 6, como seu colega sugere. Mas eu não usaria sua análise (procurando por < 100% de utilização) para determinar onde está esse ponto ideal.