Estou tentando executar alguns benchmarks em uma máquina com vários núcleos e gostaria de dizer ao kernel do Linux para simplesmente evitar certos núcleos, a menos que seja explicitamente instruído a usá-los.
A idéia é que eu possa reservar um punhado de núcleos (a máquina possui 6 núcleos físicos) para fazer benchmarking e usar a máscara da CPU para permitir apenas processos de benchmark nos núcleos fornecidos.
Isso é viável?
linux-kernel
cpu
benchmark
Lajos Nagy
fonte
fonte
Respostas:
Você pode isolar alguns núcleos de CPU da programação do kernel usando o
isolcpus
parâmetro Adicione este parâmetro ao seu grub.conf e reinicie para entrar em vigor.fonte
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 comoxen-linux-system-amd64
,xen-hypervisor-amd64
,xen-utils
etc (estou usando no Debian / Sidxen-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 (usandobatch
ouat
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).fonte
at
oubatch
) enquanto não estiver conectado (portanto, não execute nenhuma sessão consumidora).