[MoodleBox] Optimiser Moodle dans la MoodleBox

[MoodleBox] Optimiser Moodle dans la MoodleBox

par Mickaël PANNEQUIN,
Nombre de réponses : 23
Avatar Développeurs de plugins

Bonjour,

Je ne sais pas trop si c'est bien ici que je dois posté ce type d'informations mais je me lance. Je viens de tester la MoodleBox, c'est vraiment très pratique ! Bravo !


Voici comment améliorer la vitesse de la Box


Test effectué : test d'écriture (2000 fichiers de 16Ko) sur /var/www/moodledata/temp

Sur une Moodlebox de base, on obtient une moyenne de 13 secondes.

Sur une Moodlebox avec cette modification, on obtient une moyenne de 0.14 secondes soit environ 1000 100 fois plus rapide.


Explication : Le dossier /var/www/moodledata est sur la carte SD ce qui ralenti son fonctionnement. Avec la modification suivante, les données de Moodle temporaires sont stockées dans la mémoire du Raspberry qui est beaucoup plus rapide.

Attention, cette mémoire est effacée à chaque extinction de l'appareil mais comme ces données sont temporaires...


Commandes a effectué :

En tant que root :

mount -t tmpfs -o size=128M,mode=0755 tmpfs /var/www/moodledata/temp

chown -R www-data: /var/www/moodledata/temp


Vous pouvez également faire ce montage au boot de la MoodleBox via :

#crontab -e

@reboot mount -t tmpfs -o size=128M,mode=0755 tmpfs /var/www/moodledata/temp

@reboot chown -R www-data: /var/www/moodledata/temp


Réflexion supplémentaire :

Cette astuce pourrait être étendue à /var/www/moodledata/sessions



Dans l'attente de vos réactions, merci pour vos commentaires !

(Modifié par Nicolas Martignoni pour corriger le facteur d'amélioration. Écrit initialement le lundi 20 juin 2016, 15:51)

Moyenne des évaluations Utile (2)
En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Cette modification est très très intéressante. Je vais l'intégrer à la prochaine version de ma MoodleBox. J'avais bien pensé à mettre le cache en RAMFS, mais oublié le dossier temp.

Merci !

En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Christian Westphal,
Avatar Moodleurs particulièrement utiles

Bienvenu au club !

Évidemment, l'endroit est le bon et l'entête [moodlebox] parfait.

Nicolas est bien plus compétent que moi pour ce qui est de la configuration de moodle mais quelques questions :

  • quelle est l'image de la moodlebox utilisée ?
une partie des données est déjà mis en ramfs (/var/cache/moodle)
  • as-tu fais les tests pendant une utilisation effective de moodle ou "à vide" ?
  • as-tu regardé la quantité de ram utilisée pendant le fonctionnement ?
  • vois-tu d'autres répertoires à mettre en ramfs ?

un facteur 1000, je suis bluffé !

Une question pour Nicolas : sur ma construction, c'est /var/moodledata/cache qui est en ramfs et chez toi /var/cache/moodle, c'est quoi le mieux, les différences, etc. Je me perds un peu la dedans

En réponse à Christian Westphal

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Mickaël PANNEQUIN,
Avatar Développeurs de plugins

Merci Nicolas et Christian,

A vrai dire, j'ai pas mal d'astuces pour améliorer Moodle mais je n'ai jamais trop osé m'impliquer sur la communauté. Peut-être suis-je prêt à passer le cap ? sourire

Les tests ont été fait "à vide" afin d'obtenir les mêmes conditions d'utilisation.

Je n'ai pas regardé la RAM utilisé; il serait intéressant de vérifier cela car j'ai mis 128Mo; ce qui n'est pas forcément en adéquation avec l'usage réel.

Édit : ce n'est pas 1000 mais 100. Je n'arrive plus à éditer mon message.



En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Mickaël,

Tant mieux si tu es prêt à franchir ce cap, on apprécie les gens partageurs ici sourire

Je veux bien croire au facteur 100 entre l'écriture de fichiers sur la carte et en mémoire, mais la vraie question à mon sens est "qu'est-ce que ça change exactement sur le fonctionnement réel du Moodle ?" (et pas "juste" l'écriture de certains fichiers).

Séverin

En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Mickaël PANNEQUIN,
Avatar Développeurs de plugins

Bonjour Séverin,

Tout d'abord, cette amélioration est toute relative car la Box fonctionne très bien sans, d'où le verbe "Optimiser".

Un nombre assez conséquent de fonctionnalités de Moodle utilisent le dossier temporaire ($CFG->tempdir); je te laisse faire une recherche dans le code source pour découvrir que ce code est présent près de 200 fois.

Cela aura un impact si tu utilises les fonctionnalités qui utilisent ce dossier temporaire même si l'impact n'est pas évident ;)

Personnellement, j'arrive à économiser des ressources avec ce type d'astuce et à obtenir, in fine, des résultats très satisfaisants. Je suis d'ailleurs très heureux de constater que la MoodleBox fonctionne sous NGinx; une de mes technologies préférées !

