欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

java numa_Java只使用2个CPU中的1个和NUMA(Neo4J)

发布时间:2023/12/10 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java numa_Java只使用2个CPU中的1个和NUMA(Neo4J) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我正在研究一个java程序来创建一个非常大的Neo4J数据库.我使用batchinserter和Executors.newFixedThreadPool来加快速度.我的Win2012R2服务器有2个cpu(2×6核心2×6超线程)和256GB NUMA架构.我的问题是,我的导入器只使用1个CPU(节点).

是否有可能只使用一个javaprocess的NUMA节点?

Java选项:-XX:UseNUMA -Xmx64g -Xms64g

解决方法:

目前尚不清楚每个节点分配了多少内存 – 是256GB还是128GB?无论哪种方式,据我所知,设置最大堆大小小于分配给节点的内存量通常意味着应用程序保持连接到单个节点.据我所知,在Windows,Solaris和Linux下都是如此.

即使您将JVM最大堆大小分配给节点分配的内存大小,如果堆不超过该大小,该进程也不会溢出,因为JVM对象分配器将始终尝试在其中创建新对象.与创建线程相同的内存池 – 包括新的线程对象.

NUMA体系结构的主要设计目标是使不同的进程能够在不同的CPU上运行,每个CPU都具有本地化的内存访问权限,而不是让所有CPU都争用相同的全局共享内存.除非您可以安排特定线程始终使用与特定节点关联的本地内存(线程关联),否则在多个节点上运行相同的进程并不一定有效.否则,远程内存访问会降低您的速度.

我怀疑要在您的示例中使用多个节点,您需要将不同的任务分配给不同的节点,或者跨多个节点并行执行相同的任务.在后一种情况下,您需要确保每个节点在本地内存中都有相同数据的副本.有些库可用于管理Java代码中的线程关联.

标签:java,windows,neo4j,numa

来源: https://codeday.me/bug/20190702/1355122.html

总结

以上是生活随笔为你收集整理的java numa_Java只使用2个CPU中的1个和NUMA(Neo4J)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。