atribuir tarefas em lote com um processador para cada

1

Eu tenho quatro arquivos bat e uma máquina de quatro núcleos. É possível atribuir cada execução a cada núcleo, ou seja, 1 trabalho para 1 núcleo. Existe alguma maneira de controlar isso com comandos?

    
por user741592 06.08.2013 / 11:52

2 respostas

2

No Windows 7 e superior, você pode usar START /AFFINITY para iniciar um processo e restringi-lo a um ou mais processadores específicos.

Para versões anteriores do Windows (XP e posteriores), você pode fazer o download do utilitário gratuito da Microsoft PsExec v2. 0 que não só permite atribuir um processo a processadores específicos, como também permite executar um processo em uma máquina remota.

Em seu comentário à resposta de Chopper3, você diz que tem uma fila de muitos trabalhos e deseja disparar um trabalho para cada processador e depois os trabalhos restantes aguardam até que um processador esteja livre. Em execução paralela de processos de shell no StackOverflow eu postei um arquivo de lote de amostra que faz praticamente o que você quer. Conforme escrito, ele configura uma fila de tarefas e limita o número de processos simultâneos. Ele pressupõe que o SO lidará com o balanceamento de carga entre os processadores disponíveis. Melhor ainda, o script é projetado para também suportar o PsExec, então você deve ser capaz de atribuir cada processo a uma máquina remota e / ou processador (es) específico (s). No entanto, eu não testei a funcionalidade PsExec.

    
por 06.12.2013 / 16:07
1

Se você usar o start /b whatever.bat , ele iniciará o arquivo de lote em segundo plano, se você fizer isso de uma só vez, o kernel agendará as tarefas de acordo - você não pode e não deseja atribuir um núcleo por arquivo em lote - você quer que eles sejam executados de forma assíncrona e que o SO gerencie a carga de trabalho.

    
por 06.08.2013 / 12:04