linux – NUMA机器共享库瓶颈

前端之家收集整理的这篇文章主要介绍了linux – NUMA机器共享库瓶颈前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用NUMA机器(SGI UV 1000)同时运行大量数值模拟,每个都是使用4个内核的OpenMP作业.然而,运行超过约100个这些工作会导致重大的性能下降.我们关于为什么发生这种情况的理论是软件所需的共享库只能加载到机器的全局内存中,并且随着所有进程都访问单个节点上的内存,系统正在经历通信瓶颈.

这是一个旧的软件,限于没有修改的范围,静态make选项不会静态链接所有需要的库.最方便的解决方案,从我可以看到,将以某种方式强制系统加载每个进程或节点上所需的共享库的新副本(我正在运行3个进程),但是我没有能够找出如何做到这一点.任何人都可以告诉我如何做到这一点,还有其他有关如何解决这个问题的其他建议?

解决方法

the shared libraries required by the software are loaded only once into the machine’s global memory,

正如我所知,这是Linux的当前行为.共享库仅加载到一组物理内存,仅在单个节点上.

and the system is then experiencing a communication bottleneck as all processes are accessing memory on a single node.

正如在评论中所说,库中的指令应该被缓存在每个处理器中,所以只有当存储库中的活动代码从缓存中擦除(例如有很多不同的代码工作)时才会有瓶颈.

您应该通过使用硬件性能计数器(来自缓存的缺失,节点间NUMA内存访问计数)来验证您的理论.

在NUMA上存储一些数据的机制,在NUMA上称为“复制”.内核,可执行文件或其共享库的代码称为文本.所以,你想要的是“共享库的文本复制”.我认为文本复制对于内核代码来说更容易.

我从2003年可以找到一些实验性的补丁来进行这样的文本复制,例如
http://lwn.net/Articles/63512/([RFC] [PATCH] NUMA用户页面复制)由Dave Hansen,IBM.这个补丁似乎被拒绝.

这种技术的更现代(2007)变体是由SUSE的Nick Piggin复制pagecache:http://lwn.net/Articles/223056/(mm:replicated pagecache).还有关于他的方法的演示文稿:http://ondioline.org/~paul/pagecachereplication.pdf.这将是有效的,因为所有的文件都存储在pagecache,可执行文件和共享库中.但即使是这个补丁,我在当前的内核中找不到它.

在SGI上有更多的复制需求(他们有更多的NUMA机器,典型的内核开发人员),所以可以添加一些补丁.有一个SGI的NUMA应用程序调整手册:http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/linux/bks/SGI_Developer/books/LX_86_AppTune/sgi_html/ch05.html,它在“使用dplace命令”一节中提到了dplace实用程序.它具有文本复制选项:

-r: Specifies that text should be replicated on the node or nodes where the application is running. In some cases,replication will improve performance by reducing the need to make offnode memory references for code. The replication option applies to all programs placed by the dplace command. See the dplace(5) man page for additional information on text replication. The replication options are a string of one or more of the following characters:

l Replicate library text

b Replicate binary (a.out) text

t Thread round-robin option

男人(1):http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=man&fname=/usr/share/catman/man1/dplace.1.html

男人(5):http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=man&fname=/usr/share/catman/man5/dplace.5.html

原文链接:https://www.f2er.com/linux/400876.html

猜你在找的Linux相关文章