系统要求

主内存

GDS 库在 Neo4j 实例中运行,因此受制于通用的 Neo4j 内存配置

memory usage
图 1. GDS 堆内存使用情况

堆大小

堆空间用于在图目录中存储图投影和算法状态。

将算法结果写回 Neo4j 时,堆空间也用于处理事务状态(参见 dbms.tx_state.memory_allocation)。对于纯粹的分析工作负载,一般建议将堆空间设置为可用主内存的约 90%。这可以通过 server.memory.heap.initial_sizeserver.memory.heap.max_size 来完成。

将算法结果写回 Neo4j 时,堆空间也用于处理事务状态(参见 dbms.tx_state.memory_allocation)。对于纯粹的分析工作负载,一般建议将堆空间设置为可用主内存的约 90%。这可以通过 dbms.memory.heap.initial_sizedbms.memory.heap.max_size 来完成。

为了更好地估算投影图和运行算法所需的堆空间,请考虑使用内存估算功能。该功能利用 Neo4j 计数存储中关于节点和关系数量的信息,估算所有相关数据结构的内存消耗。

页缓存

页缓存用于缓存 Neo4j 数据,有助于避免昂贵的磁盘访问。

对于包括原生投影在内的纯分析工作负载,建议减小配置的页缓存大小,以增加堆大小。

要配置页缓存大小,可以使用以下 Neo4j 配置属性 server.memory.pagecache.size

要配置页缓存大小,可以使用以下 Neo4j 配置属性 dbms.memory.pagecache.size

然而,在投影图时,设置最小页缓存大小仍然很重要

然而,如果需要将算法结果写回 Neo4j,写入性能高度依赖于存储碎片以及要写入的属性和关系数量。我们建议从大约 250MB * writeConcurrency 的页缓存大小开始,然后评估写入性能并相应调整。理想情况下,如果已使用内存估算功能找到合适的堆大小,则剩余内存可用于页缓存和操作系统。

如果 Neo4j 实例同时运行操作和分析工作负载,则不建议减小页缓存大小以支持堆大小。有关页缓存大小调整的通用信息,请参阅 Neo4j 内存配置

原生内存

原生内存由Apache Arrow 服务器用于存储接收到的数据。

如果启用了Apache Arrow 服务器,我们也建议保留一些原生内存。所需的内存量取决于客户端使用的批处理大小。通过 Arrow 接收的数据在转换并加载到堆内图之前,会暂时存储在直接内存中。

CPU

该库使用多个 CPU 核心进行图投影、算法计算和结果写入。配置工作负载以充分利用系统中可用的 CPU 核心对于实现最大性能非常重要。投影、计算和写入阶段使用的并发性是根据每次算法执行进行配置的,请参见通用配置参数

图数据科学库中大多数操作的默认并发数为 4。

可使用的最大并发数受制于库所使用的许可证

  • Neo4j 图数据科学库 - 社区版 (GDS CE)

    • 该库的最大并发数限制为 4。

  • Neo4j 图数据科学库 - 企业版 (GDS EE)

    • 该库的最大并发数不受限制。要注册许可证,请访问 neo4j.com

并发限制取决于您是否拥有 GDS EE 许可证,或者您是否正在使用 GDS CE。图数据科学库中的最大并发限制并非根据您的 Neo4j 数据库版本设置。
© . All rights reserved.