Configurar definições avançadas da cache de conteúdo no Mac
Pode usar parâmetros avançados de configuração para otimizar a cache de conteúdo para a sua configuração de rede.
É possível definir as parâmetros avançados de configuração para a cache de conteúdo usando a linha de comando no Terminal ou modificando o valor das chaves no ficheiro /Library/Preferences/com.apple.AssetCache.plist. Para que algumas alterações sejam aplicadas, a cache de conteúdo tem de ser interrompida e reiniciada.
Usar o Terminal para definir parâmetros avançados de configuração
Na aplicação Terminal , no Mac, pode definir parâmetros avançados de configuração usando o comando defaults
, seguido do comando sudo AssetCacheManagerUtil reloadSettings
. Use o comando AssetCacheManagerUtil settings
para visualizar as definições predefinidas (não são avançadas).
Encontrará mais informação acerca do comando AssetCacheManagerUtil
em Gerir a cache de conteúdo a partir da linha de comandos e na página man do AssetCacheManagerUtil(8).
Pode configurar chaves simples e complexas com o comando defaults
.
Por exemplo, para definir a chave Interface
como en1, execute este comando como administrador:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
ListenRanges
é uma chave complexa que abrange um conjunto de dicionários. Por exemplo, execute este comando como um administrador para definir dois intervalos de endereços IP para a chave ListenRanges:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist ListenRanges '( { first = 10.0.0.1; last = 10.0.0.254; }, { first = 10.1.0.1; last = 10.1.0.254; } )'
Após usar o comando defaults, certifique-se de que executa o seguinte comando para recarregar as definições da cache de conteúdo:
$ sudo AssetCacheManagerUtil reloadSettings
Encontrará mais informação acerca do comando defaults
na página man defaults(1).
Chaves e valores plist de configuração da cache
Importante: não altere nenhuma definição no ficheiro com.apple.AssetCache.plist, para além daquelas que estão descritas na tabela abaixo.
Um chave pode ter um valor que está fixado entre dois valores. O valor da chave pode ser qualquer número no intervalo entre os valores inferior e superior. Se for definido abaixo do valor do limite inferior, é usado o valor do limite inferior. Se for definido abaixo do valor do limite superior, é usado o valor do limite superior. Por exemplo, PeerDownloadTimeout está fixado entre 5 e 300. Se estiver definido como 301 ou 1000, então o valor é definido como 300. Se estiver definido como 4 ou -10, então o valor é definido como 5.
Algumas alterações têm efeito após executar AssetCacheManagerUtil reloadSettings
; outras requerem que pare e reinicie a cache de conteúdo. As únicas chaves que suportam reloadSettings são as que podem ser definidas no painel de preferências “Cache de conteúdo” (conforme apresentado na tabela abaixo). Para definir os valores no painel de preferências da “Cache de conteúdo”, selecione o menu Apple > Preferências do Sistema, clique em Partilha e, em seguida, selecione “Cache de conteúdo”.
Chave | Descrição | Predefinição | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Quando o conteúdo é limpo da cache de conteúdo porque está a ficar com pouco espaço em disco e o conteúdo que foi limpo foi adicionado à cache de conteúdo num número inferior de dias que este, recebe um aviso de espaço insuficiente. | 30 (dias) | |||||||||
AllowCacheDelete | Permita que o conteúdo seja limpo automaticamente da cache quando o computador necessita de espaço em disco para outras aplicações. | Sim | |||||||||
AllowImports | Permitir pedidos de importação (envio). | Sim | |||||||||
AllowPersonalCaching | Permite a colocação em cache dos dados em iCloud do utilizador. Pelo menos, uma das chaves AllowPersonalCaching ou AllowSharedCaching tem de estar definida como Sim. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | Sim | |||||||||
AllowSharedCaching | Controla a colocação em cache de conteúdo que não está em iCloud como aplicações e atualizações de software. Pelo menos, uma das chaves AllowPersonalCaching ou AllowSharedCaching tem de estar definida como Sim. | Sim | |||||||||
AllowWirelessPortable | Permitir que os computadores que têm ligações à rede Wi-Fi executem a cache de conteúdo. | Sim | |||||||||
CacheLimit | O número máximo de bytes de espaço no disco que será usado para a cache de conteúdo. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | 0 (ilimitado) | |||||||||
DatabaseUpdateInterval | O conteúdo em cache grava alterações na sua base de dados no disco com que frequência. Aumentar o intervalo aumenta o risco de perda do conteúdo em cache após uma falha de energia. O máximo são 3600 segundos (1 hora). Um intervalo de 0 significa atualizar sempre a base de dados automaticamente, sem atraso, o que diminui o desempenho. | 5 (segundos) | |||||||||
DataPath | O caminho para o diretório usado para armazenar o conteúdo em cache. Alterar esta definição manualmente não move automaticamente o conteúdo em cache da antiga para a nova localização. Para mover o conteúdo automaticamente, use o painel de preferências “Cache de conteúdo” (consulte Selecionar um volume para colocar em cache). Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | O número mínimo de bytes por segundo que os clientes devem manter ao descarregar conteúdo da cache de conteúdo. A cache de conteúdo interrompe as descargas que transfiram dados mais lentamente do que esta velocidade. O valor mínimo fixo é de 1000 bytes por segundo. | 8000 (bytes por segundo) | |||||||||
DownloadTimeout | Durante quanto tempo, em segundos, permitir que uma descarga para um cliente esteja inativa antes de desistir. A valor mínimo fixo é de 10 segundos. | 180 (segundos) | |||||||||
ImportMaxRate | O número máximo de bytes por segundo a que a cache de conteúdo recebe dados de cada cliente. Um valor de 0 indica um número ilimitado de bytes por segundo. | 0 (bytes por segundo) | |||||||||
ImportMinRate | O número mínimo de bytes por segundo que os clientes devem manter ao importar (enviar) conteúdo. A cache de conteúdo interrompe as importações que transfiram dados mais lentamente do que esta taxa. A taxa mínima é de 100 bytes por segundo. | 2000 (bytes por segundo) | |||||||||
ImportRateAttenuation | A percentagem de atenuação adicionada ao tempo de envio. A fixação mínima é 0% de atenuação. Valores demasiado elevados excederão a chave ImportTimeout e provocarão falhas. | .20 (percentagem) | |||||||||
ImportTimeout | Durante quanto tempo, em segundos, permitir que uma importação (envio) de um cliente fique inativa antes de desistir. O mínimo são 10 segundos. | 300 (segundos) | |||||||||
Interface | O nome BSD de uma interface de rede a ser usada pela cache de conteúdo. | Ouvir em todas as interfaces | |||||||||
ListenRanges | Uma cadeia de dicionários que descreve o intervalo de endereços IP de cliente a servir. Veja abaixo um exemplo da chave ListenRanges. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | nenhum | |||||||||
ListenRangesOnly | Se ListenRangesOnly estiver definido como verdadeiro, a cache de conteúdo fornece conteúdo apenas a clientes nos intervalos especificados pela chave ListenRanges. Se pretende usar a chave ListenRangesOnly, deve também especificar a chave ListenRanges. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | Não | |||||||||
ListenWithPeersAndParents | Indica se a cache de conteúdo é registada com união das chaves ListenRanges, PeerListenRanges e Parents ou apenas com a chave ListenRanges. Tenha em conta que ListenRanges poderá ser gerada automaticamente de LocalSubnetsOnly, e que PeerListenRanges poderá ser gerada automaticamente de PeerLocalSubnetsOnly. | O valor predefinido depende do computador:
| |||||||||
LocalSubnetsOnly | Se a cache de conteúdo deve ou não oferecer conteúdo apenas a clientes na mesma rede local imediata do que a cache de conteúdo, em vez de a clientes em todas as redes locais acessíveis pela cache de conteúdo. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | Sim | |||||||||
LogClientIdentity | Determina se a cache de conteúdo deve ou não registar o endereço IP e o número da porta dos clientes que estão a solicitar o conteúdo. | Não | |||||||||
MaxConcurrentClients | Este limite serve para impedir que a cache de conteúdo esgote os descritores de ficheiro. A Apple não garante que uma cache de conteúdo consiga atingir 3400 clientes simultâneos. | 3400 | |||||||||
MaxParentDepth | O número máximo de vezes, para um único pedido, que uma cache de conteúdo filho reencaminhará o pedido para uma cache de conteúdo pai. Os pedidos que são muito profundos (a cadeia de reencaminhamento é demasiado longa) são forçados para a origem em vez de para o pai. | 8 | |||||||||
MaxPeersToQuery | O número máximo de caches de conteúdo peers para solicitar por conteúdo. | 0 (ilimitado) | |||||||||
MetricsInterval | A frequência (em segundos) com que deve ser adicionada uma linha à base de dados de métricas em /Biblioteca/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Fixado entre 1 e 60 segundos, inclusive. As métricas podem ser visualizadas no painel Cache do Monitor de Atividade. | 60 (segundos) | |||||||||
MetricsMaxAge | As métricas anteriores a este valor são removidas da base de dados de métricas diariamente. O valor mínimo fixo é de 30 dias. | 30 (dias) | |||||||||
OriginDownloadTimeout | Durante quanto tempo, em segundos, permitir que uma descarga dos servidores da Apple fique inativa antes de desistir (e, possivelmente, tentar a descarga novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
OriginUploadTimeout | Durante quanto tempo, em segundos, permitir que um envio para um servidor de origem fique inativo antes de desistir. Fixado entre 5 e 3600 segundos, inclusive. | 600 | |||||||||
ParentDownloadTimeout | Durante quanto tempo, em segundos, permitir que uma descarga de uma cache de conteúdo pai fique inativa antes de desistir (e, possivelmente, tentar a descarga novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
ParentRetryInterval | Durante quanto tempo, em segundos, ignorar as caches de conteúdo pais depois de terem acumulado três falhas consecutivas de notificação ou consulta. Fixado entre 30 e 3600 segundos, inclusive. | 900 | |||||||||
Pais | Uma lista de endereços IP locais de caches de conteúdo de onde esta cache deve descarregar e enviar conteúdo em vez de descarregar de e enviar para a Apple diretamente. Os endereços inválidos e os endereços de computadores que não são caches de conteúdo são ignorados. As caches pai que ficam indisponíveis são ignoradas de acordo com o ParentRetryInterval. Se todas as caches de conteúdo ficarem indisponíveis, a cache de conteúdo será descarregada de ou carregada para a Apple diretamente até que uma cache de conteúdo pai fique disponível novamente. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | nenhum | |||||||||
ParentSelectionPolicy | A política a usar ao selecionar entre mais do que uma cache de conteúdo pai configurada. Com cada política, as caches de conteúdo que estão temporariamente indisponíveis são ignoradas. As políticas são:
Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | Round robin | |||||||||
ParentUploadTimeout | Durante quanto tempo, em segundos, permitir que um envio para uma cache de conteúdo pai fique inativa antes de desistir. Fixado entre 5 e 3600 segundos, inclusive. | 600 | |||||||||
PeerDownloadTimeout | Durante quanto tempo, em segundos, permitir que uma descarga de uma cache de conteúdo peer fique inativa antes de desistir (e, possivelmente, tentar a descarga novamente). Fixado entre 5 e 300 segundos, inclusive. | 30 | |||||||||
PeerFilterRanges | Quando PeerFilterRanges é uma cadeia (de entradas como as de ListenRanges), a cache de conteúdo filtra e ordena a sua lista de peers de acordo com os intervalos na cadeia. A cache de conteúdo consulta apenas os peers que estão em PeerFilterRanges. A filtragem e a ordenação são aplicadas antes de truncar a lista de pares nas entradas MaxPeersToQuery (se essa definição estiver presente). Quando PeerFilterRanges é uma cadeia vazia, a cache de conteúdo não questiona nenhum dos peers. Quando PeerFilterRanges é um valor boleano verdadeiro, a cache de conteúdo faz o mesmo que foi descrito em cima, mas usa ListenRanges em vez do valor PeerFilterRanges. Quando PeerFilterRanges é de qualquer outro tipo ou o valor não existe, a cache de conteúdo não filtra nem ordena a sua lista de peers antes de truncar a lista nas entradas MaxPeersToQuery. PeerFilterRanges afeta apenas a lista de outras caches de conteúdo que esta cache de conteúdo consulta para conteúdo e descargas. Não tem efeito em pedidos recebidos para conteúdo de quaisquer outras caches de conteúdo. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | nenhum | |||||||||
PeerListenRanges | Quando PeerListenRanges é uma cadeia de dicionários em que cada dicionário representa um intervalo de endereços IP, a cache de conteúdo responderá com êxito apenas a consultas de cache parceiras de caches de conteúdo com um endereço IP contido dentro desta cadeia de intervalos. Quando PeerListenRanges é uma cadeia vazia, a cache de conteúdo responderá com um erro às consultas de cache de qualquer outra cache de conteúdo. Quando PeerListenRanges tem um valor boleano verdadeiro, a cache de conteúdo usará o valor ListenRanges em vez do valor PeerListenRanges para decidir a que outras caches de conteúdo responderá com sucesso a consultas de cache. Quando PeerListenRanges tem qualquer outro tipo ou o valor não existe, a cache de conteúdo responde com sucesso a consultas de cache de todas as outras caches de conteúdo. PeerListenRanges afeta apenas a que caches de conteúdo esta cache de conteúdo responderá com sucesso a consultas de cache. Não tem efeito na lista de peers que esta cache de conteúdo questionará por conteúdo e conteúdos de descarga. Quando uma cache de conteúdo responde com um erro de uma consulta de cache, a cache de conteúdo que consulta marca a cache de conteúdo que responde como hostil e não tenta consultá-la novamente até PeerRetryInterval expirar. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | nenhum | |||||||||
PeerLocalSubnetsOnly | Se a cache de conteúdo deve ou não apenas efetuar o peer com outras caches de conteúdo na mesma rede local imediata, em vez de com as caches de conteúdo que usam o mesmo endereço IP público que este computador. Quando PeerLocalSubnetsOnly é verdadeiro, a cache de conteúdo apenas consulta e responde com sucesso a consultas de par de caches de conteúdo que estão na mesma rede local imediata. Quando PeerLocalSubnetsOnly é verdadeiro, substitui a configuração de PeerFilterRanges e PeerListenRanges. Quando PeerLocalSubnetsOnly é falso, a cache de conteúdo difere para PeerFilterRanges e PeerListenRanges para a configuração das restrições de peering. Quando PeerLocalSubnetsOnly é verdadeiro e a rede muda, as restrições de peering da rede local atualizam adequadamente. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | Sim | |||||||||
PeerNotifyTimeout | Aguardar durante quanto tempo, em segundos, por respostas das caches de conteúdo peers ao procurá-las no arranque. Fixado entre 5 e 300 segundos, inclusive. | 30 | |||||||||
PeerQueryTimeout | Aguardar durante quanto tempo, em segundos, por respostas das cache de conteúdo peers ao consultá-las acerca de conteúdos nas suas caches. Fixado entre 1 e 60 segundos, inclusive. | 5 | |||||||||
PeerRetryInterval | Durante quanto tempo, em segundos, ignorar as caches de conteúdo parceiras depois de terem acumulado três falhas consecutivas de notificação ou consulta. Depois de o intervalo de tentativas expirar, as caches de conteúdo peers são restauradas para a lista de peers para consultar sobre conteúdo. Fixado entre 30 e 3600 segundos, inclusive. | 900 (segundos) | |||||||||
PersonalCacheLimit | Limite quanto espaço no disco a cache de conteúdo usará para os dados iCloud em cache, em bytes. A PersonalCacheLimit não pode exceder CacheLimit. | 0 (ilimitado) | |||||||||
Porta | O número da porta TCP em que a cache de conteúdo aceita pedidos de envio ou descarga. | 0 (usar uma porta aleatória) | |||||||||
PruneAffinitiesAge | As afinidades de utilizador mais antigas do que este número de dias são removidas automaticamente da cache de afinidades. As afinidades de utilizador fornecem pistas aos clientes sobre onde os conteúdos estão colocados em cache, para um melhor desempenho. Eliminar as afinidades de utilizador não tem efeito nos conteúdo em cache. A fixação mínima são 7 dias. | 30 (dias) | |||||||||
PruneAffinitiesInterval | Durante quanto tempo, em dias, a cache de conteúdo deve procurar e remover afinidades de utilizador mais antigas do que PruneAffinitiesAge dias. As afinidades de utilizador, usadas apenas por iCloud, fornecem pistas aos clientes sobre onde os conteúdos estão colocados em cache, para um melhor desempenho. Eliminar as afinidades de utilizador não tem efeito nos conteúdo em cache. A fixação mínima é um dia. | 7 (dias) | |||||||||
PruneAssetsAge | Conteúdo que não foi solicitado neste número de dias é removido automaticamente da cache de conteúdo. A fixação mínima são 7 dias. | 120 (dias) | |||||||||
PruneAssetsInterval | Durante quanto tempo, em dias, a cache de conteúdo deve procurar e remover conteúdo mais antigo do que PruneAssetsAge dias. A fixação mínima é um dia. | 7 (dias) | |||||||||
PublicRanges | Intervalos de endereços IP públicos que os servidores na nuvem devem usar para fazer coincidir os clientes com as caches de conteúdo. Também pode definir este valor no painel de preferências da “Cache de conteúdo”. | nenhuma predefinição | |||||||||
ReservedVolumeSpace | O número mínimo de bytes de espaço livre no disco a ser mantido para o volume que armazena o conteúdo em cache. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | Durante quanto tempo, em segundos, a cache de conteúdo deve tentar anular o registo ao ser interrompida. A anulação do registo informa os clientes de que a cache de conteúdo já não está disponível, para que deixem de tentar usar essa cache de conteúdo definitivamente (ou até que a cache de conteúdo seja recomeçada). Fixado entre 1 e 60 segundos, inclusive. | 10 (segundos) | |||||||||
Verboso | Quando Verbose=true a cache de conteúdo regista um pouco mais de informação sobre as suas atividades. O aumento nos registos pode reduzir o desempenho. Esta definição não é recomendada para utilização a longo prazo. Use o comando Por exemplo: Também pode usar a aplicação Consola para visualizar os registos. | Não |
Exemplo de chave ListenRanges
Pode usar a chave ListenRanges para especificar as caches de conteúdo preferidas naquelas topologias de rede avançadas em que várias caches de conteúdo são usadas por detrás do mesmo endereço IP público.
Por exemplo:
caching1.example.com usa a chave ListenRanges para especificar um intervalo de 10.0.0.1 até 10.0.0.254 e 10.1.0.1 até 10.1.0.254, e define a chave ListenRangesOnly como No;
caching2.example.com usa a chave ListenRanges para especificar um intervalo de 10.1.0.1 até 10.1.0.39 (tenha em conta a sobreposição com o segundo intervalo de caching1) e define a chave ListenRangesOnly como No;
se um cliente cujo endereço IP é 10.0.0.10 solicitar conteúdo, este é direcionado para caching1;
se um cliente cujo endereço IP é 10.1.0.10 solicitar um conteúdo, este é direcionado para caching1 ou caching2, selecionado aleatoriamente;
se um cliente cujo endereço IP é 10.2.0.10 solicitar um conteúdo, este é direcionado para caching1 ou caching2, selecionado aleatoriamente;
se caching1 for encerrado ou ficar sem energia mas caching2 continuar disponível, todos os clientes são direcionados para caching2.
Ficheiro plist de exemplo
O seguinte é um exemplo do ficheiro /Library/Preferences/com.apple.AssetCache.plist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CacheLimit</key>
<!-- Set a CacheLimit of 200 GB -->
<integer>200000000000</integer>
<key>DataPath</key>
<string>/Volumes/BigDisk/Library/Application Support/Apple/AssetCache/Data</string>
<key>Interface</key>
<string>en1</string>
<key>ListenRanges</key>
<array>
<dict>
<key>type</key>
<string>IPv4</string>
<key>first</key>
<string>10.1.2.1</string>
<key>last</key>
<string>10.1.2.254</string>
</dict>
<dict>
<key>type</key>
<string>IPv6</string>
<key>first</key>
<string>2001:500:88:200::1</string>
<key>last</key>
<string>2001:500:88:200::99</string>
</dict>
</array>
<key>LogClientIdentity</key>
<string>true</string>
<key>Port</key>
<integer>12345</integer>
<key>ReservedVolumeSpace</key>
<!-- Set the ReservedVolumeSpace to 1 GB -->
<integer>1000000000</integer>
</dict>
</plist>