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