Hi Vincent,
On Tue, Jan 30, 2018 at 4:27 PM, Vincent Mooser <vincent.moo...@gmail.com> wrote: > Hi, > > How much memory does the machine have? > > The machine has 64g of memory, so I think I can increase my page cache. > But I should have at least twice this memory to be able to load the whole > graph in the page cache. > I would definitely increase the page-cache, If it's only 100k nodes that you're loading it should be fine. The page-cache is emptied by utilization (LRU-K) so if those 100k nodes keep getting used, their pages stay in. Although if a lot of other data is loaded they might get unloaded. There is no idle eviction. For the node-properties there are separate pages. >From your description it would be 2 or at most 3 property-records per node. The disk is the biggest issue, if you can compensate with the larger page-cache to avoid disks hits that will help (at least for reads). Switch to 3.3.2 Use 12G heap Use 48G page-cache Then this should be better. Also try my query suggestion. Cheers, Michael In my use case, as Solr only contains a subset of the FOLDER nodes (about > 100000 nodes), I was thinking of executing a query that selects these > 100000 nodes at start, for warming up the cache and to be sure that the > page cache contains (at least) these nodes. Will they be evicted of the > page cache after a certain amount of time ? > > Which properties of the nodes do you need to be returned? the full nodes? > > Yes, the full nodes have to be returned. They contain 1 oid (String), 1 > property 'name' (String), 4 boolean properties used as flags for business > tasks and 2 long properties (creation and modification date) > > Thank you, > Vincent > > On Tuesday, January 30, 2018 at 3:04:50 AM UTC+1, Michael Hunger wrote: >> >> Hi, >> this query should be better: >> >> match(node : FOLDER) where node.oid IN {uuidList} return node >> >> You have definitely a really bad system for this graph size: >> How much memory does the machine have? >> >> 0. Switch to Neo4j Enterprise 3.3.2 which is more memory efficient >> 1. *use an SSD* >> 2. use more memory >> 3. use a constraint instead of an index >> >> Otherwise you are effectively measuring disk speed. >> >> The problem is that the nodes might be distributed across the disk and >> then it might have to load up to 200 pages with the HDD having to seek to >> each of the blocks. >> >> Which properties of the nodes do you need to be returned? the full nodes? >> >> >> On Mon, Jan 29, 2018 at 5:11 PM, Vincent Mooser <vincent...@gmail.com> >> wrote: >> >>> Hi, >>> I am currently facing some performance problems when loading nodes using >>> an indexed UUID. My use case is the following: >>> >>> - I initiate a search query in Apache Solr which returns a list of 200 >>> UUID (max) >>> - I load the 200 nodes corresponding to the uuid with the following >>> cypher: >>> >>> unwind {uuidList} as uuid >>> match(node : FOLDER { oid : uuid}) return node >>> >>> The uuidList is a query param containing the list of UUID (string) >>> >>> When the query has no page fault, it takes about 10-20ms to load the 200 >>> nodes. But when some page faults appears in the query log, the query time >>> can take up to 4 seconds. I understand that some nodes have to be loaded >>> directly from the disk, but for 200 nodes, it looks very slow to me. >>> >>> The FOLDER nodes are organized like folders in a filesystem and are >>> attached together with a 'PARENT' relationship. The only folder that does >>> not have any parent is the root folder. >>> >>> Environment specs are: >>> - 300M nodes >>> - 600M relationships >>> - 110M nodes with the label 'FOLDER' >>> - all FOLDER nodes have a property 'oid' which index is online >>> - the graph.db directory is about 125g (without transaction logs) >>> - neo4j enterprise 3.2.6 and java driver 1.4.4 >>> - 8g of Heap >>> - 32g of page cache >>> - no SSD >>> >>> Any hints for improving performances ? >>> >>> Thank you >>> Vincent >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Neo4j" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to neo4j+un...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.