![有没有办法在一块芯片上专门运行一项作业?](https://linux22.com/image/1406396/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8%E4%B8%80%E5%9D%97%E8%8A%AF%E7%89%87%E4%B8%8A%E4%B8%93%E9%97%A8%E8%BF%90%E8%A1%8C%E4%B8%80%E9%A1%B9%E4%BD%9C%E4%B8%9A%EF%BC%9F.png)
我们在工作中使用了大量大型 (1TB+) NUMA 机器,在基准测试中遇到了很多噪音。我们注意到,当机器上没有其他程序运行时,应用程序的运行时间在每次运行之间都非常一致,但是当有其他作业(即使是看似无关紧要的小作业)进入运行状态时,也会严重影响应用程序的性能。我们怀疑这可能是由于片上内存总线争用造成的,我们想测试一下这个假设。我们的目标不是最大限度地提高应用程序的性能,而只是消除其中的可变性,以便我们能够准确衡量性能优化的影响。
有没有办法向操作系统指定一个作业应专门在单个处理器芯片上运行?在我们的配置中,我们有 8 个处理器芯片,每个芯片有 10 个处理器核心(操作系统有 80 个处理器),因此我们希望每个处理器芯片上只使用一个处理器核心。
我认为我们在这台机器上运行的是 SLES11u3,但也可以访问 RHEL5.8(和 SUSE10/RHEL4)。我们之前查看过任务集,但它只指定与给定处理器的亲和性,而不会影响其他作业的行为(不幸的是,至少有很多来自操作系统的小任务)。