Hi all, I run a benchmark on Ontotext and I am getting very slow queries results.

The database contains 88 million triples.

Below you see the results.

Time elapsed(run 1), 18.4, select * {http://geophy.com/countries/166 ?p ?o} limit 100 Time elapsed(run 2), 3.16, select * {http://geophy.com/countries/166 ?p ?o} limit 100 Time elapsed(run 3), 3.65, select * {http://geophy.com/countries/166 ?p ?o} limit 100 Time elapsed(run 1), 3.2, select * {http://geophy.com/cities/10 ?p ?o} limit 100 Time elapsed(run 2), 4.53, select * {http://geophy.com/cities/10 ?p ?o} limit 100 Time elapsed(run 3), 2.78, select * {http://geophy.com/cities/10 ?p ?o} limit 100 Time elapsed(run 1), 3.02, select * { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} limit 100 Time elapsed(run 2), 3.76, select * { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} limit 100 Time elapsed(run 3), 2.75, select * { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} limit 100 Time elapsed(run 1), 1378.67, select * { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(?o > 1000)} limit 100 Time elapsed(run 2), 1280.57, select * { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(?o > 1000)} limit 100 Time elapsed(run 3), 1522.87, select * { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(?o > 1000)} limit 100 Time elapsed(run 1), 18483.02, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/countries/166 .} Time elapsed(run 2), 17521.47, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/countries/166 .} Time elapsed(run 3), 19688.14, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/countries/166 .} Time elapsed(run 1), 19.97, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/cities/16 .} Time elapsed(run 2), 20.16, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/cities/16 .} Time elapsed(run 3), 22.26, select (COUNT() as ?count) { ?s a http://geophy.com/vocab/buildings . ?s ?p http://geophy.com/cities/16 .} Time elapsed(run 1), 2.51, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} Time elapsed(run 2), 2.53, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} Time elapsed(run 3), 2.46, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area "1678"^^xsd:decimal} Time elapsed(run 1), 867.73, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 2), 879.69, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 3), 887.98, select (COUNT() as ?count) { ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 1), 1101.88, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 2), 1776.07, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 3), 1156.06, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter(xsd:double(?o) > 1000)} Time elapsed(run 1), 2766.25, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter bound(?o)}
Time elapsed(run 2), 2538.59, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter bound(?o)}
Time elapsed(run 3), 2539.9, select (avg(?o) as ?avg) {?s a http://geophy.com/vocab/buildings . ?s http://geophy.com/vocab/buildings_build_area ?o . filter bound(?o)}

Could anyone point the what needs to be tuned in the Ontotext to improve the response time?

asked 06 Oct '16, 04:45

samur's gravatar image

samur
113
accept rate: 0%


Hi Samur,

looking at your queries it seems that slowest ones are aggregational and walk through the whole dataset. can you add here some detais about your GraphDB setup:

  • GraphDB version
  • rule-set (are you using the default one)
  • cache configurations for the repository
  • allocated heap size for GraphDB
  • available system memory
  • are you using SSDs or HDDs
link

answered 06 Oct '16, 07:22

Venelin%20Kotsev's gravatar image

Venelin Kotsev
4212
accept rate: 20%

  • GraphDB version: graphdb-se-7.1.0
  • rule-set (are you using the default one): yes
  • cache configurations for the repository: Entity index size: 10000000 Total cache memory: 6064m Tuple index memory: 4048m Predicate index memory: 512m
  • allocated heap size for GraphDB Linux 4.4.0-38-generic Java Oracle Corporation 1.8.0_91 Memory used 4495 MB Max memory 7138 MB
  • available system memory: 32GB
  • are you using SSDs or HDDs HDD
link

answered 10 Oct '16, 06:45

samur's gravatar image

samur
113
accept rate: 0%

Configuration of cache sizes look ok for the number of statements in your repository. One thing that could influence your performance results could be the slower i/o of the HDDs (compared to SSDs).

GraphDB stores data internally into paged data structures and using SSDs would improve the performance of full-scan queries (assuming no warm-up has been perfromed before)

link

answered 11 Oct '16, 07:04

Venelin%20Kotsev's gravatar image

Venelin Kotsev
4212
accept rate: 20%

Hi, attached I share a benchmark comparing ontotext with stardog and blazegraph.

All engines run in the same machine. The ontotext performance is surprisingly low.

Is there any configuration that could improve the response time? Or ontotext is known to perform bad for these queries?

https://drive.google.com/open?id=0B-fwYPJYT1GOSjNOU0ZTcTFsTDQ

alt text

link

answered 12 Oct '16, 03:16

samur's gravatar image

samur
113
accept rate: 0%

edited 12 Oct '16, 03:17

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×38

Asked: 06 Oct '16, 04:45

Seen: 247 times

Last updated: 12 Oct '16, 03:17

powered by BitNami OSQA