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

10

É 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.

LeoYuan 袁力皓
fonte

Respostas:

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=1aos parâmetros. Imagem aleatória do grub:

insira a descrição da imagem aqui

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=1aos 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.

Rinzwind
fonte
1
essa pergunta também seria uma piada prática muito malvada! : D
Alvar
O que acontece se você definir maxcpus = 0? : P
crazy2be
@Rinzwind Eu fiz exatamente o que você disse, mas o resultado parece estranho, obtive 12 informações de processadores antes de adicionar "maxcpus = 1" aos parâmetros ao fazer grepping, mas só obtive 1 informação de processador após a modificação, parece apenas um núcleo em todos os 12 núcleos estão ativados. Nota: Meu computador possui duas CPUs de seis núcleos.
LeoYuan #
@ Crazy2be: o primeiro processador é chamado 0, então você acaba usando um? : D
Rinzwind
@ LeoYuan88 袁力皓 você pode editar a saída de cat / proc / cpuinfo | processador grep antes e depois de inicializar com maxcpus = 1?
Rinzwind
7

Você pode desativar dinamicamente as CPUs via /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
Colin Ian King
fonte
Isso parece desativar um lcore, não uma CPU. Eu tenho um desses diretórios para cada núcleo lógico do meu sistema.
Sudo
1

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".

David Gardner
fonte
Desculpe, ainda não sei como desconectar a CPU do soquete. Você poderia me mostrar como fazer o trabalho?
LeoYuan #
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 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.

samarasa
fonte