numa相关内容

NUMA 机器上的共享库瓶颈

我正在使用 NUMA 机器(SGI UV 1000)同时运行大量数值模拟,每个模拟都是使用 4 个内核的 OpenMP 作业.但是,运行大约 100 个以上的这些作业会导致显着的性能下降.我们关于为什么会发生这种情况的理论是,软件所需的共享库只加载一次到机器的全局内存中,然后系统会遇到通信瓶颈,因为所有进程都在单个节点上访问内存. 这是一个旧软件,没有任何修改范围,并且静态 make 选项不 ..
发布时间:2022-01-04 22:46:18 服务器开发

测量 NUMA(非统一内存访问).没有可观察到的不对称性.为什么?

我曾尝试测量 NUMA 的非对称内存访问效果,但失败了. 实验 在 Intel Xeon X5570 @ 2.93GHz、2 个 CPU、8 个内核上执行. 在固定到核心 0 的线程上,我使用 numa_alloc_local 在核心 0 的 NUMA 节点上分配了一个大小为 10,000,000 字节的数组 x.然后我遍历数组 x 50 次并读取和写入数组中的每个字节.测量执行 ..
发布时间:2022-01-04 22:37:34 服务器开发

我可以从指针地址(在 Linux 上的 C 中)获取 NUMA 节点吗?

我已经设置了我的代码,以便在我的 NUMA 系统上本地加载和处理数据.我认为.也就是说,出于调试目的,我真的希望能够使用在特定函数内部访问的指针地址,这些地址已由许多其他函数设置,以直接识别内存指向的 NUMA 节点正在驻留,因此我可以检查所有内容是否都位于应位于的位置.这可能吗? 我在 msdn 上找到了这个请求 http://social.msdn.microsoft.com/Forum ..
发布时间:2021-12-21 10:25:27 服务器开发

Java 仅使用 2 个 CPU 中的 1 个和 NUMA (Neo4J)

我正在编写一个 Java 程序来创建一个非常大的 Neo4J 数据库.我使用 batchinserter 和 Executors.newFixedThreadPool 来加快速度.我的 Win2012R2 服务器在 NUMA 架构中有 2 个 cpu(2x6 核 + 2x6 超线程)和 256GB.我现在的问题是,我的进口商只使用 1 个 CPU(节点).是否可以仅通过一个 javaprocess ..
发布时间:2021-06-07 18:58:09 Java开发

在 NUMA 节点之间传播 OpenMP 线程

我有一个矩阵分布在四个 NUMA 节点本地内存中.现在我想打开 4 个线程,每个线程在一个 CPU 上对应一个不同的 NUMA 节点,以便每个线程可以尽可能快地访问它的矩阵部分.OpenMP 有“proc_bind(spread)"选项,但它把线程放在同一个 NUMA 节点上,但放在相距很远的 CPU 上. 如何强制线程绑定到不同的 NUMA 节点? 或者,如果这是不可能的:当我在所有 ..
发布时间:2021-06-04 20:27:02 C/C++开发

使用move_pages()移动大页面?

该问题的答案是: 内核3.10.0-1062.4.3.el7.x86_64 通过启动参数分配的非透明大页面,并且可能会映射到文件(例如,已挂载的大页面) x86_64 根据该内核源 ,move_pages()会调用do_pages_move()来移动页面,但我看不到它如何间接调用所以我的问题是: move_pages()可以移动大页面吗?如果是,传递页面地址数组时页面边界应该 ..
发布时间:2020-07-01 23:04:43 服务器开发

通过延迟/性能测量确定NUMA布局

最近,我一直在观察无法解释的内存密集型工作负载中的性能影响.试图深入了解这一点,我开始运行一些微基准测试来确定常见的性能参数,例如缓存行大小和L1/L2/L3缓存大小(我已经知道它们了,我只是想看看我的测量值是否反映了实际值). 对于高速缓存行测试,我的代码大致如下(Linux C,但是概念类似于Windows等): char *array = malloc (ARRAY_SIZE); ..
发布时间:2020-07-01 23:04:40 其他开发

哪种架构可称为非均匀内存访问(NUMA)?

根据 Wiki :非统一内存访问(NUMA)是计算机内存多处理设计,其中内存访问时间取决于相对于处理器的内存位置. 但是尚不清楚它是否与包括高速缓存在内的任何内存有关,还是仅与主内存有关. 例如至强融核处理器具有下一个体系结构:所有内核对主存储器(GDDR)的存储器访问均相同.同时,对于不同的内核,对L2缓存的内存访问也有所不同,因为先检查本机L2缓存,然后再通过环检查其他内核的L2缓 ..
发布时间:2020-07-01 23:04:37 其他开发

为什么我的.Net应用程序仅使用单个NUMA节点?

