Como posso garantir que exatamente um processo esteja sendo executado em um determinado processador / núcleo?

3

Eu gostaria de fazer isso para que eu possa acelerar com precisão o teste de meus processos e apenas para ter a ilusão de controle.

Talvez eu queira reservar um processador para programas especiais. Talvez eu queira escrever meu próprio otimizador de processos. Quem sabe. As possibilidades são infinitas em minha mente.

Isso é possível em qualquer sistema operacional? Se não, por que não? Se nos é permitido compartimentar a memória, por que não podemos ter tal controle sobre os processadores?

Obrigado.

    
por user420667 01.05.2012 / 22:54

3 respostas

4

No Linux, os cpusets devem funcionar para isso.

    
por 01.05.2012 / 23:22
1

Isso é teoricamente possível. A maneira mais fácil de realizar algo próximo disso seria com uma plataforma de virtualização que permite atribuir CPU / núcleos específicos a uma VM específica. Em seguida, você pode executar apenas o processo desejado em uma determinada VM (claro, com o mínimo de sobrecarga do SO).

    
por 01.05.2012 / 23:01
1

A maneira mais fácil de fazer isso é definir a afinidade do processador para um determinado processo ou informar ao SO quais CPUs lógicas (núcleos) que o processo pode executar. Se você clicar com o botão direito do mouse em um processo no Gerenciador de Tarefas do Windows e selecionar Set Affinity... , encontrará uma janela parecida com esta:

Nossistemasbaseadosemlinux,vocêpode fazer a mesma coisa com o utilitário taskset ou definindo o sinalizador de máscara de CPU apropriado nos processos ' /proc entry.

Infelizmente, não há uma maneira fácil de remover todos os processos de um determinado processador ou definir automaticamente uma máscara específica em um processo quando ele é iniciado. Você precisará de um script para monitorar novos processos no sistema e definir a afinidade apropriada que você deseja.

    
por 02.05.2012 / 04:01