Performance
NebulaGraph v2.6.0 Performance Report
Column
- Test environment
- Test data
- Nebula Commit
- Test cases and results
- Queries that do not return properties of vertices and edges
- Queries that return properties of edges
- Queries that return properties of destination vertices
- Queries that return properties of edges and destination vertices
- LOOKUP
- Match
- Match With Dst 1 Hop
- Match With Dst 2 Hop
- 2.6.0 vs 2.5.0
- Queries that do not return properties of vertices and edges
- Queries that return properties of edges
- Queries that return properties of destination vertices
- Queries that return properties of edges and destination vertices
- LOOKUP
- Match
- Match With Dst 1 Hop
- Match With Dst 2 Hop
- Configuration
Test environment
The server and the pressure test server are all physical computer servers.
- Note: The server sets the CPU to the Performance mode.
$ cpupower frequency-info
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us
hardware limits: 800 MHz - 3.40 GHz
available frequency steps: 3.40 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
available cpufreq governors: conservative userspace powersave ondemand performance
current policy: frequency should be within 800 MHz and 3.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 3.40 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
Test data
LDBC_SNB_SF100
24 Partitions
3 Replica Factors
Nebula Commit
- nebula-graphd version 3ba41bd
- nebula-storaged version 11d8257a
Test cases and results
Queries that do not return properties of vertices and edges
GO {} STEP FROM {} OVER KNOWS
Go 1 Step · QPS
Go 1 Step · Latency(ms)
Go 1 Step · Response Time(ms)
Go 2 Step · QPS
Go 2 Step · Latency(ms)
Go 2 Step · Response Time(ms)
Go 3 Step · QPS
Go 3 Step · Latency(ms)
Go 3 Step · Response Time(ms)
Queries that return properties of edges
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate
Go 1 Step With Edge · QPS
Go 1 Step With Edge · Latency(ms)
Go 1 Step With Edge · Response Time(ms)
Go 2 Step With Edge · QPS
Go 2 Step With Edge · Latency(ms)
Go 2 Step With Edge · Response Time(ms)
Go 3 Step With Edge · QPS
Go 3 Step With Edge · Latency(ms)
Go 3 Step With Edge · Response Time(ms)
Queries that return properties of destination vertices
GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName
Go 1 Step With Dst · QPS
Go 1 Step With Dst · Latency(ms)
Go 1 Step With Dst · Response Time(ms)
Go 2 Step With Dst · QPS
Go 2 Step With Dst · Latency(ms)
Go 2 Step With Dst · Response Time(ms)
Go 3 Step With Dst · QPS
Go 3 Step With Dst · Latency(ms)
Go 3 Step With Dst · Response Time(ms)
Queries that return properties of edges and destination vertices
GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10
Go 1 Step All · QPS
Go 1 Step All · Latency(ms)
Go 1 Step All · Response Time(ms)
Go 2 Step All · QPS
Go 2 Step All · Latency(ms)
Go 2 Step All · Response Time(ms)
Go 3 Step All · QPS
Go 3 Step All · Latency(ms)
Go 3 Step All · Response Time(ms)
LOOKUP
LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
QPS
Latency(ms)
Response Time(ms)
MATCH
MATCH (v:Person) WHERE v.firstName == '{}' RETURN v
QPS
Latency(ms)
Response Time(ms)
Match With Dst 1 Hop
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2
QPS
Latency(ms)
Response Time(ms)
Match With Dst 2 Hop
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2
QPS
Latency(ms)
Response Time(ms)
2.6.0 vs 2.5.0
The following data are averages.
Queries that do not return properties of vertices and edges
GO {} STEP FROM {} OVER KNOWS
Go 1 Step · QPS
Go 1 Step · Latency(ms)
Go 1 Step · Response Time(ms)
Go 2 Step · QPS
Go 2 Step · Latency(ms)
Go 2 Step · Response Time(ms)
Go 3 Step · QPS
Go 3 Step · Latency(ms)
Go 3 Step · Response Time(ms)
Queries that return properties of edges
GO {} STEP FROM {} OVER KNOWS yield KNOWS.creationDate
Go 1 Step With Edge · QPS
Go 1 Step With Edge · Latency(ms)
Go 1 Step With Edge · Response Time(ms)
Go 2 Step With Edge · QPS
Go 2 Step With Edge · Latency(ms)
Go 2 Step With Edge · Response Time(ms)
Go 3 Step With Edge · QPS
Go 3 Step With Edge · Latency(ms)
Go 3 Step With Edge · Response Time(ms)
Queries that return properties of destination vertices
GO {} STEP FROM {} OVER KNOWS yield $$.Person.firstName
Go 1 Step With Dst · QPS
Go 1 Step With Dst · Latency(ms)
Go 1 Step With Dst · Response Time(ms)
Go 2 Step With Dst · QPS
Go 2 Step With Dst · Latency(ms)
Go 2 Step With Dst · Response Time(ms)
Go 3 Step With Dst · QPS
Go 3 Step With Dst · Latency(ms)
Go 3 Step With Dst · Response Time(ms)
Queries that return properties of edges and destination vertices
GO {} STEP FROM {} OVER KNOWS yield DISTINCT KNOWS.creationDate as t, $$.Person.firstName, $$.Person.lastName, $$.Person.birthday as birth | order by $-.t, $-.birth | limit 10
Go 1 Step All · QPS
Go 1 Step All · Latency(ms)
Go 1 Step All · Response Time(ms)
Go 2 Step All · QPS
Go 2 Step All · Latency(ms)
Go 2 Step All · Response Time(ms)
Go 3 Step All · QPS
Go 3 Step All · Latency(ms)
Go 3 Step All · Response Time(ms)
LOOKUP
LOOKUP ON Person WHERE Person.firstName == '{}' YIELD Person.firstName, Person.lastName, Person.gender, Person.birthday, Person.creationDate, Person.locationIP, Person.browserUsed
QPS
Latency(ms)
Response Time(ms)
MATCH
MATCH (v:Person) WHERE v.firstName == '{}' RETURN v
QPS
Latency(ms)
Response Time(ms)
Match With Dst 1 Hop
MATCH (v1:Person)-[e:KNOWS]->(v2:Person) WHERE id(v1) == {} RETURN v2
QPS
Latency(ms)
Response Time(ms)
Match With Dst 2 Hop
MATCH (v1:Person)-[e:KNOWS*2]->(v2:Person) WHERE id(v1) == {} RETURN v2
QPS
Latency(ms)
Response Time(ms)
Configuration
Storage:
- rocksdb_block_cache=81920
- heartbeat_interval_secs=10
- max_handlers_per_req=1
Other configuration:
- minloglevel=2
- local_config=true
That's all.
If there is any mistake or information missing in this report, welcome to submit an issue to GitHub or join our Slack channel to discuss with the rest of the NebulaGraph community!