我有一台服务器,其中有2个NUMA节点,每个节点有16个CPU.我可以看到任务管理器中的所有32个CPU,前2行中的前16个(NUMA节点1),后2行中的下16个(NUMA节点2). 在我的应用程序中,我使用Thread.Start()启动64个线程.当我运行该应用程序时,它占用大量CPU,只有前16个CPU处于繁忙状态,其他16个CPU处于空闲状态. 为什么?我经常使用Interlo ..
发布时间:2020-05-13 20:56:35 C#/.NET

多核CPU:避免令人失望的可扩展性的编程技术

我们刚刚购买了一台32核Opteron机器,但获得的加速却有点令人失望:超过24个线程后,我们根本看不到加速(实际上总体上变慢了),经过大约6个线程后,它显着降低了速度. -线性. 我们的应用程序是非常线程友好的:我们的工作分解为大约170,000个小任务,每个小任务可以分别执行,每个任务需要5到10秒钟.它们都从大小约为4Gb的同一内存映射文件中读取.他们偶尔会对其进行写入,但每次写入可能 ..
发布时间:2020-05-13 02:26:07 其他开发

在NUMA体系结构中按线程移动内存页面

我一个回答两个问题: (i)假设线程X在CPU Y上运行.是否可以使用syscalls migration_pages-甚至更好的move_pages(或其libnuma包装器)将与X关联的页面移动到连接Y的节点上? 之所以提出这个问题,是因为两个系统调用的第一个参数都是PID(并且我需要使用逐线程方法进行研究) (ii)对于(i)的肯定回答,我如何获得某个线程使用的所有页面?我 ..
发布时间:2020-05-08 22:27:05 其他开发

如何获得指针指向的内存大小?

我目前正在NUMA机器上工作.我正在使用numa_free释放分配的内存.但是,与free不同,numa_free需要知道要释放多少字节.有没有办法知道一个指针所指向的字节数却没有找到它? 解决方案 无法使用基础API获取内存大小.在分配某处时,您必须记住大小.例如,您可以编写自己的分配器,该分配器分配4个额外的字节,存储在缓冲区的前4个字节中,在释放期间,您可以从中读取缓冲区的大小: ..
发布时间:2020-05-08 19:38:32 其他开发

NUMA如何在虚拟内存中表示?

有许多资源从硬件的角度描述了NUMA的体系结构,并且对性能的影响尚未找到有关如何确定有关NUMA的虚拟页面和物理框架之间的映射的信息. 更具体地说,在现代Linux上运行的应用程序仍然看到单个连续的虚拟地址空间. 应用程序如何分辨地址空间的哪些部分映射到本地内存,哪些部分映射到另一个NUMA节点的内存? 如果答案是应用程序无法告知,操作系统如何决定何时将虚拟页映射到另一个NUMA ..
发布时间:2020-05-08 19:36:58 服务器开发

如何在支持用户模式NUMA的内存分配器中实现交错的页面分配?

我正在为Linux构建一个用户模式的NUMA感知内存分配器.分配器在初始化期间会占用大量内存,每个NUMA节点一个内存.此后,通过从大块池中提供尽可能多的内存页面来满足用户请求的内存页面. 如果用户要求n页,则可以很容易地从特定块中分配n页.但是现在我想实现一种交错分配策略,即用户从每个块中获得一页,循环最多n页.这带来了这些页面的虚拟地址不再连续的问题. Q1:有没有办法返回虚拟可寻 ..
发布时间:2020-05-05 12:38:13 服务器开发

NUMA和SMP上的Linux Scheduler

我想知道是否在每个处理器上运行了schedule()函数的副本,或者只是在每个处理器上运行了一个schedule(). 如果每个处理器/内核上都运行了schedule()的副本,那么如何将进程分配到特定的CPU/cpu运行队列.是负载均衡器的工作吗?是否只有一个负载均衡器在所有CPU上运行,或者使用标志/通信方法以分布式方式完成? ps-我知道调度类的工作原理,但是我很难弄清各个运行队 ..
发布时间:2020-05-02 03:42:24 其他开发

gcc,icc或Microsoft的C/C ++编译器是否支持NUMA或对NUMA有所了解?

如果我的多处理器主板具有缓存一致性 "北桥"每个处理器具有单独的RAM,是否有任何编译器都知道如何在不同的内存系统之间自动分配数据,从而使进程在本地工作线程主要是从与线程在其上运行的处理器相关联的RAM中检索数据的? 我有一个设置,其中1 GB连接到处理器0,1 GB连接到处理器1,等等.最多4个处理器.在相干内存空间中,第一个处理器上RAM的物理内存是地址0到1GB, 1.对于第二个处理器 ..
发布时间:2020-05-01 10:54:38 服务器开发