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

Reply via email to