Discussion Wicri:PhilologieVM2
Cette page introduit des éléments d'évaluation de performances techniques autour du Serveur d'exploration sur la philologie.
Sommaire
Rappel des objectifs techniques de LorExplor
Un des objectifs de LorExplor est de mettre au point des protocoles permettant une analyse dans un contexte temporel restreint :
- 10 minutes à une demi heure pour des actions de sensibilisation, ou pour une réponse à une question ponctuelle.
- une heure pour un débroussaillage (en travaillant sur des corpus de l'ordre de 2000 à 4000 documents de métadonnées).
- une demie journée pour un traitement plus approfondi, avec un corpus de l'ordre de 20.000 documents full text.
- quelques jours pour une itération sur un portail spécialisé (exemple 600.000 documents sur les poissons ou quelques centaines de milliers sur la production scientifique concernant la région Lorraine).
Outils time et wc d'Unix
Pour donner un premier élément d'évaluation, 2 commandes Unix sont utilisées :
- la commande time donne le temps d'exécution d'une ligne de commande.
- la commande wc donne la volumétrie du résulat.
Exemple, les 2 pavés qui suivent donnent le nombre de lignes Unix contenant la chaîne « Meyer » ou « meyer » dans deux extractions brutes de 1000 documents fulltext d'ISTEX. Le premier a une forme représentation ECCO, le suivant est essentiellement Springer :
>time grep "[Mm]eyer" CorpusIstexVM2.A.txt/f00000s1000.txt | wc 657 135322 3695891 real 0m24.181s user 0m1.193s sys 0m0.387s
> time grep "[Mm]eyer" CorpusIstexVM2.A.txt/f01000s1000.txt | wc 487 7980 92136 real 0m0.889s user 0m0.086s sys 0m0.047s
La commande time donne 3 nombres :
- real : le temps d'exécution de la commande (ici il donne plutôt une idée du temps d'accès sur disque)
- user : le temps UC de traitement
- sys : l'overhead système.
la commande Unix wc (Word Count) qui donne 3 nombres :
- le premier est le nombre de lignes. (ici le nombre de lignes fulltext ou de blocs de métadonnée contenant Meyer)
- le deuxième est le nombre de mots
- le troisième donne le nombre de caractères (et donc la volumétrie globale du résultat).
Téléchargements
Éléments d'interprétation des résultats
Chaque pavé correspond à un téléchargement de 1000 documents comportant :
- métadonnées JSON
- métadonnées MODS
- métadonnées XML
- fulltext TEI
Il sollicite l'API pour un peu plus de 4000 accès.
Chaque pavé contient 2 commandes (IstexGetCorpus, IstexToSxml) préfixées par time. Celle ci donne 3 nombres qui sont ici interprétées comme suit :
- real : le temps d'exécution de la commande (ici le temps de réponse global de l'API).
- user : le temps UC de traitement (ici la fusion des 4 composantes du document pour en constituer un seul)
- sys : l'overhead système.
La commande IstexToSxml est un programme lex qui supprime les éléments d'indentation pour obtenir un document XML par ligne Unix. Elle est filtrée par la commande Unix wc qui donne 3 nombres :
- Le nombre de lignes est ici égal au nombre de document. Ici, il permet de vérifier la conformité du téléchargement (sauf pour le dernier lot, un résultat différent de 1000 indique une erreur)
- le deuxième est le nombre de mots
- le troisième donne le nombre de caractères (et donc la volumétrie du téléchargement).
Données relatives aux téléchargement des paquets de 1000 documents
> time IstexGetCorpus -q "philolog*" -s1000 -A > CorpusIstexVM2.A.txt/f00000s1000.txt real 4m50.535s user 0m19.143s sys 0m12.846s > time IstexToSxml < CorpusIstexVM2.A.txt/f00000s1000.txt | wc 1000 18763567 526622289 real 1m8.456s user 0m46.187s sys 0m1.497s
>time IstexGetCorpus -q "philolog*" -s1000 -f1000 -A > CorpusIstexVM2.A.txt/f01000s1000.txt real 5m6.351s user 0m2.486s sys 0m1.312s >time IstexToSxml < CorpusIstexVM2.A.txt/f01000s1000.txt | wc 1000 6211386 50904033 real 0m4.658s user 0m4.616s sys 0m0.145s
>time IstexGetCorpus -q "philolog*" -s1000 -f2000 -A > CorpusIstexVM2.A.txt/f02000s1000.txt real 6m12.901s user 0m3.998s sys 0m2.308s >time IstexToSxml < CorpusIstexVM2.A.txt/f02000s1000.txt | wc 1000 13444200 106586695 real 0m9.363s user 0m9.571s sys 0m0.279s
> time IstexGetCorpus -q "philolog*" -s1000 -f3000 -A > CorpusIstexVM2.A.txt/f03000s1000.txt real 4m10.152s user 0m3.610s sys 0m2.067s > time IstexToSxml < CorpusIstexVM2.A.txt/f03000s1000.txt | wc 1000 11732252 93620115 real 0m8.634s user 0m8.552s sys 0m0.263s
time IstexGetCorpus -q "philolog*" -s1000 -f4000 -A > CorpusIstexVM2.A.txt/f04000s1000.txt real 7m36.946s user 0m20.829s sys 0m13.836s > time IstexToSxml < CorpusIstexVM2.A.txt/f04000s1000.txt | wc 1000 23702957 574319916 real 1m6.382s user 0m51.175s sys 0m1.679s
time IstexGetCorpus -q "philolog*" -s1000 -f5000 -A > CorpusIstexVM2.A.txt/f05000s1000.txt real 6m8.116s user 0m2.866s sys 0m1.568s >time IstexToSxml < CorpusIstexVM2.A.txt/f05000s1000.txt | wc 1000 6700756 64845125 real 0m6.114s user 0m5.868s sys 0m0.196s
> time IstexGetCorpus -q "philolog*" -s1000 -f6000 -A > CorpusIstexVM2.A.txt/f06000s1000.txt real 11m45.977s user 0m2.916s sys 0m1.748s > time IstexToSxml < CorpusIstexVM2.A.txt/f06000s1000.txt | wc 1000 7878243 63640120 real 0m5.800s user 0m5.738s sys 0m0.167s
> time IstexGetCorpus -q "philolog*" -s1000 -f7000 -A > CorpusIstexVM2.A.txt/f07000s1000.txt real 8m28.910s user 0m3.895s sys 0m2.497s > time IstexToSxml < CorpusIstexVM2.A.txt/f07000s1000.txt | wc 1000 12851316 101228623 real 0m8.772s user 0m9.084s sys 0m0.244s
> time IstexGetCorpus -q "philolog*" -s1000 -f8000 -A > CorpusIstexVM2.A.txt/f08000s1000.txt real 7m29.022s user 0m3.827s sys 0m2.389s > time IstexToSxml < CorpusIstexVM2.A.txt/f08000s1000.txt | wc 1000 12609141 100803101 real 0m8.392s user 0m8.982s sys 0m0.241s
> time IstexGetCorpus -q "philolog*" -s1000 -f9000 -A > CorpusIstexVM2.A.txt/f09000s1000.txt real 12m53.771s user 0m19.285s sys 0m14.570s > time IstexToSxml < CorpusIstexVM2.A.txt/f09000s1000.txt | wc 1000 20984497 529393015 real 0m46.384s user 0m46.261s sys 0m1.356s
> time IstexGetCorpus -q "philolog*" -s1000 -f10000 -A > CorpusIstexVM2.A.txt/f10000s1000.txt real 6m58.531s user 0m2.861s sys 0m1.797s > time IstexToSxml < CorpusIstexVM2.A.txt/f10000s1000.txt | wc 1000 6532967 56119332 real 0m5.308s user 0m5.107s sys 0m0.162s
> time IstexGetCorpus -q "philolog*" -s1000 -f11000 -A > CorpusIstexVM2.A.txt/f11000s1000.txt real 7m42.748s user 0m3.661s sys 0m2.413s > time IstexToSxml < CorpusIstexVM2.A.txt/f11000s1000.txt | wc 1000 10299434 82690392 real 0m7.620s user 0m7.505s sys 0m0.226s
> time IstexGetCorpus -q "philolog*" -s1000 -f12000 -A > CorpusIstexVM2.A.txt/f12000s1000.txt real 6m11.458s user 0m3.567s sys 0m2.041s > time IstexToSxml < CorpusIstexVM2.A.txt/f12000s1000.txt | wc 1000 11563988 91877427 real 0m8.653s user 0m8.368s sys 0m0.246s
> time IstexGetCorpus -q "philolog*" -s1000 -f13000 -A > CorpusIstexVM2.A.txt/f13000s1000.txt real 6m4.804s user 0m4.023s sys 0m2.326s > time IstexToSxml < CorpusIstexVM2.A.txt/f13000s1000.txt | wc 1000 13687135 107525948 real 0m9.735s user 0m9.779s sys 0m0.294s
> time IstexGetCorpus -q "philolog*" -s1000 -f14000 -A > CorpusIstexVM2.A.txt/f14000s1000.txt real 7m35.899s user 0m16.352s sys 0m10.827s > time IstexToSxml < CorpusIstexVM2.A.txt/f14000s1000.txt | wc 1000 17084825 448668163 real 0m45.818s user 0m39.518s sys 0m1.240s
> time IstexGetCorpus -q "philolog*" -s1000 -f15000 -A > CorpusIstexVM2.A.txt/f15000s1000.txt real 6m27.433s user 0m2.527s sys 0m1.317s > time IstexToSxml < CorpusIstexVM2.A.txt/f15000s1000.txt | wc 1000 6325117 51476649 real 0m5.024s user 0m4.805s sys 0m0.154s
> time IstexGetCorpus -q "philolog*" -s1000 -f16000 -A > CorpusIstexVM2.A.txt/f16000s1000.txt real 6m52.187s user 0m3.991s sys 0m2.312s > time IstexToSxml < CorpusIstexVM2.A.txt/f16000s1000.txt | wc 1000 13270616 105494830 real 0m9.756s user 0m9.645s sys 0m0.298s
> time IstexGetCorpus -q "philolog*" -s1000 -f17000 -A > CorpusIstexVM2.A.txt/f17000s1000.txt real 6m34.289s user 0m3.710s sys 0m2.158s > time IstexToSxml < CorpusIstexVM2.A.txt/f17000s1000.txt | wc 1000 11903833 95507625 real 0m9.275s user 0m8.838s sys 0m0.272s
> time IstexGetCorpus -q "philolog*" -s1000 -f18000 -A > CorpusIstexVM2.A.txt/f18000s1000.txt real 10m9.759s user 0m21.931s sys 0m15.287s > time IstexToSxml < CorpusIstexVM2.A.txt/f18000s1000.txt | wc 1000 23303593 597606111 real 1m5.690s user 0m52.949s sys 0m1.768s
> time IstexGetCorpus -q "philolog*" -s1000 -f19000 -A > CorpusIstexVM2.A.txt/f19000s1000.txt real 6m8.359s user 0m2.991s sys 0m1.601s > time IstexToSxml < CorpusIstexVM2.A.txt/f19000s1000.txt | wc 1000 7027924 69062935 real 0m6.436s user 0m6.134s sys 0m0.195s
time IstexGetCorpus -q "philolog*" -s1000 -f20000 -A > CorpusIstexVM2.A.txt/f20000s1000.txt real 6m20.692s user 0m2.963s sys 0m1.621s > time IstexToSxml < CorpusIstexVM2.A.txt/f20000s1000.txt | wc 1000 8693080 69062224 real 0m6.120s user 0m6.340s sys 0m0.185s > time IstexGetCorpus -q "philolog*" -s1000 -f21000 -A > CorpusIstexVM2.A.txt/f21000s1000.txt
real 6m16.812s user 0m3.656s sys 0m2.135s > time IstexToSxml < CorpusIstexVM2.A.txt/f21000s1000.txt | wc 1000 12117025 95451178 real 0m8.530s user 0m8.943s sys 0m0.260s
> time IstexGetCorpus -q "philolog*" -s1000 -f22000 -A > CorpusIstexVM2.A.txt/f22000s1000.txt real 6m1.809s user 0m3.769s sys 0m2.245s > time IstexToSxml < CorpusIstexVM2.A.txt/f22000s1000.txt | wc 1000 12417515 99073925 real 0m8.209s user 0m8.782s sys 0m0.242s
> time IstexGetCorpus -q "philolog*" -s1000 -f23000 -A > CorpusIstexVM2.A.txt/f23000s1000.txt real 3m5.189s user 0m1.931s sys 0m1.101s > time IstexToSxml < CorpusIstexVM2.A.txt/f23000s1000.txt | wc 527 6280855 49791879 real 0m4.146s user 0m4.442s sys 0m0.127s
Variations sur un échantillon
- Trois lancements en parallèle
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 8m10.274s user 0m23.924s sys 0m12.627s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 7m1.237s user 0m23.739s sys 0m12.196s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 6m52.653s user 0m23.877s sys 0m12.248s
- Trois lancements en série
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 8m10.274s user 0m23.924s sys 0m12.627s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 4m54.654s user 0m23.007s sys 0m11.173s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 5m4.191s user 0m23.086s sys 0m11.295s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc 12988541 31505241 659267656 real 17m13.670s user 0m22.910s sys 0m10.723s
Traitements sur corpus
Cette partie donne des éléments d'appréciations sur les traitements proprement dits, une fois le corpus téléchargé.
Reformatage initial
time HfdCat $EXPLOR_AREA/Import/IstexRepository.hfd \ > | IstexCleanFullText \ > | SgmlFast -c1 \ > | IstexModsToTei \ > | TeiPutRefToIdno -t wicri:Area/Istex/Corpus \ > | HfdBuild -h $EXPLOR_AREA/Import/IstexMetadata real 8m47.420s user 7m48.399s sys 0m21.315s
Un essai sur l'ensemble des métadonnées
Ce premier essai répond à une première question des demandeurs sur la « fraicheur potentielle du corpus » (voir Discussion:Serveur d'exploration sur la philologie).
> time HfdCat PhilologieVM2/Import/IstexMetadata.hfd \ | SxmlSelect -g record/TEI/teiHeader/fileDesc/publicationStmt/date/1 -p @g1 -p @1 \ | sort -u | IndexBuildRec | SxmlSelect -g idx/k/1 -g idx/f/1 -p @g2 -p @g1 | sort -rn 811 2009 783 2007 725 2011 721 2008 ... 1 1816 1 1808 1 1804 real 0m22.562s user 0m26.878s sys 0m0.852s