É possível definir a afinidade de cpu para um usuário em particular?

4

Quero dizer, é de alguma forma que podemos configurar a afinidade da CPU para um usuário em particular, para todo o processo em execução no momento ou para o processo que ele iniciará mais tarde?

    
por Amit Singh 30.06.2012 / 16:14

2 respostas

4

Sim, isso é possível.

Eu executaria os processos do usuário em um cgroup composto pelo (s) núcleo (s) da CPU que você deseja usar. Dependendo da sua versão do RHEL (5 versus 6), você pode usar os escudos da CPU via cpusets / cset no EL5 ou tente a abordagem cgroup documentada em EL6 O último exemplo usa um arquivo /etc/cgrules.conf que define regras para recursos cgroup (por exemplo, todos os processos pertencentes a Jerome serão executados em um cgroup especificado). O primeiro permite que você execute processos diretamente em um escudo de CPU.

Para o seu exemplo usando cset , eu simplesmente executaria um shell bash para o usuário no escudo de CPU correto. Todos os seus processos infantis estarão contidos. Veja aqui .

    
por 30.06.2012 / 17:25
1

O seguinte pequeno bash-script fará isso:

u=username # do not set this to root!
c=logical processor number you want to bind to
for p in $(pgrep -u $u)
  do
    taskset -cp $c $p
done

Filhos dos processos ligados permanecerão vinculados a esse conjunto de CPUs.

    
por 17.07.2012 / 22:36