Assistance technique

[MoodleBox] Optimiser Moodle dans la MoodleBox

 
Avatar Mickaël PANNEQUIN
[MoodleBox] Optimiser Moodle dans la MoodleBox
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)
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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 !

 
Moyenne des évaluations  -
Avatar Christian W
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
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

 
Moyenne des évaluations  -
Avatar Mickaël PANNEQUIN
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
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.



 
Moyenne des évaluations  -
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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

 
Moyenne des évaluations  -
Avatar Mickaël PANNEQUIN
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
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



 
Moyenne des évaluations  -
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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

 
Moyenne des évaluations  -
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Bonjour,

Après le teasing de Mickaël, les personnes intéressées pourront retrouver la discussion liée à son outil de benchmark (et ses améliorations) sourire

Séverin

 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

J'ai modifié le facteur d'amélioration dans ton message initial.

 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

> 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.

 
Moyenne des évaluations  -
Avatar Mickaël PANNEQUIN
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
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



 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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
 
Moyenne des évaluations  -
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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

 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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.

 
Moyenne des évaluations  -
Daniel
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
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

 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Bonne suggestion, c'est fait.

 
Moyenne des évaluations  -
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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  -
Avatar Olivier C
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
 

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)
C'est moi :-)
Re: [MoodleBox] Optimiser Moodle dans la MoodleBox - Sauvegardes
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

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)