É possível desativar uma CPU, não um núcleo? Quero fazer um teste para verificar se o desempenho pode fazer uma grande diferença ou não.
Estou usando o Ubuntu 10.10.
Além de fazer isso no seu grub BIOS tem uma opção chamada maxcpus
.
Você pode editar essa opção ao selecionar sua opção de inicialização do grub adicionando maxcpus=1
aos parâmetros. Imagem aleatória do grub:
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 esse 'Ubuntu, kernel 2.5.12-9-386 (1 cpu)' e tê-lo entre 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 como isto:
processador: 0 processador: 1
E a segunda linha deve desaparecer após a inicialização com 1 CPU.
Você pode desativar dinamicamente as CPUs via
/sys/devices/system/cpu/cpuN/online
, por exemplo, para desativar a CPU 1, use:e para reativar, use:
fonte
Você sempre pode desconectar a CPU do soquete. É força bruta, mas você está garantido para fazer o teste que deseja e não precisa se preocupar se o kernel / BIOS / qualquer opção está realmente fazendo o que você espera que esteja fazendo.
Minha empresa possui grandes instalações de farms de servidores em vários locais ao redor do mundo. Às vezes, em nosso laboratório, removemos as CPUs dos soquetes para esse teste.
Há uma variação interessante neste teste que você pode fazer com sistemas NUMA com 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 será inicializado corretamente e, em seguida, você poderá executar testes com o aplicativo fixado em vários núcleos, o que permitirá medir os efeitos da memória "local" ou "remota".
fonte
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 de conjunto de tarefas. Eu acho que você tem uma máquina NUMA. Você pode instalar o utilitário numactl e, usando-o, pode encontrar quais núcleos correspondentes a qual CPU. Por exemplo, sua máquina possui dois CPUS (chips) quad-core. Usando o utilitário de conjunto de tarefas, você pode criar núcleos de uma CPU como um conjunto e alocá-los ao seu aplicativo. Em seguida, seu aplicativo usa apenas uma CPU / Chip (quatro núcleos). Por favor, deixe-me saber se você precisar de mais informações.
fonte