为 Neo4j 进程分配或限制 CPU 内核
操作系统使用称为“处理器亲和性”或“CPU 固定”的功能在多核处理器上运行性能关键型应用程序。此功能将正在运行的进程“绑定”到特定 CPU 内核,例如,这有助于减少 CPU 缓存未命中。此外,当多个进程通过共享内存进行通信时,在同一 NUMA 域中的内核上调度这两个进程可能会加快其性能。
在初始化时,Neo4j 将为所有可用的 cpu 内核创建亲和性掩码(附件列表),即它将附加到所有可用的内核。有时可能需要在初始化时或运行时限制或指定这些内核以用于 Neo4j 进程。以下步骤是在 Linux Redhat 6.1 和 7.6 版本上执行的。类似的步骤可能对其他 Linux 版本有效。
-
执行**lscpu**命令,该命令产生的输出类似于以下内容
除了其他信息外,我们看到了当前联机的 CPU 的逗号分隔列表,在本例中为 0、1。请注意,这可能是二进制、十进制或十六进制数。在本例中,它是十进制。
-
获取 Neo4j 进程 ID。现在可以通过执行以下命令查看此进程的 cpu 内核亲和性
$ taskset -p pid*
这输出一个十进制数,可以将其转换为二进制数。或者,可以通过执行
taskset -cp pid
直接获取二进制输出。以上显示亲和性掩码为**3**,其二进制形式为**1、1**,即 CPU 内核 0 和 1。这也表明,默认情况下,Neo4j 进程默认在所有可用的 CPU 内核上执行。 -
现在,我们可以通过执行以下命令将某些 cpu 内核分配给正在运行的 Neo4j 进程
$ taskset -cp <desired cpu(s) comma separated list> pid*
以上示例将 Neo4j 进程限制到逻辑 ID 为**0**的 CPU 内核。
参考
此页面是否有帮助?