Re: [Neo4j] [Neo] memory mapping

2010-05-27 Thread Lorenzo Livi
Hi


 Is the machine busy with other tasks also? Disk read access should not
 be a problem since you have so much RAM. You can test the read speed
 by doing a sequential read on for example the relationship store file:

 $ dd if=neostore.relationshipstore.db of=/dev/null bs=10M

 With 16GB RAM all and the memory mapped config you have all the store
 files should be cached by the OS and reads will be very fast.

 If you are storing a lot of the traversal results in memory this could
 be a GC issue. Could you run with -verbose:gc and check if there are
 any long GC pause times.


The problem is that now I can't use more then 2Gb (heap + direct
access) for each run ... It's not enough.
I'll take a look at the gc behaviour.


 Yes this warning can safely be ignored. The problem is that if the
 assigned memory does not chunk up in perfect fit for the store file
 the last memory mapped window placed at the end of the file will be
 larger than the actual file. When running in read only mode the files
 will be opened in read only mode and then the file actually needs to
 be expanded some but that is not possible in read only mode. To avoid
 it you could write exact number of bytes of each store file for memory
 mapped configuration.

 Regards,
 Johan


Ok, thank you very much.

Best regards,
Lorenzo
___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-24 Thread Johan Svensson
If a run is that long when performing traversals -server flag should
be faster.

Could you explain a bit more what type of traversal you are performing
and what the graph looks like? Judging by the size of the store files
you should be able to traverse the full graph many times in a single
day on that machine.

-Johan

On Fri, May 21, 2010 at 1:15 PM, Lorenzo Livi lorenz.l...@gmail.com wrote:
 No, I use only one jvm instance for each run.
 My run usually last something like 1 day or 15 days.

 On Fri, May 21, 2010 at 1:10 PM, Johan Svensson jo...@neotechnology.com 
 wrote:
 Yes, -server is usually slower the first few runs but once some
 information has been gathered and optimizations put in place it will
 be faster.

 Are you starting a new JVM for each traversal?
___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-24 Thread Lorenzo Livi
Hi,
I'm using many serial custom DFS (not the neo4j built-in), limited in
depth, for each run. Then all the successive computations are in RAM
(eigenvector determination etc...). The big bottleneck is obviously
the access to the disk. The nodes of the graph have a high out-degree,
then the typical DFS in impegnative ...

Just a question: I'm using the read-only access mode to the graph-db.
When I try to map everything (just like u suggested) in the properties
serction I get many warning (cannot memory map ...). If i use lower
memory for this section (the half) everything works fine (without
warning). Why? It should always give me this warning ...

Best regards,
Lorenzo


On Mon, May 24, 2010 at 11:41 AM, Johan Svensson
jo...@neotechnology.com wrote:
 If a run is that long when performing traversals -server flag should
 be faster.

 Could you explain a bit more what type of traversal you are performing
 and what the graph looks like? Judging by the size of the store files
 you should be able to traverse the full graph many times in a single
 day on that machine.

 -Johan

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


[Neo] memory mapping

2010-05-21 Thread Lorenzo Livi
Hi all,

I would like to know if the configuration I use is good. I must
achieve high speed in traversal.
I use a 64 bit 8 core Intel Xeon with 16G of ram ...


DB size:

82M 2010-05-03 21:21 neostore.nodestore.db
9 2010-05-03 21:21 neostore.nodestore.db.id
1.7G 2010-05-03 21:21 neostore.propertystore.db
158 2010-05-03 21:21 neostore.propertystore.db.arrays
9 2010-05-03 21:21 neostore.propertystore.db.arrays.id
9 2010-05-03 21:21 neostore.propertystore.db.id
38 2010-05-03 21:21 neostore.propertystore.db.index
9 2010-05-03 21:21 neostore.propertystore.db.index.id
155 2010-05-03 21:21 neostore.propertystore.db.index.keys
9 2010-05-03 21:21 neostore.propertystore.db.index.keys.id
1.2G 2010-05-03 21:21 neostore.propertystore.db.strings
9 2010-05-03 21:21 neostore.propertystore.db.strings.id
1.9G 2010-05-03 21:21 neostore.relationshipstore.db
9 2010-05-03 21:21 neostore.relationshipstore.db.id
58 2010-05-03 21:21 neostore.relationshiptypestore.db
9 2010-05-03 21:21 neostore.relationshiptypestore.db.id
198 2010-05-03 21:21 neostore.relationshiptypestore.db.names
9 2010-05-03 21:21 neostore.relationshiptypestore.db.names.id


