Memory Cache Options
TAG:
cache_mem (bytes)
Nota: este parâmetro não especifica o tamanho MÁXIMO dos processos. SOMENTE coloca um limite na quantidade de memória ADICIONAL que o Squid usa como um cache de memória de objetos. O Squid utiliza a memória para outras coisas também. Consulte a seção 8 FAQ SQUID para mais informações .
cache_mem especifica a quantidade ideal de memória a ser usada para:
- In-Transit objects
- Hot Objects
- Negative-Cached objects
Os dados para esses objetos são armazenados em blocos de 4 KB. Este parâmetro especifica o limite ideal superior no tamanho total de blocos de 4 KB alocados.
Objetos em trânsito têm prioridade sobre os demais. Quando o espaço adicional é necessário para a entrada de dados, o cache negativo e os
Hot Objects serão liberados. Em outras palavras, o
Negative-Cached objects e os
Hot Objects irão preencher qualquer espaço não utilizado não necessário para objetos em trânsito.
Se as circunstâncias o exigirem, esse limite será ultrapassado. Especificamente, se a sua taxa de requisição de entrada requer mais do que o especificado em
cache_mem para armazenar objetos em trânsito, o Squid vai exceder este limite para satisfazer às novas requisições. Quando a carga diminuir, os blocos serão liberados até que o ponto alto seja alcançado de novo. Depois disso, os blocos serão usados para armazenar
Hot Objects.
Se o cache de memória compartilhada está habilitado, o Squid não usa o espaço compartilhado de cache para objetos em trânsito, mas eles ainda consomem tanta memória local quanto for necessária. Para mais detalhes sobre o cache de memória compartilhada, consulte
memory_cache_shared.
Default:
cache_mem 256 MB
TAG:
maximum_object_size_in_memory (bytes)
Objetos maiores que este tamanho, não serão mantidos no cache de memória. Ele deve ser alto o suficiente para manter os objetos acessado frequentemente na memória, para melhorar o desempenho, porém, baixo o suficiente para manter objetos maiores acumulados no
cache_mem.
Default:
Maximum_object_size_in_memory 512 KB
TAG:
memory_cache_shared on | off
Controla se o cache de memória é compartilhado entre os processos do SMP.
O cache de memória compartilhada é destinado a ocupar tantos bytes no
cache_mem e substitui o cache de memória não compartilhada, embora algumas entidades podem ainda ter cache localmente por processos (por exemplo, objetos em trânsito internos e externos podem ser servidos a partir de um cache de memória local, mesmo se a memória compartilhada está habilitada) .
Por default, o cache de memória é compartilhado se, e somente se, satisfizer as seguintes condições: o Squid funciona em modo SMP com vários processos,
cache_mem for positivo, e o ambiente do Squid suporta as primitivas IPC necessárias (por exemplo, segmentos de memória compartilhada POSIX e operações atômicas
GCC-style).
Para evitar o bloqueio de blocos, a memória compartilhada usa algoritmos oportunistas, que não garantem que cada entidade cacheável que poderia ter sido compartilhada entre os processos do SMP vai realmente ser compartilhada.
Atualmente, entidades superiores a 32 KB de tamanho não podem ser compartilhadas.
Default:
on; quando suportado se fazendo cache de memória com vários processos do SMP.
TAG:
memory_cache_mode
Controla quais objetos para manter na memória cache (cache_mem).
always :: mantém sempre na memória os objetos mais recentemente buscados no cache no disco (default).
disk :: somente são mantidos na memória, o que significa que um objeto deve, primeiro, ser armazenado em cache no disco e, em seguida, se bater uma segunda vez antes de ser cacheado na memória.
network :: somente objetos buscados na rede são mantidos na memória.
Default:
memory_cache_mode always
TAG:
memory_replacement_policy
Parâmetro de política de substituição de memória. Determina quais objetos são removidos da memória quando um espaço na memória for necessário.
Veja
cache_replacement_policy para mais detalhes.
Default:
memory_replacement_policy lru
Disk Cache Options
TAG:
cache_replacement_policy
Parâmetro de política de substituição de cache, que determina quais objetos são despejados (substituídos) quando um espaço em disco for necessário.
lru :: política original do Squid com base na política LRU.
heap GDSF :: tamanho duplo de frequência.
heap LFUDA :: usado menos frequentemente, de acordo com o uso dinâmico.
heap LRU :: política LRU implementada usando uma pilha.
Aplica-se a todas as linhas
cache_dir listados abaixo.
* As políticas LRU mantêm objetos recentemente referenciados.
A política
heap GDSF otimiza a taxa de acerto de objetos, mantendo objetos menos populares no cache para que eles tenham melhor chance de conseguir um Hit. Atinge uma taxa de acertos de bytes inferior à política LFUDA, embora evite objetos maiores (possivelmente mais populares).
A política
heap LFUDA mantém os objetos populares em cache, independentemente do seu tamanho e, portanto, optimiza a taxa de acerto de bytes, já que um grande número de objetos populares impedirão que os objetos um pouco menos populares sejam armazenados em cache.
Ambas as políticas utilizam um mecanismo de uso dinâmico, que impedem que a poluição do cache possa ocorrer baseada na frequência das políticas de substituição.
Nota: se estiver usando a política de substituição LFUDA, você deve aumentar o valor do
maximum_object_size acima do seu default de 4 MB, para maximizar a taxa de acerto potencial de LFUDA.
Para mais informações sobre a substituição de cache GDSF e LFUDA, veja:
Default:
cache_replacement_policy lru
TAG:
cache_dir
Uso:
cache_dir Type Directory-Name Fs-specific-data [options]
Você pode especificar várias linhas de
cache_dir para espalhar o cache entre as diferentes partições de disco.
Type :: especifica o tipo de sistema de armazenamento usado.
ufs é o default. Para ativar qualquer um dos outros sistemas de armazenamento, veja a opção de compilação:
--enable-storeio
Directory :: é um diretório de nível superior, onde troca cache de arquivos que serão armazenados. Se você quiser usar um disco inteiro para o cache, pode ser o diretório do ponto de montagem. O diretório deve existir e ter permissão de escrita para o Squid. O Squid não vai criar esse diretório para você.
Em configurações SMP, o
cache_dir não deve preceder as opções dos processos SMP e deve usar macros de configuração ou condicionais para fornecer o cache no disco, a cada processo interessado em cache dedicado.
Armazenamento
ufs: é o velho formato de armazenamento do Squid.
cache_dir ufs Directory-Name Mbytes L1 L2 [options]
Mbytes :: é a quantidade de espaço em disco (MB) para utilizar no diretório. O default é 100 MB. Altere isso para adequar à sua configuração. Não coloque o tamanho total de sua unidade de disco aqui. Em vez disso, se você quiser o Squid usando todo o disco rígido, subtraia 20% do valor total do disco.
L1 :: é o número de subdiretórios de primeiro nível que serão criados. O default é 16.
L2 :: é o número de subdiretórios de segundo nível que serão criados em cada diretório de primeiro nível. O default é 256.
Armazenamento
aufs: usa o mesmo formato de armazenamento que o
ufs, utilizando
threads POSIX para evitar o bloqueio do processo principal de I/O em disco do Squid. Era conhecido anteriormente como
async-io.
cache_dir aufs Directory-Name Mbytes L1 L2 [options]
Veja descrições dos argumentos
ufs acima.
Armazenamento
diskd: utiliza o mesmo formato de armazenamento que o
ufs, mas utilizando um processo separado para evitar o bloqueio do processo principal de I/O em disco do Squid.
cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]
Veja descrições dos argumentos
ufs acima.
Q1 especifica o número de pedidos de I/O não reconhecidos quando o Squid para de abrir novos arquivos. Se muitas mensagens estiverem nas filas de espera, o Squid não vai abrir novos arquivos. O default é 64.
Q2 especifica o número de mensagens não confirmadas quando o Squid começa a bloquear. Se muitas mensagens estiverem nas filas de espera, o Squid bloqueia até receber algumas respostas. O default é 72.
Quando
Q1 <
Q2 (default , o diretório de cache é otimizado para menores tempos de resposta à custa de uma diminuição da taxa de hits. Se
Q1 >
Q2, o diretório de cache é otimizado para maior taxa de acertos à custa de um aumento no tempo de resposta.
Armazenamento
rock:
cache_dir rock Directory-Name Mbytes [options]
O tipo
rock é um armazenamento de estilo banco de dados. Todas as entrada no cache são armazenadas em um arquivo de "banco de dados", usando faixas de tamanho fixo, uma entrada por
slot. O tamanho da base de dados é especificado em MB. O tamanho do
slot é especificado em bytes usando a opção
max-size. Ver abaixo para mais informações sobre a opção
max-size.
Se possível, utilizando armazenamento rock, o Squid cria um processo dedicado chamado de
disker para evitar o bloqueio de processos de I/O do Squid no disco. Um
disker é criad0 para cada
cache_dir rock. Diskers são criados somente quando o Squid, em execução no modo daemon, tem suporte para o módulo IpcIo de I/O no disco .
swap-timeout=msec :: o Squid não vai escrever um
miss ou ler um
hit do disco se estima que a operação de SWAP vai demorar mais do que o número especificado de milissegundos. Por default e quando ajustado para zero, desativa o tempo limite de execução de I/O do disco. Essa opção é ignorada quando há bloqueio do módulo I/O, porque bloquear o I/O síncrono, não permite que o Squid estime o tempo de espera para uso SWAP.
max-swap-rate=swaps/sec :: limita artificialmente o acesso ao disco usando o limite da taxa de I/O especificado. Fazer SWAP nas requisições faria a taxa média de I/O exceder o limite de atraso.
Individualizar a SWAP nas requisições (ou seja, hits ou reads) não são atrasos, mas elas contribuem para a média da taxa de SWAP e, uma vez que são colocadas na mesma fila FIFO como permuta das requisições, elas podem esperar mais tempo se a taxa máxima de troca (swap) for menor. Isto é necessário em sistemas de arquivos que tem buffer
too-many e, em seguida, começam a bloquear o Squid e outros processos ao fazer essas gravações para o disco.
Essa opção é normalmente utilizada em conjunto com
swap-timeout, para evitar atrasos excessivos e estouros de fila quando a demanda excede a largura de banda disponível no disco. Por default e quando ajustado para zero, desativa o tempo limite de execução de I/O do disco. Atualmente é suportada apenas pelo módulo IpcIo.
Armazenamento coss
NP :: sistema de arquivos COSS no Squid 3 tem sido considerado demasiado instável para uso em produção e tem sido assim removido nesta versão.
Esperamos que ele possa ser utilizado novamente em breve.
block-size=n define o "tamanho do bloco" para o
cache_dir COSS.
O Squid usa números de arquivos como números de blocos. Números de arquivos estão limitados a 24 bits, o tamanho do bloco determina o tamanho máximo da partição COSS. O Default é 512 bytes, o que leva a um tamanho máximo de cache_dir 512 << 24, ou 8 GB.
Nota: você não deve alterar o tamanho do bloco
coss após o Squid ter escrito alguns objetos para o
cache_dir.
O armazenamento de arquivos
coss mudou a partir da versão 2.5. Agora ele usa um arquivo chamada
stripe nos nomes dos diretórios na configuração e isso será criado por
squid -z.
Opções comuns
no-store :: não há novos objetos que devem ser guardados para este
cache_dir.
min-size=n :: refere-se ao tamanho mínimo de objetos em bytes que este
cache_dir vai aceitar. É usado para restringir um
cache_dir a um único armazenamento de grandes objetos (por exemplo,
aufs), enquanto os outros
storedirs são otimizados para objetos menores (por exemplo,
COSS). O default é 0.
max-size=n :: refere-se ao tamanho máximo do objeto em bytes deste
cache_dir. Ele é usado para selecionar o
cache_dir que irão armazenar os objetos.
Nota: para otimizar a utilização do limite máximo de tamanho que você deve colocar as linhas
cache_dir com o menor valor no
max-size primeiro e aqueles com nenhuma especificação máxima de tamanho devem ser passados por último.
Nota para coss, o
max size deve ser inferior a
COSS_MEMBUF_SZ, que pode ser alterado com a opção
-with-coss-membuf-size=N.
Remova os comentários e ajuste o seguinte parâmetro para adicionar um diretório de cache de disco.
# cache_dir ufs /etc/squid3/var/cache/squid 100 16 256
TAG:
store_dir_select_algorithm
Defina para
round-robin como uma alternativa.
Default:
store_dir_select_algorithm least-load
TAG:
max_open_disk_fds
Para evitar ter gargalo de I/O no disco, o Squid pode opcionalmente ignorar o cache no disco se mais do que esta quantidade de descritores de arquivos em disco estiverem abertas.
O valor 0 indica que não há limite.
Default:
max_open_disk_fds 0
TAG:
minimum_object_size (bytes)
Objetos menores que esse tamanho não serão salvos no disco. O valor é especificado em kilobytes, e o default é 0 KB, o que significa que não há mínimo.
Limite default do tamanho máximo de objetos armazenados no disco.
onde o tamanho máximo não está definido.
Se você deseja obter uma alta taxa de acertos (hits), você deve, provavelmente, aumentar este valor (32 MB de objetos atingem a contagem de 3200 10KB hits).
Se você quiser aumentar a taxa de acertos mais do que você quer economizar largura de banda que você deve deixar este valor baixo.
Nota: se estiver usando a política de substituição LFUDA, você deve aumentar este valor para maximizar a taxa de acerto hit de LFUDA!
abaixo para uma discussão sobre essa política.
Tags baixa e alta para a substituição de objetos em cache. A substituição começa quando o uso da SWAP (em disco) está acima da marca da taxa alta, não obstante, as tentativas para manter uma utilização próxima da taxa baixa.
Com a utilização da SWAP perto da taxa alta, a substituição torna-se mais agressiva. Se a utilização está perto da taxa baixa, menos substituição é feita a cada vez.
Os padrões são 90% e 95%. Se você tem um
grande, 5% pode equivaler a centenas de MB. Se este for o caso, você pode querer definir esses números mais próximos um do outro.