Cache dans Ramdisk - quelle taille ?

Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,
Nombre de réponses : 10

Bonjour

Moodle Version 3.1.10

Depuis deux mois, pour améliorer les performances de la plateforme, nous avons mis les caches applicatives dans un Ramdisk de 1G (le serveur a 32G de mémoire)

Nous avons mis des alertes pour voir si la taille critique va être atteinte et on a été obligé plusieurs fois de le vider les caches. 

Le problème c’est qu’on ne sait pas d’avance comment le tailler ce Ramdisk.  C’est un filesystem qu’on ne peut pas agrandir à chaud.

Nous allons l’agrandir en 2G mais on ne sait toujours pas si cela sera suffisant.

Si certains d'entre vous ont un avis sur la question, nous sommes preneurs.


Merci d’avance


Moyenne des évaluations  -
En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

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

Bonjour Fabiola,

J'imagine que le problème est lié aux sauvegardes... en effet, les fichiers sont temporairement stockés dans le dossier $CFG->temp/backup lors de la création d'une sauvegarde. Et cela peut très vite prendre une place énorme.

Nicolas a créé MDL-60923 il y a quelques temps, qui permettrait d'améliorer les choses, lorsque ce sera(it) mis en place, en plaçant ce dossier temporaire des sauvegardes hors du dossier temporaire général.

Séverin

En réponse à Séverin Terrier

Re: Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,

Merci Séverin et pour la réponse.

Mais nous avons mis sur Ramdisk que les répertoires Cache et Localcache.

Le répertoire des sauvegardes lui est  dans moodledata. Chez nous la sauvegarde automatique des cours est désactivée. Les enseignants sauvegardent manuellement leur cours.

Notre problème est qu'on ne peux pas savoir d'avance quel taille donner à ce Ramdisk.

Fabiola


En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

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

Bonjour,

Je ne réponds pas directement à la question.

Une remarque cependant : pour améliorer les performances, il est plus important de se focaliser d'abord sur :

  • le stockage de masse pour toutes les données (disques dur rapides),
  • une configuration réseau impeccable,
  • beaucoup de mémoire,
  • des CPUs performants.

Voir le message récent de Valéry Frémaux à ce sujet.

À côté des éléments ci-dessus, la mise en RAM des caches n'est pas très intéressante.

En réponse à Nicolas Martignoni

Re: Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,

Bonjour

Merci pour ces précisions assez utiles. Nous sommes toujours preneurs de tout information qui peut améliorer les performances de notre plateforme moodle.

Dans cette souci nous avons fait un audit fin 2016 avec la société EDUNAO (avec Valéry Fremaux).

C'est justement suite aux préconisations de cet audit qu'on a déplacé les caches sur Ramdisk. Dans la préconisation a été dit d'examiner les tailles actuelles des répertoires de cache sur moodledata et prévoir une dotation en Ramdisk de taille *2.

Apparemment  nous n'avons pas du bien faire examiner cette taille dans son état maximale.

Nos estimations étaient plus petits que la réalité puisque les 1G de Ramdisk se remplissent assez vite (1 semaine ou 2).

On augmentera à 2G et puis on verra. Nous avons mis des alertes pour ne pas bloquer la plateforme si la taille de Ramdisk se rempli à 100%.

C'est assez empirique et on voudrais comprendre comment se comporte moodle avec son cache ... Le taux d'utilisation est en augmentation permanent même si de temps en temps ce taux descend.

Merci d'avance pour vos conseils.

Fabiola



En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

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

Bonjour Fabiola,

Je suis étonné des tailles annoncées.

En effet, sur mes plateformes en exploitation, j'ai des valeurs qui tournent actuellement, selon les plateformes, entre :

  • cache : 1,5 Mo et 62 Mo
  • localcache : 9,3 Mo et 11 Mo
  • sessions : 1,3 Mo à 13 Mo

Certes, nous sommes actuellement en période de vacances, et il y a 60 connectés dans les 5 dernières minutes sur la plus grosse plateforme.

Je ne comprends donc pas vraiment comment vous arrivez à remplir 1 Go...

Séverin

En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

par Valery Fremaux,
Avatar Développeurs de plugins

Bonjour Fabiola

La taille du cache dépend en fait de plusieurs choses. Notamment de la charge d'usage d'un certain nombre de données de Moodle.

Pour les plates-formes à usage assez intensif en nombre d'utilisateurs et en nombre de contextes à gérer, cela peut grossir en effet.

A titre d'exemple, pour le groupe IGS pour lequel je fais tourner 40 écoles sur un Moodle avec environ 12000 utilisateurs, les caches ont été dimensionnés à 2G (shared) + 2G (local). Actuellement si le shared est monté à 17% d'occupation le local reste peu utilisé. Nous sommes toujours en 3.1.

Le cache local ne strocke en principe que des données assez statiques, et non applicatives, comme le cache de theme, les caches de javascript.

Le cache partagé entre les clusters stocke kes caches applicatifs de moodle (les dépôts de cache des composants et des sous-ensembles de moodle), ainsi que les verrous de fichiers.

