One initial suggestion would be that your memory mapped settings are
probably not very near optimal.  If you have a look at the file sizes in
your graph data directory then the closer you can get to covering each db
files entire size the better.  I would assume that some of the files will be
bigger than others.... and in fact you will probably find a few of them are
very small, so you are wasting memory on them that you could assign to
another memory mapping.

So in one of mine I have:
5807428  neostore.nodestore.db
335536170  neostore.relationshipstore.db
398675470  neostore.propertystore.db
1208  neostore.propertystore.db.index
6906  neostore.propertystore.db.index.keys
1112428784  neostore.propertystore.db.strings
158  neostore.propertystore.db.arrays

In which case there is no point in me assigning much if any memory to:
neostore.propertystore.db.arrays.mapped_memory
neostore.propertystore.db.index.keys.mapped_memory
neostore.propertystore.db.index.mapped_memory

The other thing to take into account is that the
neostore.nodestore.db.mapped_memory and
neostore.relationshipstore.db.mapped_memory
settings have a lot more impact on traversal than the property story
settings.  The property store settings will help when you are reading
properties from nodes or relationships.

So if you can assign memory mapping settings for nodes and relationships to
fit it all in memory map that would be good, otherwise still best to assign
more to those, and definitely don't give the ones like arrays much memory
(unless you are using them a lot).

On Tue, Sep 27, 2011 at 12:52 PM, Rick <rick.devin...@gmail.com> wrote:

> Looking for help on how to tune traversals, this is a great product with
> the
> best API and I want to make sure Im getting the most from it.  I'm trying
> to
> understand if 62,500 traversals per second is the best I can do given the
> following scenario:
>
> - 15.6M nodes
> - 15.6M relationships
> - Data is structured as shown below so that the root has 250 children, each
> of its children have 250 children, and each of their children have 250
> children
> - If i get the entire list of children and grandchildren for a top node
> (max
> 3 levels deep), I get 62,500 nodes, and this takes about 800-1000ms
> - The server is a dual core quad 3.2ghz Xeon with 16gb ram
> - The neo4j.props settings are:
>
> neostore.nodestore.db.mapped_memory=1G
> neostore.relationshipstore.db.mapped_memory=1G
> neostore.propertystore.db.mapped_memory=1G
> neostore.propertystore.db.index.mapped_memory=1G
> neostore.propertystore.db.index.keys.mapped_memory=1G
> neostore.propertystore.db.strings.mapped_memory=1G
> neostore.propertystore.db.arrays.mapped_memory=1G
>
>
> - The code that does the traversal is
>
>                        Traverser trav = user.traverse( Order.BREADTH_FIRST,
> new StopEvaluator()
> { public boolean isStopNode(TraversalPosition pos) { return pos.depth() >=
> 3; }  },
>                                        new ReturnableEvaluator() { public
> boolean
> isReturnableNode(TraversalPosition pos) { return pos.depth()< 3; }
>                                           }, KNOWS, Direction.BOTH );
>
>                        for ( Node node : trav )
>                        {
>                                // Do something with node...
>                            i++;
>                        }
>
>
> Data example
>  root
>    node 0-0-0
>      node 0-0-1
>      node 0-0-2
>      ...
>   node 0-1-0
>      node 0-1-1
>      node 0-1-2
>      ...
>
>
>
> --
> View this message in context:
> http://neo4j-community-discussions.438527.n3.nabble.com/Traversal-performance-tp3371038p3371038.html
> Sent from the Neo4j Community Discussions mailing list archive at
> Nabble.com.
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to