A configuração de afinidade da CPU não está colando

4

Estou tentando definir a afinidade do mysql (o mais recente Percona Server) em um VPS 4vCpu virtualizado com o OpenVZ e executando o CentOS 6.x.

O comando que estou executando é taskset -pc 0-1 1026 . Eu também tentei 0,1 . A saída é:

pid 1026's current affinity list: 0-3
pid 1026's new affinity list: 0-3

Então, não parece estar 'colando'. Ele pode ser confirmado executando-se taskset novamente para encontrar as CPUs disponíveis para o processo. Isso é um problema com o meu tipo de virtualização, talvez?

Eu estou fazendo isso porque de vez em quando eu preciso que o mysql rode muito, e passar do 2.0-4.0 por mais de 2 horas me faz reiniciar com o meu provedor atual.

Existe um motivo claro para que isso não esteja funcionando ou a solução de problemas é mais necessária?

    
por Tim 04.01.2015 / 20:48

2 respostas

10

As máscaras de afinidade de CPU são ignoradas nos contêineres do OpenVZ . Você não poderá fazer isso funcionar.

In RHEL5-based kernels we had the notion of virtual cpus: tasks were scheduled on vcpus while the vcpus were somehow distributed among physical cpus. The sched_setaffinity syscall could be used to bind tasks to vcpus then.

This concept was cumbersome and often sub-optimal so in RHEL6 we decided to drop it: currently setting nr_cpus limit for a container is actually equivalent to setting cpulimit. The decision is justified by the fact that the latest Linux scheduler is smart enough to gather actively interacting tasks together so that there is no need to limit parallelism artificially.

As a result, cpu affinity support was dropped. Tasks can still use the sched_setaffinity syscall, but it will be ignored.

    
por 04.01.2015 / 20:51
1

Uma ferramenta como taskset provavelmente não funcionará corretamente em um contêiner. Você pode fazer isso do sistema host, mas não faz sentido de dentro de um contêiner.

Consulte: O Taskset não está funcionando corretamente no contêiner do OpenVZ

    
por 04.01.2015 / 20:52