Avec la version 3.0.0 d’ezmaster-virtuoso sortie aujourd’hui, nous avons rendu la configuration de Virtuoso plus intuitive (et surtout fonctionnelle).

Pour des explications détaillées sur ce qu’est ezmaster-virtuoso, voir l’article consacré.

Raison

Jusqu’alors nous n’avions pas eu besoin de toucher à la configuration par défaut de Virtuoso. Ce n’est plus le cas depuis que nous avons essayé d’y charger 5 millions de triplets.

En effet, nous avons fait un export NQuads étendu de l’instance de LODEX nommée enrichmenttool-list. Cela nous a fourni un fichier de 4,2Gio compressé. Une estimation (via zcat puis wc) nous indique que le fichier décompressé ferait environ 50Gio pour 268 millions de triplets (même si nous avons fait face à une erreur de décompression que nous n’avons encore cherché à résoudre).

Nous avons d’abord testé le chargement du premier million de ces triplets dans une instance de Virtuoso (avec les réglages par défaut), et il s’est effectué en 17 secondes. Quand nous avons voulu passer aux premiers 5 millions, nous avons été confrontés à un temps de chargement… sans fin.

C’est d’ailleurs confirmé par la documentation de Virtuoso, qui dit:

The Virtuoso Server should be appropriately configured to use sufficient memory and other system resources as detailed in the Virtuoso RDF Performance Tuning Guide, or the load may take an unacceptably long time, approaching forever.

En voulant modifier les paramétrages en question de cette manière (pour une machine avec 7Gio de mémoire vive libre):

[Parameters]
NumberOfBuffers          = 592600
MaxDirtyBuffers          = 444450

nous avons compris que les réglages n’étaient répercutés que lors du premier lancement de l’instance, et pas lors des redémarrages consécutifs à un changement de configuration.

Conséquences

La version 3.0 d’ezmaster-virtuoso prend en compte les changements de configuration via ezMaster, et les rendent plus intuitifs.

Auparavant, pour exprimer la même configuration, il fallait mettre dans le fichier de configuration en JSON:

{
  "env": {
    "VIRT_Parameters_NumberOfBuffers": "592600",
    "VIRT_Parameters_MaxDirtyBuffers": "444450"
  }
}

Nous avons trouvé plus simple de faire:

{
  "Parameters": {
    "NumberOfBuffers": "592600",
    "MaxDirtyBuffers": "444450"
  }
}

Avec ces réglages, nous avons pu charger 5 millions de triplets via l’interface d’administration de Virtuoso, en 1 minute et 26 secondes, et le container de ezmaster-virtuoso prend environ 5Gio de RAM.