gpt4 book ai didi

c++ - Windows 7 中的 NUMA 内存区域分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:18 25 4
gpt4 key购买 nike

我们的应用是:

  1. 硬件配置是运行 Windows 7/64 位的双 Xeon 服务器。每个 Xeon 在 [NUMA][1] 配置中都有自己的 12gb RAM,并通过桥将两个内存区域连接在一起。
  2. 所有软件都是使用 VS2008 在 c++ 中编写的,并编译为 64 位应用程序。
  3. Generation 应用程序会创建一个大型共享内存 (4-6gb) 区域,该区域仅供设置为在第一个 Xeon 处理器上运行的处理器关联的进程访问。
  4. 接收应用会创建一个大型共享内存区域 (2-4gb),该区域主要供设置有处理器关联的进程使用,以便在第二个 Xeon 处理器上运行。然而,当 Generation App 完成构建一组数据(32mb 到 128mb)时,它会将这些信息传输到运行在该 Xeon 上的共享内存区域。
  5. 我们使用 Boost Interprocess 库来管理我们的共享内存区域。

我的问题是,当创建它的每个进程共享内存区域时,Windows 是否会在创建它的同一个 Xeon 芯片上分配该内存?或者我应该使用 Numa 内存函数之一将内存显式分配给特定的 Xeon 芯片吗?


编辑 - 帮助阐明 NUMA 是什么,来自维基百科 -

Non-Uniform Memory Access or Non-Uniform Memory Architecture (NUMA) is a computer memory design used in multiprocessors, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.between processors.

链接是http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access更多细节。对我来说,随着多处理变得越来越普遍,这是我们所有人都必须了解更多的事情之一。

[1]: http://msdn.microsoft.com/en-us/library/aa363804%28VS.85%29.aspxbetween处理器。

最佳答案

Windows 将为请求线程分配本地内存;但是,local 不是 Microsoft 指定的。 Local 可以是以下三个选项之一:线程的理想处理器、线程的处理器关联掩码或线程的当前处理器(我忘了当前的实现是什么)。

本质上,答案是肯定的;然而,一个常见的陷阱是从未关联的“ Controller 线程”分配所有内存,因此内存靠近 Controller 而不是具有特定关联的线程。

关于c++ - Windows 7 中的 NUMA 内存区域分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com