Defina a afinidade de um processo a partir de um script de shell à medida que ele é iniciado

3

Eu tenho um script (.sh) onde eu inicio aplicativos como este

#!/bin/sh
./application1 configuration1.cfg  param1 param2 param3 &

sleep 2

./application2 configuration2.cfg  param1 param2 param3 &

sleep 2

etc

Existe uma maneira de atribuir a afinidade da CPU ao iniciar o processo?

Eu realmente não quero fazer isso depois do fato. Eu poderia fazer isso programaticamente a partir do C ++, mas parece que o shell é a melhor maneira de fazer isso.

Em seguida, uma vez iniciado, como posso verificar se ele está preso a essa CPU / core?

    
por Ivan 30.03.2015 / 22:38

1 resposta

3

Existe um utilitário, taskset , parte do util-linux, apenas para este propósito. Por exemplo:

taskset -c 0-15 script

executará script e o restringirá para usar apenas CPUs com IDs de 0 a 15.

Para verificar se os seus scripts estão realmente restritos para serem executados no CPUs, você pode olhar para o arquivo /proc/<pid>/status : ele terá entradas nomeadas Cpus_allowed (um bitmap; o bit menos significativo é definido se a CPU 0 for permitida) e Cpus_allowed_list (a lista de IDs de CPU).

    
por 30.03.2015 / 22:46