CPU亲和力设置不坚持

我试图设置一个4vCpu VPS与OpenVZ虚拟化并运行CentOS 6.x的MySQL(最新的Percona服务器)的亲和力。

我正在运行的命令是taskset -pc 0-1 1026 。 我也尝试了0,1 。 输出是:

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

所以,这似乎不是“坚持”。 可以通过再次运行taskset来确认进程可用的CPU。 这可能是我的虚拟化types的问题吗?

我这样做是因为我偶尔需要mysql运行很艰难,超过2个小时超过2.0-4.0让我重新启动与我目前的供应商。

有没有明显的原因,为什么这不工作,或更多的故障排除要求?

OpenVZ容器中忽略了CPU亲和性掩码 。 你将无法得到这个“工作”。

在基于RHEL5的内核中,我们有了虚拟CPU的概念:在vcpus上调度任务,而vcpus以某种方式分布在物理cpus中。 sched_setaffinity系统调用可用于将任务绑定到vcpus。

这个概念很麻烦,而且往往是次优的,所以在RHEL6中,我们决定放弃它:目前设置容器的nr_cpus限制实际上相当于设置cpulimit。 最新的Linux调度程序足够聪明,可以将主动收集的任务集合在一起,因此不需要人为地限制并行性,这一决定是有道理的。

结果,cpu亲缘关系支持被删除。 任务仍然可以使用sched_setaffinity系统调用,但会被忽略。

taskset这样的工具可能无法在容器中正常工作。 您可以从主机系统执行此操作,但是在容器内部没有任何意义。

请参阅: 在OpenVZ容器中,任务集无法正常工作