2016-02-08 7 views
5

Neo4jは主にメモリ上で動作するので、私のLinuxカーネルでhugepages(https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt)を有効にしてから、XX:+ UseLargePagesまたは+ XX:+ UseHugeTLBFSを(OpenJDK 8 )JVM?Neo4jとHugepages

もしそうなら、構成するいくつのhugeページを決定するためにどのような経験則を使うべきですか?

Neo4jパフォーマンスガイド(http://neo4j.com/docs/stable/performance-guide.html)にはこれは言及されておらず、Googleはこれを議論している人は誰も出席しませんでした(とにかく検索ページの最初の数ページ)。

私は新しいNeo4jインスタンス(2.3.2-community)から受け入れ可能なパフォーマンスを得ようとしています。少しでも役立ちます。私はJVMフラグを変更するためにデータベースを停止する前に、これが試してみる価値があるかどうかを知りたいです...他の誰かがすでにこれらの行に沿っていくつかの実験を行ったことを期待しています。

ありがとうございます!

答えて

5

Neo4jは独自のファイルページングを実行するため、OSに依存しないため、になるか、少なくとも傷つけないようにする必要があります。巨大なページは、大量のメモリを使用するとTLBキャッシュミスの可能性を低減します。ネオジは、多くのデータが格納されているときにしばしばやりたいことがあります。

しかし、Neo4jは可能な場合でもhugeページを直接使用しません。つまり、透明なの巨大なページと、JVMが提供する機能に依存する必要があります。透明な巨大なページは、より小さいページがマージされると、多かれ少なかれ短いストールを引き起こす可能性があります。

ステージング環境がある場合は、最初に変更を行い、その効果を測定することをお勧めします。

透明の巨大なページは、主に私はそれがハードページフォールトの待ち時間がはるかに高くなりますIOの単位の大きさを変えることにつながる可能思いmmapので、使用するプログラムのための問題です。私はこれについて完全には分かっていませんが、もし私が間違っていれば私を修正してください。

JVMが実際ので、このディレクトリは安全なポイント中のインスタンスために、危ないIOストールを避けるためにtmpfsに搭載されている(!!!)を確認してください/tmpでファイルを介して、遠隔測定とツーリングのためmmapを使用して行います。巨大なページを使用しなくても、常にこれを実行してください。

また、最新のLinuxカーネルと最新のJavaバージョンを使用していることを確認してください。

チューニングG1でいくつかのパーセンテージポイントを絞ることができるかもしれませんが、これは少し黒い芸術です。

+0

最近のUbuntu Linuxシステムでは、Transparent HugePagesがデフォルトで有効になっています。私は 'grep AnonHugePages/proc/meminfo'を実行すると束が割り当てられているのがわかります。私はNeo4jがそれらの束を既に使っているのを見ることができます 'grep AnonHugePages/proc/'cat data/neo4j-service.pid'/smaps | grep -v "0 kB"。それで、私のシステムでは少なくともこの時点ではそれ以上のことはないと思われます。本当に有益で有益な答えをありがとう! – rotten

関連する問題