Você deseja alguma afinidade de processador (ou afinidade de CPU ).
O syscall relevante é sched_setaffinity (2) , mas você deve usá-lo através de pthread_set_affinity_np (3) se desejar codificar seus benchmarks para isso.
O comando relacionado é o conjunto de tarefas (1) e você pode usá-lo nos comandos que deseja comparar (ou no seu shell).
Se possível, verifique se a máquina não é carregada muito por outras tarefas não relacionadas ao benchmark.
Como alternativa, use algum hipervisor como o Xen e inicialize o Linux como um SO convidado para esse hipervisor. Em seguida, configure xen
para usar apenas um conjunto restrito de núcleos da CPU (não sei os detalhes exatos, você precisa descobrir). No Debian (e afins) distribuições, você pode instalar pacotes como xen-linux-system-amd64
, xen-hypervisor-amd64
, xen-utils
etc (estou usando no Debian / Sid xen-hypervisor-4.5-amd64
, xen-linux-system-4.0.0-1-amd64
, xen-utils-4.5
etc ...).
Talvez haja alguma maneira de configurar (talvez no momento da compilação do kernel, ou passando argumentos específicos para o kernel através do carregador Grub) seu kernel Linux para restringir o número de núcleos utilizáveis.
Claro, é melhor, quando o benchmarking alguns -por exemplo, programa em um desktop Linux PC-, tomar cuidado para evitar ter muitos processos externos em execução (use ps auxw
, pstree -p
, top
para encontrar estes). Pelo menos, feche e feche a maioria dos aplicativos interativos (navegador como Firefox, email, editor, IDEs como Eclipse) e mantenha apenas um pequeno número de terminais como referência. Você pode até referência no modo de lote (usando batch
ou at
para executar os benchmarks), enquanto você não está mesmo logado (por isso não tem nenhum sessões GUI à la Gnome ou KDE ou Xfce , etc ... em execução).