Je vous (la communauté) proposerais bientôt mon outil de benchmark dédié à Moodle (l'optimisation vient de là). Je m'en sers à chaque installation et permet de relever aussi bien des problèmes de base de données, de compatibilité ou encore de processeur; le tout assorti à des conseils en cas de test échoué. Je n'en dis pas plus cool



En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Mickaël,

Effectivement, ma question reste, "Quel est le gain réel lors de l'utilisation réelle de Moodle ?".

Je comprends tout à fait l'idée, qui est très bonne. Je pense qu'il faut juste faire attention à deux petits risques :

  • ne pas avoir alloué assez de mémoire pour ces dossiers, et arriver à saturation, entraînant un blocage
  • avoir alloué trop de mémoire, et ne plus en avoir assez pour faire fonctionner le système correctement

Ça c'est du teasing, j'ai hâte !

Tu auras intérêt d'ouvrir une discussion séparée (quitte à faire un lien dessus dans cette discussion) clin d’œil

Séverin

En réponse à Christian Westphal

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

> Une question pour Nicolas : sur ma construction, c'est /var/moodledata/cache qui est en ramfs et chez toi /var/cache/moodle, c'est quoi le mieux, les différences, etc. Je me perds un peu la dedans

En fait, dans ma construction, j'utilise les mécanismes de cache de Moodle, et je place ces caches en ramfs (dans le dossier /var/cache/moodle et ses sous-dossiers). Dans ce cas, il semble qu'il n'y a pas besoin de mettre en ramfs /var/moodledata/cache (à vérifier).

Je suis en train de penser cependant que les deux approches sont complémentaires.

En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Mickaël PANNEQUIN,
Avatar Développeurs de plugins
Màj :


Pour éviter les problèmes d'écriture, il faut mettre le dossier en 0777 et non en 0755

mount -t tmpfs -o size=128M,mode=0777 tmpfs /var/www/moodledata/temp



En réponse à Mickaël PANNEQUIN

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

De mon côté j'ai mis en 0775 (je n'aime pas trop que tout le monde écrive sourire).

Dans la dernière version de mon image (elle date d'hier), disponible ici, ce réglage est incorporé. Cela fait une réelle différence, donc vaut la peine de la télécharger (à l'endroit habituel).

Pour ceux qui veulent changer leur MoodleBox sans tout refaire, il suffit d'ouvrir le fichier /etc/fstab, d'y ajouter les 2 lignes suivantes, d'enregistrer et de redémarrer.

tmpfs /var/www/moodledata/temp tmpfs size=64M,mode=775,uid=www-data,gid=www-data 0 0
tmpfs /var/www/moodledata/sessions tmpfs size=32M,mode=775,uid=www-data,gid=www-data 0 0
En réponse à Nicolas Martignoni

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Pour autant que je sache, lorsque Moodle réalise une sauvegarde d'un cours, il commence par copier tous les éléments dans le dossier temporaire (dans un sous dossier), avant d'en effectuer le compactage. Puis en dernière étape, il copie le fichier de sauvegarde dans son emplacement définitif.

Du coup, le dossier temporaire doit pouvoir contenir à la fois le contenu du cours, plus sa version compactée.

De ce fait, avec un réglage du dossier temporaire à 64 Mo, je suppose que la limite se situerait aux environs d'un cours qui ferait dans les 40 Mo (avant compactage). Le tout est de le savoir.

Séverin

En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

J'ai fait quelques tests avec des "petits" cours et des fichiers plus ou moins gros, et constaté que cela ne posait pas de problème particulier (l'augmentation du cache était raisonnable).

Je pense que ça peut tenir, mais c'est à vérifier. Si non, alors c'est peut-être une mauvais idée que le dossier "temp" en RAM, et je l'enlèverai.

En réponse à Nicolas Martignoni

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour,

Dans les "ressources utiles" de ce cours de la communauté francophone, et comme Nicolas l'a fait en y plaçant  le mode d'emploi de la MoodleBox, ne serait-il pas pratique de placer une ressource type URL pointant sur la dernière version à télécharger de l'image de la MoodleBox ?

Afin d'éviter d'avoir à rechercher ce lien dans les fils de discussion...

D'autant qu'entre fritic et github on ne sait plus trop où aller ...

Nota: Une sauvegarde en RAM de cours ne dépassant pas 40MO me semble bien faible tout de même. Et pourtant j'allège beaucoup mes cours.

Du coup je me demande s'il faut vraiment passer les fichiers temporaires en RAM ?

Daniel

En réponse à Nicolas Martignoni

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

En fait, idéalement, il faudrait pouvoir définir le dossier moodledata/temp en RAM, mais que le dossier moodledata/temp/backup soit sur le disque : cela permettrait à la fois d'assurer de meilleures performances, et d'assurer les sauvegardes, y compris pour les cours de taille plus importante.

Je reste intéressé pour savoir comment faire cela exactement.

Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Olivier C,

