Suite à ce fil @maintenance
plusieurs travaux ont été entrepris pour améliorer les performances de SVP à court terme
Je fais ici un point, et je cloture dans la foulée l’autre sujet, histoire que les gens n’aient pas à lire tout l’historique de la discussion qui devient longue.
A la fin de ce point, 3 sondages auxquels vous êtes invité·es à répondre, mais bien sûr vous pouvez aussi poser des questions et réagir autrement que par le vote.
L’enjeu
Actuellement SVP, le plugin-dist qui permet d’installer automatiquement des plugins en allant les chercher, sur internet (classiquement sur un dépot géré par la communauté, mais potentiellement ailleurs) fonctionne ainsi :
- tout les 6 heures, il va lire un fichier decrivant les différents paquets proposés par un dépot ; typiquement pour la plupart des installations SPIP il s’agit de ce fichier https://files.spip.net/spip-zone/archives.xml
- puis il va écrire cela en base de données
Ce qui permet ensuite de faire une recherche de plugin, et de l’installer automatiquement.
Les problèmes
Il y a (au moins) 4 problèmes :
- Un problème (relativement) mineur est que le xml décrivant un dépôt n’est pas un vrai xml
- d’un point de vue general, il serait sans doute plus pertinent de revoir de fond en comble l’architecture pour éviter ces actualisation de l’ensemble des informations toutes les 6 h. C’est une proposition de @eric_tonton
- Sans changer l’architecture actuelle, on constate que le parsing des fichier XML decrivant un depot est couteux en memoire vive, ce qui peut provoquer des fatals sur les petites installations, en plus d’être peu écologique
- En dehors même de cela, le fichier du dépôt principal pèse 9 Mo. Cela veut dire que toutes les 6 h, un site SPIP classique telecharge 9 Mo. Certes sur l’ensemble du trafic internet c’est peu, mais tout de meme.
Les propositions à court terme
Les point 0 et 1 ci dessous ne sont pas concernés par ces propositions, car ils nécessitent des refontes majeures. Si des gens le désir, libre à elles / eux d’ouvrir un autre fil de discussion.
Un double travail a été fait à 3 (marcimat, cedric et moi-même) pour améliorer donc les points 2 et 3.
Concernant le point 2, l’emprise mémoire vive
Cedric a revu le parsage des fichiers XML pour diminuer d’un facteur 3.3 environ l’utilisation memoire vive.
Il s’agit de cette MR
A mon sens cette MR est fonctionnelle et peut être reportée sur les branches pour SPIP 4.4 sans souci.
Concernant le point 3, la taille des fichiers XML échangés
Pour gagner à la fois en mémoire et en usage réseau, un travail a été accompli par marcimat et moi même.
L’idée c’est d’avoir plusieurs variantes pour un même dépot.
a. Une variante complète avec TOUTES les informations sur TOUs (ou presque) les paquets (donc TOUs les tags, ou presque) de TOUT les plugins du dépot. C’est en fait la variante qu’on utilise aujourd’hui, mais qui ne devrait servir que pour les sites qui visent justement à lister tout. J’ai écris « presque » car s’il y a plusieurs versions correctives (z) pour une même branche de plugin (x.y) on ne garde que la dernière.
→ https://files.spip.net/spip-zone/archives.xml
b. Une variante plus légère, où l’on supprime les plugins historiques qui utilisent plugin.xml et pas paquet.xml
→ https://files.spip.net/spip-zone/archives.full.xml
c. Une variante encore plus légère où l’on supprime les informations qui ne servent pas à SVP dans son mode par défaut (pour les sites SPIP autres que contrib.spip.net et plugins.spip.net)
→ https://files.spip.net/spip-zone/archives.thin.xml
d. Et surtout des variantes VRAIMENT plus légères, basés sur c, où
- On ne met que les plugins compatibles avec une branches de SPIP (donc un fichier pour SPIP 4.4, un pour SPIP 5.0, etc)
- On ne garde que la dernière version de chaque plugin qui répond au critère de compatibilité
https://files.spip.net/spip-zone/archives.thin.spip_4_4.xml
La generation de tout cela c’est le « debardeur » qui s’en charge. Et donc c’est cette MR qui améliore les choses.
Et pour la zone cela donne cela, à 13h57
- archives.xml (pas de maj): 9.0MiB — 3602 archives
- archives.full.xml (pas de maj): 7.9MiB — 2997 archives
- archives.thin.xml (maj): 5.4MiB — 2997 archives
- archives.thin.spip_4_4.xml (pas de maj): 1.2MiB — 723 archives
Entre a et d on passe de 9 Mio à 1.2 Mio. Donc un facteur 7.5. Combiné à la MR de cedric, cela ferait un gain potentiel d’un facteur 24 de mémoire vive. Pas rien. De plus une telle architecture assure que le fichier lu ne gonfle pas éternellement, vu que les plugins qui ne sont plus maintenus avec les nouvelles versions de SPIP ne seront plus listés.
On garderait donc
a. Pour plugins.spip.net / contrib.spip.net
b. Non, inutile à priori
c. Pour les sites qui utilisent la constante de compatibilité forcée, donc normalement au bout de peu de temps, les sites en questions désactivent la constante, et repassent sur une version légère
d. Pour les sites en productions courantes, à partir de SPIP 4.4 et uniquement pour les versions déjà sorties (donc pas pour SPIP 5)
Comme vous pouvez le constater, ces variantes sont déjà disponibles sur les sites de la communauté.
Reste donc à ce qu’elles soient EFFECTIVEMENT utilisés par les SPIP qui seront mis à jour à l’avenir.
C’est l’enjeu de cette MR dans SVP, que de chercher par priorité les fichiers les plus léger (pour permettre aux éventuels dépôts autres que communautaires de continuer à fonctionner).
Les questions qui se posent
- Prend-t-on le risque de déployer les 2 MR en questions sur des SVP pour spip 4.4, en sachant que nous n’avons pas relu intégralement tous les fichiers de depots pour voir si pas d’erreur.
(A mon sens OUI, mais cela veut dire qu’il faut des gens pour lire attentivement aussi la MR sur le debardeur pour vérifier sa cohérence) - Plus prosaïquement, faut-il appeler les variantes par version de SPIP
archives.thin.spip_x_y.xml- ou bien
archives.thin.spip-x.y→ ma préférence - ou bien
archives.thin.spip-vx.y
Sachant qu’on a deja des fichiers https://files.spip.net/spip/archives/spip-v4.4.7.zip. Donc les 2 dernières syntaxes seraient plus cohérentes. Le choix entre le v et le non v étant qu’une branche n’est pas une version précise de SPIP, mais un ensemble de version. C’est à dire que la branche 4.4 contient spip v4.4.0 + spip v4.4.1 + spip v4.4.2 etc. Donc je suis plutôt favorable à ne PAS mettre le v. Mais je n’irais pas me battre la dessus.
Les sondages
Sur la MR de perf memoire
- Reporter la MR de PERF memoire en 4.4
- Ne pas reporter la MR de PERF memoire en 4.4
- Abstention
Sur la MR de perf réseau
- Reporter la MR de PERF réseau en 4.4
- Ne pas reporter la MR de PERF memoire en 4.4
- Abstention
Sur la nomenclature
archives.thin.spip_x_y.xmlarchives.thin.spip-x.yarchives.thin.spip-vx.y- Abstention