Is there a way to make Gremlin Server use ALL the 8 processor cores on my pc hardware to run my query instead of just one?
Well, a Gremlin query's resource usage is largely going to be bound to the underlying execution of the graph system (in your case neo4j or orientdb). If the underlying graph system can parallelize some aspect of the query then I imagine you'd see more processor usage. If you're looking for massively parallel types of queries over large scale graphs then you might want to look into OLAP traversals with Gremlin over Spark.
Is there a way to access and change graph database configuration settings which Gremlin Server controls. i.e. access and change neo4j configuration settings under Gremlin Server?
If you're asking if there is some API to change neo4j configuration settings through Gremlin Server, then, no, that is not possible. However, all neo4j configurations options can be modified by way of the configuration file you provide to Gremlin Server which instantiates neo4j as described here. Basically, neo4j specific configurations just need to be prefixed with gremlin.neo4j.conf.
. For example to set the dbms.index_sampling.background_enabled
configuration option you would do:
gremlin.graph=org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph
gremlin.neo4j.directory=/tmp/neo4j
gremlin.neo4j.conf.dbms.index_sampling.background_enabled=true
Is there a way to capture the timestamp of when a query begins to run on gremlin server (i.e. after the client serializes and send the data across network to gremlin server, gremlin server deserializes the data and at the point gremlin server is ready to run the query?). I know of TimeUtil Class but it only gives me the duration in milliseconds that it takes gremlin server to run the query on the side side and not the timestamp.
No, that timestamp is not captured, though it might be a nice piece of metadata that Gremlin Server could return in the future potentially. If you were using scripts (rather than bytecode based traversals) I suppose you could grab a timestamp and fold that into your result:
start = System.currentTimeMillis()
[start, g.V().has('person','name','marko').toList()]
I can't say I'd completely endorse this approach as it binds you to embedded strings for your queries but it does at least allow you to get the timestamp.