系统需求

主内存

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

要配置 PageCache 大小,可以使用以下 Neo4j 配置属性:dbms.memory.pagecache.size

然而,在投影图时,设置最小 PageCache 大小仍然很重要。

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

如果 Neo4j 实例同时运行操作和分析工作负载,则不建议为了堆大小而减少 PageCache 大小。有关 PageCache 大小调整的常规信息,请参阅 Neo4j 内存配置

本机内存

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

如果您启用了 Apache Arrow 服务器,我们还建议预留一些本机内存。所需的内存量取决于客户端使用的批次大小。通过 Arrow 接收的数据将在转换为堆内图之前临时存储在直接内存中。

CPU

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

Graph Data Science 库中大多数操作使用的默认并发性为 4。

可使用的最大并发性取决于库的使用许可证。

  • Neo4j Graph Data Science 库 - 社区版 (GDS CE)

    • 库中的最大并发性限制为 4。

  • Neo4j Graph Data Science 库 - 企业版 (GDS EE)

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

并发性限制根据您是否拥有 GDS EE 许可证或是否使用 GDS CE 确定。图数据科学库中的最大并发性限制并非根据您的 Neo4j 数据库版本设置。