and this is my custom configuration

neostore.nodestore.db.mapped_memory=1G
neostore.relationshipstore.db.mapped_memory=2G
neostore.propertystore.db.mapped_memory=500M
neostore.propertystore.db.strings.mapped_memory=1G
neostore.propertystore.db.arrays.mapped_memory=0M


Best regards,
Lorenzo
___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-21 Thread Lorenzo Livi
Hi,
Thank you very much. I'm running on Linux 64 bit with this jvm

java version 1.6.0_03
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)


I've noticed that when using -d64 -server as arguments my run will go
slower ... Is it possible?

Best regards,
Lorenzo


On Fri, May 21, 2010 at 12:54 PM, Johan Svensson
jo...@neotechnology.com wrote:
 Hi,

 If your traversals access properties I would suggest full memory mapping:

 neostore.nodestore.db.mapped_memory=1G
 neostore.relationshipstore.db.mapped_memory=2G
 neostore.propertystore.db.mapped_memory=1700M
 neostore.propertystore.db.strings.mapped_memory=1200M
 neostore.propertystore.db.arrays.mapped_memory=0M

 If you are running Windows OS try experiment with:

 use_memory_mapped_buffers=true

 Make sure you are running 1.6 JVM and I suggest a heap size between
 3G-8G depending on how much concurrent traversal load you have. Run in
 server mode and CMS collector:

 java -d64 -server -XX:+UseConcMarkSweepGC -Xmx4000M

 Regards,
 Johan

___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-21 Thread Lorenzo Livi
... and I don't have concurrency ... I'm working on a lab environment ...

Best regard,
Lorenzo



 On Fri, May 21, 2010 at 12:54 PM, Johan Svensson
 jo...@neotechnology.com wrote:
 Hi,

 If your traversals access properties I would suggest full memory mapping:

 neostore.nodestore.db.mapped_memory=1G
 neostore.relationshipstore.db.mapped_memory=2G
 neostore.propertystore.db.mapped_memory=1700M
 neostore.propertystore.db.strings.mapped_memory=1200M
 neostore.propertystore.db.arrays.mapped_memory=0M

 If you are running Windows OS try experiment with:

 use_memory_mapped_buffers=true

 Make sure you are running 1.6 JVM and I suggest a heap size between
 3G-8G depending on how much concurrent traversal load you have. Run in
 server mode and CMS collector:

 java -d64 -server -XX:+UseConcMarkSweepGC -Xmx4000M

 Regards,
 Johan


___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-21 Thread Johan Svensson
Yes, -server is usually slower the first few runs but once some
information has been gathered and optimizations put in place it will
be faster.

Are you starting a new JVM for each traversal?

On Fri, May 21, 2010 at 1:06 PM, Lorenzo Livi lorenz.l...@gmail.com wrote:
 ... and I don't have concurrency ... I'm working on a lab environment ...

 Best regard,
 Lorenzo



 On Fri, May 21, 2010 at 12:54 PM, Johan Svensson
 jo...@neotechnology.com wrote:
 Hi,

 If your traversals access properties I would suggest full memory mapping:

 neostore.nodestore.db.mapped_memory=1G
 neostore.relationshipstore.db.mapped_memory=2G
 neostore.propertystore.db.mapped_memory=1700M
 neostore.propertystore.db.strings.mapped_memory=1200M
 neostore.propertystore.db.arrays.mapped_memory=0M

 If you are running Windows OS try experiment with:

 use_memory_mapped_buffers=true

 Make sure you are running 1.6 JVM and I suggest a heap size between
 3G-8G depending on how much concurrent traversal load you have. Run in
 server mode and CMS collector:

 java -d64 -server -XX:+UseConcMarkSweepGC -Xmx4000M

 Regards,
 Johan
___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo] memory mapping

2010-05-21 Thread Lorenzo Livi
No, I use only one jvm instance for each run.
My run usually last something like 1 day or 15 days.

On Fri, May 21, 2010 at 1:10 PM, Johan Svensson jo...@neotechnology.com wrote:
 Yes, -server is usually slower the first few runs but once some
 information has been gathered and optimizations put in place it will
 be faster.

 Are you starting a new JVM for each traversal?
___
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user