Skip to content

Gremlin profile execution time not matching with Gremlin Request/Second

0

Hi,

We are doing POC with AWS Neptune and based on the gremlin profile execution time our query takes around 10-15 ms to execute.
We are using db.r5.8xlarge instance which has 32 vCPUs i.e 64 neptune threads.
So our expectation when we run this query concurrently using multiple Go client we should able to get around 4200 queries/sec (1000 ms / 15 qps * 64 threads) but as per the db instance Gremlin request/second metric the number of queries processed is at 950/sec.
This value is way too low from the expected values based on profile output of the query.

As per the gremlin status curl output during the concurrent run of the query, I see the acceptedQueryCount is always around 150 and runningQueryCount is always 64. By which I assume there is enough job present in the FIFO queue waiting for the threads to process.

But in spite of that db metric Gremlin request/sec is consistently pointing at 950/sec.

Need Clarification:

  1. What are the things accounted for in the gremlin profile execution time calculation?
  2. What are the other factors which will affect the Gremlin request/sec metric which is not accounted for in profile execution time calculation?

Data Model:

R1----R1R2Edge ---> R2 ----R2R3Edge--->R3 (properties: x1, x2, x3)

Query:
g.withSideEffect('Neptune#typePromotion',false).V("R1:1:99").as('r1').out('R1R2Edge').out('R2R3Edge').not(and(has('x1',within('-1','tcp')),and(has('x2',lte(5432)),has('x3',gte(5432))))).select('r1').id()

Thanks

asked 5 years ago718 views
1 Answer
0

Thanks simonzh.

answered 5 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.