Neo4j and Hugepages



由于Neo4j主要在内存中工作,我想知道在我的Linux内核中启用hugepages(https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt(是否有利,然后在(OpenJDK 8(JVM中启用XX:+UseLargePages或-XX:+UseHugeTLBFS?

如果是这样,我应该使用什么经验法则来决定配置多少个大页面?

Neo4j性能指南(http://neo4j.com/docs/stable/performance-guide.html(没有提到这一点,谷歌也没有出现其他人讨论它(无论如何在前几个搜索页面中(,所以我想我会问。

我正在努力从我的新 Neo4j 实例(2.3.2 社区(中获得可接受的性能。 任何一点点都会有所帮助。 我想知道这是否值得在我关闭数据库以更改 JVM 标志之前尝试...... 我希望其他人已经按照这些思路做了一些实验。

由于 Neo4j 执行自己的文件分页并且不依赖操作系统来执行此操作,因此它应该是有利的或至少不会受到伤害。当您使用大量内存时,大页面将降低TLB缓存未命中的可能性,当其中存储大量数据时,Neo4j经常希望这样做。

但是,Neo4j并不直接使用大页面,即使它可以并且这将是一个很好的补充。这意味着您必须依赖透明的大页面和JVM提供的任何功能。当合并较小的页面时,透明的大页面可能会导致或多或少的短停顿。

如果你有一个有代表性的暂存环境,那么我建议你先在那里进行更改,并衡量它们的效果。

对于使用mmap的程序来说,透明的大页面主要是一个问题,因为我认为它会导致改变IO单位的大小,这将使硬页面错误延迟更高。不过,我对此并不完全确定,所以如果我错了,请纠正我。

JVM实际上确实使用mmap进行遥测和工具,通过/tmp中的文件,因此请确保此目录挂载在tmpfs上,以避免粗糙的IO停滞,例如在安全点(!!(期间。即使您不使用大页面,也始终这样做。

还要确保您使用的是最新的 Linux 内核和最新的 Java 版本。

你也许可以通过调整G1从中挤出一些百分比点,但这有点黑艺术。

最新更新