La memory e la Cache Replacement policy è l'algoritmo che determina quali oggetti dovranno essere eliminati e/o sostituiti sul disco quando lo spazio è esaurito ed è necessario nuovo spazio nel Memory Storage o nel Disk Storage. Attualmente vengono implementate 4 differenti cache replacement policy
LRU - Si tratta della policy originaria che viene utilizzata da Squid, LRU rimuove gli oggetti (object) che non sono stati più richiesti da diverso tempo, l'algoritmo può essere implementato su semplici liste LRU
heap LRU - LRU implementata usando un heap
LRU e heap LRU conservano gli oggetti referenziati più recentemente
heap GDSF - Greedy-Dual Size Frequency
Heap GDSF ottimizza l'hit rate conservando in cache gli oggetti piccoli e più frequenti in modo da avere maggiori probabilità di hit. Fornisce dei minori byte hit rate rispetto a heap LFUDA in quanto scarta gli oggetti di maggiori dimensioni.
heap LFUDA - Least Frequently Used con aging dinamico
Heap LFUDA mantiene gli oggetti più frequenti in cache a prescindere dalle dimensioni, ottimizzando il byte hit rate a discapito dell'hit rate, impedendo a molti oggetti piccoli meno frequenti di essere cached.
Utilizzando heap LFUDA, il parametro maximum_object_size di squid.conf deve essere aumentato oltre il suo default di 4096 KB in modo da massimizzarne i potenziali miglioramenti al byte hit rate. Per maggiori informazioni su GDSF e LFUDA consultare le seguenti URLs: http://www.hpl.hp.com/techreports/1999/HPL-1999-69.html e http://fog.hpl.external.hp.com/techreports/98/HPL-98-173.html. La scelta dei tipi di Replacement Policy da attivare, viene effettuata al momento della configurazione dei parametri di compilazione di Squid
% ./configure --enable-removal-policies="elenco policy" |
dove l'elenco delle Policy da attivare contiene i nomi (case sensitive) dalle cartelle presenti nel source tree di Squid che ne contengono appunto i sorgenti. La Replacement Policy compilata di default é lru.
% ./configure --enable-removal-policies="lru heap" |
nell'esempio precedente abbiamo selezionato le Replacement Policy lru e heap
La configurazione delle Replacement policy in Squid avviene tramite i seguenti parametri
cache_replacement_policy policy memory_replacement_policy policy cache_swap_low low-water-mark cache_swap_high high-water-mark |
il TAG cache_replacement_policy
specifica la replacement policy da utilizzare per determinare quali oggetti devono essere eliminati e/o sostituiti quando è necessario del nuovo spazio nel Disk Storage. Il valore predefinito é lru, i valori possibili sono
lru heap GDSF heap LFUDA heap LRU |
ad esempio
cache_replacement_policy heap LFUDA |
il TAG memory_replacement_policy
specifica la replacement policy da utilizzare per determinare quali oggetti devono essere eliminati e/o sostituiti quando è necessario del nuovo spazio nel Memory Storage. Il valore predefinito é lru, i valori possibili sono
lru heap GDSF heap LFUDA heap LRU |
ad esempio
memory_replacement_policy heap GDSF |
il TAG cache_swap_low
specifica il valore ottimale di percentuale di utilizzo del Disk Storage desiderato, quando tale soglia viene superata, le Policy di Replacement vengono attivate. Il valore predefinito é 90%, ad esempio
cache_swap_low 85 |
il TAG cache_swap_high
specifica il valore massimo di percentuale di utilizzo del Disk Storage desiderato, quando tale soglia viene avvicinata, le Policy di Replacement vengono applicate in modo maggiormente aggressivo. Il valore predefinito é 95%, ad esempio
cache_swap_high 90 |