fornece mais de um processador com o conjunto de tarefas

2

Estou usando o taskset para atribuir núcleos de CPU 4-7 a um processo java que normalmente usa ~ 200-400% de CPU. Os núcleos 4-7 foram isolados na inicialização, portanto, apenas o processo Java deve ser executado neles.

Eventualmente o conjunto de tarefas parece bloquear o processo java gerado para um dos quatro núcleos, em vez de atribuí-lo a todos os núcleos.

O comando que eu uso parece:

taskset -c 4,5,6,7 java [...] -jar [...]

Usar taskset -c 4,5,6,7 stress -c 4 se comporta da mesma forma e usa apenas um núcleo.

Como posso atribuir todos os quatro núcleos ao processo java?

    
por Flatron 06.10.2014 / 15:31

1 resposta

3

Eu encontrei a resposta por conta própria: é simplesmente adicionar a opção -a que faz como mencionado na ajuda ( taskset -h )

  

"opera em todas as tarefas (threads) para um determinado pid

Então o comando de trabalho é

taskset -cpa 4-7 $(pgrep -n java) 

pgrep é usado aqui para obter o PID do último processo java iniciado.

Espero que essa resposta ajude alguém que tente atribuir vários núcleos de CPU a um processo e a todos os seus threads sem o uso de sistemas de contêineres complexos ou VMs.

    
por Flatron 13.10.2014 / 23:19