Se você for executar todos os segmentos em um só núcleo, compre um hardware mais barato com um único núcleo.
O agendador tenta aproveitar ao máximo todos os núcleos. Isso significa distribuir threads para qualquer núcleo que tenha algum tempo livre. Mover um encadeamento de um núcleo para outro núcleo tem um custo pequeno, portanto, o planejador tenta evitar isso. Mas você normalmente não notará muito, porque o benefício de não deixar um núcleo ficar ocioso é muito mais do que o custo de migrar um thread. Isso é especialmente verdadeiro se os encadeamentos usarem mais memória do que o cache core-local: se a memória usada por um encadeamento não estiver no cache core-local, há muito pouco a perder ao migrá-lo para outro núcleo.
Segundo, um agendador de nível industrial como o Linux geralmente piora o desempenho.
Os gráficos que você mostra indicam que a carga nos vários núcleos não é completa e levemente variável, presumivelmente porque seu sistema como um todo é limitado por E / S para as tarefas que está fazendo agora, não pela energia da CPU. Ele não diz nada de um jeito ou de outro sobre a frequência com que os segmentos se movem de um núcleo para outro.