Il est possible de comprendre ce que stocke le cache en allant voir sur Administration de site > Plugins > Cache > Configuration

Il y a là la liste de toutes les définitions de cache que fait moodle.

En gros il y a 2 usages principaux du cache :

- le cache de sessions qui stocke les sessions.

Je me suis rendu compte que dans certaines situations, les sessions n'étaient pas effacées et ce cache accumulait plein d'enregistrements de session dont une bonne partie étaient caduques. Je n'ai pas eu le temps d'analyser le pourquoi pour l'instant.

- le cache de données précalculées comme le cache de la structure du cours, l'arbre de catégories les groupes de cours, afin de rassembler dans une structure "SQLless" des données qui vont ensemble et sont éparpilliées dans les tables.

- le cache de certains plugins, car n'importe quel développeur de plugin peut construire ses propres dépôts de cache pour ses propres besoins.

Je confirme en effet que le type de système de fichiers utilisé pour monter un cache n'est pas dynamiquement extensible, et qu'il est donc important de bien le dimensionner pour absorber tous les besoins de cache. 

Il peut être instructif de déterminer quel sous-répertoire du cache grossit (du -s *) afin de focaliser le problème.

Il peut être intéressant d'automatiser une vidange des caches régulières. Cela ralentira moodle pendant quelques minutes pour les premiers utilisateurs, Ce qui peut être supportable en début de journée lorsque la charge est peu importante.

Cdt

Moyenne des évaluations Utile (1)
En réponse à Valery Fremaux

Re: Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,

Bonjour et merci pour ces explications.

Nous avons mis dans le Ramdisk les repertoires cache et localcache (par défault dans moodledata).  Les sessions sont enregistrés en base de données.

En ce moment le cache applicatif fait 430M (on l'avait vidé il y a 2 jours).

Les plus gros répertoires sont :

cachestore_file/default_application/core_cursemodinfo (188M)

cachestore_file/default_application/core_htmlpurifier (145M)

cachestore_file/default_application/core_questiondata (56M)

cachestore_file/default_application/core_coursecontact (15M)


Cela vous semble-t-il normal ?

Merci d'avance



En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,

Bonjour

En une semaine le cache core_htmlpurifier a plus que doublé (de 145Mo en 350Mo).

Les autres bougent beaucoup moins.

En réponse à Fabiola Pumo

Re: Cache dans Ramdisk - quelle taille ?

par Valery Fremaux,
Avatar Développeurs de plugins

Bonjour Fabiola

Pour les tailles mentionnées, cache_coursemodinfo contient le précalcul de toutes les sections de cours avec toutes les données de modules de cours rassemblées.

Si la plate-forme contient beaucoup de cours et bien chargés en modules, c'est normal que ce cache soit important. D'où l'intérêt aussi de mettre en oeuvre une stratégie d'archivage régulière pour séparer un moodle d'archive et un moodle d'exploitation courant, pour éliminer la tonne de contextes non utilisés dans moodle.

le htmlpurifier se remplit par contre à la navigation des utilisateurs. Chaque fois qu'un contenu change et passe par les filtres, alors la nouvelle version est cachée dans ce cache au premier utilisateur qui passe dessus. Le remplissage dépend donc aussi en partie de l'audience de la plate-forme, de la quantité de contenus natifs moodle consultés et de leur variabilité. Un rapide examen de l'impact du purifier montre qu'il est activé dans de très nombreux cas dans les librairies centrales (weblib.php et moodlelib.php). Par exemple, tous les paramètres d'entrée de formulaires qui admettent du HTML en entrée (tous les éditeurs de texte) passent systématiquement par le purifier. Ceci a permis à Moodle de devenir beaucoup plus robuste contre les pratiques sauvages de copier-coller à partir de Word ou autres navigateurs pas très astucieux avec le "copier" (qui découpent le HTML n'importe comment au moment de la copie) ou ramènent des caractères à encodage douteux ou non supportés.

Donc plus on utilise les forums, les remise de devoir en HTML au tout autre activité qui rentre du HTML formatté dans moodle, et plus le cache se remplit, puisqu'il crée une clef différente pour chaque variation de la donnée d'entrée.

En conclusion : un cache qui se remplit est donc le signe d'une plate-forme bien exploitée ! C'est rassurant en quelques sortes.

Peut on vider régulièrement ce cache  ?

Oui comme tous les caches, s'agissant de contenus, 95% de ces contenus dorment dans le cache en attente d'être consultés par les utilisateurs. Vider les caches ne fera que demander à les reconstituer pour les contenus qui sont effectivement lus. L'impact sur la performance est probablement minime et de courte durée, surtout si on ne vide que ce cache là et on conserve les autres caches d'accès rapides aux données.

Moodlement vôtre !


Moyenne des évaluations Utile (2)
En réponse à Valery Fremaux

Re: Cache dans Ramdisk - quelle taille ?

par Fabiola Pumo,

Merci pour ces explications assez détaillées.

On comprend mieux le fonctionnement.

Cordialement

Fabiola