Define a afinidade da CPU para o programa específico?

2

Como posso definir a afinidade da CPU para o programa específico (digamos, gzip) para sempre ser executada em núcleos ou núcleos específicos (núcleo 1, por exemplo)?

Eu li sobre o taskset, mas ele pode ser usado antes que o programa seja realmente usado e crie um processo?

    
por Armen 05.08.2015 / 01:12

1 resposta

1

Você não pode definir a afinidade de todas as invocações de um executável. A afinidade é gerenciada pelo kernel e herdada do processo pai para o processo filho, não há mecanismo que altere a afinidade de um processo quando um executável é executado.

Se você quiser que todas as invocações de gzip sejam executadas na CPU 1, coloque um script de wrapper chamado gzip ahead do real no PATH , por exemplo, ~/bin/gzip :

#!/bin/sh
exec taskset 1 /bin/gzip "$@"

Mas isso parece-me completamente inútil. Definir explicitamente a afinidade de um processo geralmente torna as coisas mais lentas. Às vezes, pode ser útil restringir uma tarefa intensiva da CPU a determinados processadores e deixar o sistema mais reativo, embora nice geralmente faça um trabalho melhor em geral. Mas fazer isso indiscriminadamente para todas as invocações de um executável soa como um problema XY .

    
por 06.08.2015 / 02:56