É possível desabilitar uma CPU (não um núcleo)?

10

É possível desativar uma CPU, não um núcleo? Eu quero fazer um teste para verificar se o desempenho pode fazer uma grande diferença ou não.

Estou usando o Ubuntu 10.10.

    
por LeoYuan 袁力皓 30.05.2011 / 14:43

4 respostas

10

Além de fazer isso no seu BIOS, o grub tem uma opção chamada maxcpus .

Você pode editar esta opção ao selecionar sua opção de inicialização do grub adicionando maxcpus=1 aos parâmetros. Imagem grub aleatória:

Escolha 'e' e você chegará a uma linha de comando onde poderá adicionar opções.

Você também pode criar uma opção de inicialização permanente no grub fazendo uma cópia da sua opção de inicialização atual e adicionando maxcpus=1 aos parâmetros de inicialização. Você pode nomear este 'Ubuntu, kernel 2.5.12-9-386 (1 cpu)' e tê-lo entre as outras opções de inicialização, como mostra a imagem.

Você pode verificar a execução em 1 cpu emitindo:

cat /proc/cpuinfo | grep processor , isso deve mostrar algo assim:

processor    : 0
processor    : 1

E a segunda linha deve desaparecer após a inicialização com 1 CPU.

    
por Rinzwind 30.05.2011 / 14:57
7

Você pode desativar dinamicamente as CPUs através de /sys/devices/system/cpu/cpuN/online , por exemplo, para desativar a CPU 1, use:

echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online

e para reativar, use:

echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online
    
por Colin Ian King 23.08.2012 / 22:12
1

Você sempre pode desconectar a CPU de seu soquete. É força bruta, mas você está garantido para obter o teste que você quer, e você não precisa se preocupar se o kernel / BIOS / qualquer switch está realmente fazendo o que você espera que esteja fazendo.

Minha empresa possui grandes instalações de farms de servidores em vários locais do mundo. Em nosso laboratório, às vezes, removeremos CPUs de soquetes para um teste desse tipo.

Há uma variação interessante nesse teste que você pode fazer com sistemas NUMA de várias CPUs. Nesses tipos de placas-mãe, você pode remover todos os DIMMs de memória controlados por uma CPU física. O sistema ainda inicializará bem, e você poderá executar testes com seu aplicativo fixado em vários núcleos, o que permitirá medir os efeitos da memória "local" ou "remota".

    
por David Gardner 30.05.2011 / 21:26
0

Gostaria de ver o desempenho de um aplicativo multithread junto com o número de núcleos? Se for esse o caso, você pode usar o utilitário taskset. Eu acho que você tem uma máquina NUMA. Você pode instalar o utilitário numactl e, ao usá-lo, poderá encontrar quais núcleos correspondem a qual CPU. Por exemplo, sua máquina possui dois CPUS quad-core (chips). Usando o utilitário taskset, você pode fazer núcleos de uma CPU como um conjunto e alocá-los ao seu aplicativo. Então seu aplicativo usa apenas uma CPU / Chip (quatro núcleos). Por favor, deixe-me saber se você precisar de mais informações.

    
por samarasa 30.05.2011 / 17:30

Tags