Sim, isso pode ser normal. Depende de quanto gerenciamento o sistema operacional faz. As duas grandes ferramentas para impactar isso são
- taskset que pode direcionar qual CPU um processo pode usar
- definindo a afinidade de IRQ dos seus dispositivos pci
A afinidade de IRQ é fácil de corrigir. Faça algum IO, observe / proc / interrompe e se você vir MSI-foo na mesma CPU, distribua-os. Você geralmente deseja atender IRQs nos "núcleos reais", já que são os mais rápidos. Uma vez que você tenha descoberto, escreva um script para confirmar o início do sistema e pronto.
Os processos são penosos porque podem migrar entre CPUs. Para "fazer certo" você realmente precisa configurar cgroups para os processos em questão. Ou ... você faz o caminho mais lento e faz um script wrapper para o programa X que chama o taskset ... _X.
Meça seu antes e depois de um desempenho com um benchmark como fio ou todos os seus ajustes são para nada. Se você não consegue medir suas alterações, não sabe o que elas valem.
Por exemplo, eu tenho uma CPU de 24, 2 num sistema de nós aqui que tem um dispositivo de armazenamento que irá criar uma interrupção MSI para cada CPU ... e então ligá-los todos à CPU 0 :-p. Distribuindo a afinidade de IRQ entre os primeiros 12 núcleos quadruplicou a taxa de transferência de IO registrada por fio. Mas este sistema realmente tem muita largura de banda, o desktop típico não.
Boa sorte. O trabalho de performance é divertido, ... e difícil:)