Hugh Williams wrote: > Also, note the following 2 parameters: ThreadCleanupInterval, > ResourcesCleanupInterval which can both be set to 1 in order to reduce memory > leaking: > > > http://docs.openlinksw.com/virtuoso/databaseadmsrv.html#ex_threadcleanupinterval > > although as this was not apparently occurring with 7.2.0 it may not help, > but worth trying ...
It does occur with 7.2.0 - I'd vainly hoped 7.2.1 would fix it. The XSLT process produces the file ftp://ftp.nlm.nih.gov/online/mesh/mesh.nt, which contains 11,917,672 triples. I'm also using the ontology ftp://ftp.nlm.nih.gov/online/mesh/vocabulary_0.9.ttl and the void file ftp://ftp.nlm.nih.gov/online/mesh/void_0.9.ttl. I cannot actually say it is a "memory leak" because I haven't pulled out those tools yet - VmRSS seems to grow linearly over time. VmSize does the same, only the sloop is not as steep. I've built Virtuoso 7.2.1 on CentOS 6.6 as follows: ./configure --prefix=<whatever> --with-readline Previously, with 7.2.0, my build was: export CFLAGS="-O2 -m64" ./configure --prefix=<whatever> --with-readline --with-iodbc=/usr --without-internal-zlib --enable-shared --disable-static I've also configured it with ThreadCleanupInterval = 1 and ResourcesCleanupInterval = 1. The reload I'm testing runs the following commands from an isql command-line: log_enable(2,1); sparql clear graph <http://id.nlm.nih.gov/mesh>; sparql clear graph <http://id.nlm.nih.gov/mesh/vocab>; sparql clear graph <http://id.nlm.nih.gov/mesh/void>; DB.DBA.ttlp(file_to_string_output('path-to-files/mesh.nt'), '', 'http://id.nlm.nih.gov/mesh', 0); DB.DBA.ttlp(file_to_string_output('path-to-files/vocabulary_0.9.ttl'), '', 'http://id.nlm.nih.gov/mesh/vocab', 0); rdfs_rule_set('http://id.nlm.nih.gov/mesh/vocab', 'http://id.nlm.nih.gov/mesh/vocab'); DB.DBA.ttlp(file_to_string_output('path-to-files/void_0.9.ttl'), '', 'http://id.nlm.nih.gov/mesh/void', 0); CHECKPOINT; I'm retrying with a shorter script, which only loads 100,000 triples: log_enable(2,1); sparql clear graph <http://id.nlm.nih.gov/meshtest>; DB.DBA.ttlp(file_to_string_output('path-to-files/small-mesh.nt', '', 'http://id.nlm.nih.gov/meshtest', 0); If that proves stable, I'll do the following: - stop clearing and reloading the vocabulary and void graphs and redefining the ruleset - let you guys know it worked. If that is not stable, I'll do one or several of the following: - try virtuoso-opensource-6 - open/comment on an issue on github.com/openlinksw/virtuoso-opensource/issues - install valgrind and valgrind-devel and build with malloc debug - evaluate switching to the directory scan option. Dan Davis, Systems/Applications Architect (Contractor), Office of Computer and Communications Systems, National Library of Medicine, NIH ------------------------------------------------------------------------------ _______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users