【问题标题】:cpuinfo to decide processor affinitycpuinfo 决定处理器亲和性
【发布时间】:2012-12-23 01:30:18
【问题描述】:

我尝试根据 /proc/cpuinfo 为我的应用程序确定处理器关联规则,我的 redhat Linux 显示

processor   : 0   to  47  , means server has 48 processor unit

physical id : 0   to  3   , means server has 4 cpu sockets 

cpu cores   : 6  , means  each socket has 6 cores 

siblings    :  12 , means each core has 2  hyperthreads 

总的来说,这台服务器有 4 * 6 * 2 = 48 个处理器单元,到目前为止我是正确的吗?

我喜欢做的是使用 sched_setaffinity 函数,首先我想知道的是 同一核心中的超线程,例如 ...

processor 0  : physical id:0,core id: 0  ...
processor 24 : physical id:0,core id: 0  ...

如果在我的应用程序中,我在 thread1 中使用 CPU_SET(0, &mask) CPU_SET(24, &mask) 在 thread2 中,那么我可以说 thread1 和 thread2 将共享相同的 L1 缓存, 当然也共享相同的 L2 缓存……我猜对了吗?

【问题讨论】:

    标签: c linux cpu-cache


    【解决方案1】:

    如果您的线程被调度在同一个核心(即不同的超线程)上,您只能保证完全共享缓存,在这种情况下您的方法是正确的。

    但请记住,将两个任务安排在同一个核心上并不一定会使它们运行得比将它们安排在不同的核心上更快。 L3 通常在所有内核之间共享,速度非常快。

    您需要检查缓存是如何在您的处理器之间共享的。大多数 Intel 处理器在 2-4 个内核之间共享 L2,在所有内核之间共享 L3,而大多数 AMD 型号仅共享 L3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多