Re: [Neo4j] [Neo] memory mapping
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
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
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
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
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
... 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
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
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