Eu gostaria de fazer isso para poder testar com precisão meus processos e apenas para poder 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 podemos compartimentar a memória, por que não podemos ter esse controle sobre os processadores?
Obrigado.
Responder1
No Linux,cpusetsdeve funcionar para isso.
Responder2
Isto é, em teoria, possível. A maneira mais fácil de conseguir algo próximo disso seria com uma plataforma de virtualização que permite atribuir CPU/núcleos específicos a uma VM específica. Então você poderia executar apenas o processo desejado em uma determinada VM (é claro, com o mínimo de sobrecarga do sistema operacional).
Responder3
A maneira mais fácil de fazer isso é definir a afinidade do processador para um determinado processo ou informar ao sistema operacional em quais CPUs lógicas (núcleos) esse processo pode ser executado. Se você clicar com o botão direito em um processo no Gerenciador de tarefas do Windows e selecionar Set Affinity...
, você encontrará uma janela parecida com esta:
Em sistemas baseados em Linux, você podefaça a mesma coisa com o taskset
utilitárioou definindo o sinalizador de máscara de CPU apropriado na /proc
entrada dos processos.
Infelizmente, não há uma maneira fácil de remover todos os processos de um determinado processador ou de definir automaticamente uma máscara específica em um processo quando ele é inicializado - você precisará de um script para monitorar novos processos no sistema e definir a afinidade apropriada que você deseja.