为 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 核上执行。 -
现在我们可以通过执行以下命令为运行中的 Neo4j 进程分配特定的 CPU 核
$ taskset -cp <desired cpu(s) comma separated list> pid*
上面的例子将 Neo4j 进程限制到逻辑 ID 为 0 的 CPU 核。
参考
此页面有帮助吗?