Effectivement, comme le sous répertoire moodledata/temp/backup est le seul qui semble avoir besoin temporairement d'un volume au moins supérieur d'environ 50% au plus gros cours à sauvegarder manuellement, ça semble une bonne idée de lui réserver une configuration particulière en le positionnant sur le disque dur plutôt qu'en RAM.

Sous GNU/Linux, pour faire ça il "suffit" de dédier une partition à ce sous-dossier et d'ajouter une nouvelle entrée au fichier /etc/fstab en dessous la ligne de montage tmpfs de moodledata/temp

Ça donne par exemple, dans un environnement type RedHat/Centos :

# On monte /moodledata/temp en TMPFS. On le limite à 2G  :

tmpfs /moodledata/temp            tmpfs  size=2048M,mode=775,uid=apache,gid=apache 0 0

# On monte le sous-dossier moodledata/temp/backup dans une partition dédiée :

/dev/mapper/vgbackup-moodletempbackup    /moodledata/temp/backup    xfs     defaults        1 2


On aura bien entendu au préalable créé et formaté cette partition dédié, idéalement dans un volume logique pour pouvoir agrandir la taille de ce répertoire à chaud.

Il faut également faire attention à créer le sous dossier /moodledata/temp/backup s'il n'existe pas au préalable pour que le point de montage existe, et faire attention également à faire appartenir ce répertoire au compte "apache" (en environnement RedHat/Centos) (avec des droits 0700).

J'ai testé/validé cette configuration sur notre environnement de pré-production.


Olivier



Moyenne des évaluations Utile (2)
En réponse à Olivier C

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

En lien avec cette problématique, Nicolas a ouvert MDL-60923 pour permettre de définir l'emplacement du dossier temporaire des sauvegardes.

Si vous pensez que c'est utile (et pas que pour la MoodleBox), n'hésitez pas à voter / commenter !

Séverin

Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Juste un petit message pour signaler que MDL-60923 a été résolu dans Moodle 3.5, ce qui permet à partir de cette version de spécifier un dossier particulier comme dossier temporaire de sauvegarde, tout en laissant le reste des dossiers temporaires à un autre endroit (tel un ramdisk pour plus de rapidité).

Séverin

Moyenne des évaluations Utile (2)
En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Merci Séverin de rappeler ceci.

J'ai déjà utilisé cette nouvelle fonctionnalité dans l'image 2.4.0 de la MoodleBox, et bien entendu elle sera aussi dans la version 2.4.1, que je suis en train de faire maintenant, et qui sera prête dans 2-3 heures.

Nicolas

PS. Je suis assez fier, c'est la première nouvelle fonctionnalité que je demande qui est intégrée dans Moodle rouge

Moyenne des évaluations Utile (3)
En réponse à Nicolas Martignoni

Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Avec plaisir,

Il me semble utile d'informer des évolutions positives (dans leur contexte initial).

Et également de montrer que les réflexions menées ici, si on continue la procédure avec des suggestions d'amélioration formulées correctement dans le traqueur, peuvent déboucher sur de nouvelles fonctionnalités. C'est la participation active à la communauté sourire

Séverin

PS : Comme quoi, tout fini par arriver. Mais tu peux être fier de plein d'autres choses (notamment la traduction francophone) clin d’œil

Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: [MoodleBox] Optimiser... et force de la communauté

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

Bonjour

Et également de montrer que les réflexions menées ici, si on continue la procédure avec des suggestions d'amélioration formulées correctement dans le traqueur, peuvent déboucher sur de nouvelles fonctionnalités. C'est la participation active à la communauté sourire

Et oui, tout à fait, tu prêche un convaincu ++ clin d’œil

Différentes voies mènent à la prise en compte de correctifs et d'amélioration !

Parfois les chemins ne sont pas assez éclairés, parfois les routes sont sinueuses, parfois on doit attendre que la chaussée soit réparée pour continuer d'avancer, parfois on tombe dans un cul-de-sac et il faut faire demi-tour...

Mais il est de plus en plus clair (en tout cas pour moi) que la communauté, plus elle est dynamique, plus elle a de poids dans les propositions et décisions.

J'aurai même tendance à avoir un 2ème dicton :

  • la perfection n'existe pas, mais tout est perfectible (depuis longtemps je le dis)
  • Moodle pour tous et tous pour Moodle

Et oui, Nicolas, tu peux être fier de tout ce que tu apportes, comme toi Séverin, et comme chacun de nous dans ce forum par nos petites contributions ici ou là, et comme chacun de vous qui travaillez au quotidien dans vos structures avec/pour Moodle en transmettant vos conseils, trucs et astuces...

Moyenne des évaluations Utile (2)
En réponse à Luiggi Sansonetti

Re: [MoodleBox] Optimiser... et force de la communauté

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

" Moodle pour tous et tous pour Moodle ".  Pas mal ...cœur

Le dynamisme de notre communauté et de ceux qui l'animent comme vous est pour beaucoup dans le succès de Moodle.

Bravo Luiggi grand sourire