Projet

Général

Profil

Wiki

Configuration du proxy-cache

Livrer une configuration ubuquiste pour squid n'est pas possible et il est fréquent de devoir ajuster les paramètres du proxy cache dans la phase d'administration.

L'approche qui sera mise en place proposera des profils orientant dans le choix de jeux de valeurs pour les paramètres de squid.

Profils d'utilisation

Les profils d'utilisation d'un proxy-cache sont déterminés par le type de fichiers demandés, leur variété, leur fréquence de consultation.
Ces facteurs déterminants peuvent évoluer au cours de l'utilisation du serveur, aussi il ne faut pas compter sur la pérennité du choix fait à l'instanciation du serveur.

Efficacité du proxy-cache

Le rôle de la fonction cache du proxy est d'alléger la charge sur la connexion à Internet et de fluidifier l'obtention de ressources en en stockant une partie en local.
On peut mesurer l'efficacité du proxy-cache avec trois marqueurs :
  • hit rate : le rapport du nombre de fichiers distribués depuis le cache sur le nombre total de fichiers demandés ;
  • byte hit rate : le rapport du volume des fichiers distribués depuis le cache sur le volume total des fichiers demandés ;
  • temps de réponse : le temps nécessaire pour distribuer les fichiers demandés (depuis le cache ou non).

Selon les configurations, le temps de réponse peut-être plus long dans le cas d'une distribution depuis le cache.

Paramètres d'optimisation

Algorithmes de suppression des objets du cache

Les différents algorithmes privilégient un aspect du cache : hit rate, byte hit rate, etc.
Ces algorithmes doivent être en phase avec d'autres paramètres (taille maximale d'objets à mettre en cache par exemple).

lru

least recently used

lfuda

least frequently used dynamic aging

gdsf

greedy dual size frequence

Cache

Taille

Relation forte avec la mémoire vive disponible : l'index du cache est gardé en mémoire vive

FS sous-jacent
  • un filesystem voire un disque propre (notamment pour permettre de remettre le cache à zéro plus rapidement et pour limiter la cohérence;
  • journalisation ;
  • option noatime.
Structure du cache
ufs

Le cache est géré dans une arborescence à deux niveaux.

L'accès et la création des fichiers sont gérés par le processus squid. Certaines fonctions sont bloquantes et participent au ralentissement du service.

aufs

Le cache est géré dans une arborescence à deux niveaux (idem ufs).
Un nombre de threads par cache_dir est en charge d'accéder et de créer les fichiers dans le cache. Le nombre de fichiers ouvrables (file descriptors) est mutualisé. Selon la version de squid, tout ou partie des opérations sur le cache sont asynchrones.

diskd

Le cache est géré dans une arborescence à deux niveaux (idem ufs).
Un processus indépendant est en charge du cache.

rock (pour Trusty)

Un fichier

Étude de cas

Paramètres par défaut dans le module Amon

LRU avec une taille d'objets à 32768
UFS

Adaptation expérimentée à Nouméa

Paramètres

LFUDA avec une taille d'objets à 32768
UFS
délai d'abandon à 0 pour répondre aux requêtes superflues répétitives
taille du cache portée à 50000
L1 15
L2 256

Commentaire

La taille d'objets est bien en adéquation avec l'algorithme choisit.

Le type de cache ne permet pas des accès asynchrones au cache.

La taille du cache présuppose de disposer d'au moins 5 Go de mémoire vive sur un système 64bit rien que pour l'index des objets en cache.
Pour un parcours rapide des répertoires du cache, il est plus ou moins admis qu'il faut maintenir le nombre d'objets dedans sous un seuil raisonnable (quelques centaines de fichiers dans chaque dossier du dernier niveau du cache).
Le nombre d'objets par dossier peut être grossièrement estimé en fonction d'une taille moyenne d'objet et du nombre de dossier de dernier niveau :

         (taille_cache / taille_moy_objet)
nb_obj = ---------------------------------
                    (L1 x L2)

Profilage du proxy-cache

squidclient

web polygraph

http://squidbook.org/extras/pm4-pf2.pg.txt