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.
Definir definições avançadas
Pode configurar algumas definições avançadas para o serviço de cache de conteúdo em Definições do Sistema (macOS 13 ou posterior) ou Preferências do Sistema (macOS 12.0.1 ou anterior) > Partilha > Cache de conteúdo. De seguida, prima e mantenha premida a tecla Opção e selecione “Opções avançadas”.
Pode configurar definições ainda mais avançadas com a aplicação Terminal no Mac com o comando defaults
seguido pelo comando sudo AssetCacheManagerUtil reloadSettings
. Use o comando AssetCacheManagerUtil settings
para visualizar as definições predefinidas (não são avançadas).
Pode configurar chaves simples e complexas com o comando defaults
.
Por exemplo, para codificar o número de porta (50000) para um número de porta não dinâmico, o número de porta deve ser qualquer número entre 49192 e 65535, e deve executar este comando como administrador:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Port -int 50000
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
Chaves e valores plist de configuração de 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 valores no painel de preferências da “Cache de conteúdo”:
macOS 13 ou posterior: selecione menu Apple > Definições do Sistema > Geral > Partilha > Cache de conteúdo.
macOS 12.0.1 ou anterior: selecione menu Apple > Preferências do Sistema > Partilha > Cache de conteúdo.
Chave | Descrição | Valor predefinido | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Avisa quando o conteúdo é limpo da cache de conteúdo porque está a ficar com pouco espaço de armazenamento e o conteúdo que foi limpo foi adicionado à cache de conteúdo num número inferior de dias a este, recebe um aviso de espaço insuficiente. | 30 (dias) | |||||||||
AllowCacheDelete | Permitir que o conteúdo seja limpo automaticamente da cache quando o computador necessita de espaço de armazenamento para outras aplicações. Para melhor eficácia da cache de conteúdo, desative esta definição. | Sim | |||||||||
AllowImports | Permitir pedidos de importação (envio). | Sim | |||||||||
AllowPersonalCaching | Permitir 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 nas definições de 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 portáteis Mac que têm ligações à rede Wi-Fi executem a cache de conteúdo. | Sim | |||||||||
CacheLimit | Especifica o número máximo de bytes de espaço de armazenamento usado para a cache de conteúdo. Também pode definir este valor nas definições de cache de conteúdo. | 0 (ilimitado) | |||||||||
DatabaseUpdateInterval | Especifica com que frequência a cache de conteúdo guarda alterações na base de dados de armazenamento. 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 | Especifica 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 definições “Cache de conteúdo”. Também pode definir este valor nas definições de cache de conteúdo. | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | Mostra notificações para avisos de cache de conteúdo. Para melhor eficácia da cache de conteúdo, ative esta definição. | Não | |||||||||
DownloadMinRate | Especifica 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 | Especifica durante quanto tempo, em segundos, permitir que uma descarga para um cliente esteja inativa antes de desistir. O valor mínimo fixo é de 10 segundos. | 180 (segundos) | |||||||||
ImportMaxRate | Especifica 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 | Especifica 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 | Especifica a percentagem de atenuação adicionada ao tempo de envio. A fixação mínima é 0% de atenuação. Valores demasiado elevados excedem a chave ImportTimeout e provocam falhas. | .20 (percentagem) | |||||||||
ImportTimeout | Especifica 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 | Especifica o nome BSD de uma interface de rede a ser usada pela cache de conteúdo. Por exemplo, en0. Também ouve sempre na interface de loopback (localhost). | Ouvir na interface selecionada | |||||||||
KeepAwake | Mantém o computador ativado quando a cache de conteúdo está ativada. Para melhor disponibilidade da cache de conteúdo, ative esta definição. Assinale a opção “Impedir o computador de ficar em modo de pausa quando o monitor estiver desligado” em “Poupança de Energia” nas Definições do Sistema (no macOS 13 ou posterior) ou nas Preferências do Sistema (no macOS 12.0.1 ou anterior) | Não | |||||||||
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. A subchave tipo já não é necessária e é ignorada se estiver presente. Também pode definir este valor nas definições de cache de conteúdo. | nenhuma | |||||||||
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 nas definições de cache de conteúdo. | Não | |||||||||
ListenWithPeers AndParents | 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 | Indica se a cache de conteúdo deve 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 nas definições de cache de conteúdo. | Sim | |||||||||
LogClientIdentity | Determina se a cache de conteúdo deve registar o endereço IP e o número da porta dos clientes que estão a solicitar o conteúdo. | Não | |||||||||
MaxConcurrentClients | Especifica o número máximo de clientes que uma cache de conteúdo pode suportar. A Apple não garante que uma cache de conteúdo consiga atingir 3400 clientes simultâneos. | 3400 | |||||||||
MaxParentDepth | Especifica o número máximo de vezes, para um único pedido, que uma cache de conteúdo filho reencaminha 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 | Especifica o número máximo de caches de conteúdo peers para solicitar por conteúdo. | 0 (ilimitado) | |||||||||
MetricsInterval | Especifica a frequência (em segundos) com que deve ser adicionada uma linha à base de dados das métricas em /Library/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 | Especifica 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 | Especifica durante quanto tempo, em segundos, permitir que um envio para um servidor de origem fique inativo antes de desistir. Fixado entre 5 e 36000 segundos, inclusive. | 600 | |||||||||
ParentDownloadTimeout | Especifica 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 | Especifica 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 | |||||||||
Parents | 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 é 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 nas definições de cache de conteúdo. | nenhuma | |||||||||
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 nas definições de cache de conteúdo. | Round robin | |||||||||
ParentUploadTimeout | Especifica 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 | Especifica durante quanto tempo, em segundos, permitir que uma descarga de uma cache de conteúdo peers 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 questionará 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. A subchave tipo já não é necessária e é ignorada se estiver presente. Também pode definir este valor nas definições de cache de conteúdo. | nenhuma | |||||||||
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 responde 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 responde 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 usa o valor ListenRanges em vez do valor PeerListenRanges para decidir a que outras caches de conteúdo responde 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 responde com sucesso a consultas de cache. Não tem efeito na lista de peers que esta cache de conteúdo consulta 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. A subchave tipo já não é necessária e é ignorada se estiver presente. Também pode definir este valor nas definições de cache de conteúdo. | nenhuma | |||||||||
PeerLocalSubnetsOnly | Indica se a cache de conteúdo deve ou não apenas ser um 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 êxito a consultas de peer 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 peers para a rede local são atualizadas adequadamente. Também pode definir este valor nas definições de cache de conteúdo. | Sim | |||||||||
PeerNotifyTimeout | Especifica durante quanto tempo, em segundos, aguardar por respostas das caches de conteúdo peers ao procurá-las no arranque. Fixado entre 5 e 300 segundos, inclusive. | 30 | |||||||||
PeerQueryTimeout | Especifica durante quanto tempo, em segundos, aguardar 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 | Especifica durante quanto tempo, em segundos, ignorar as caches de conteúdo peers 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 peer são restauradas para a lista de peers para consultar sobre conteúdo. Fixado entre 30 e 36000 segundos, inclusive. | 900 (segundos) | |||||||||
PersonalCacheLimit | Limita quanto espaço de armazenamento a cache de conteúdo usará para os dados iCloud em cache, em bytes. PersonalCacheLimit não pode exceder CacheLimit. | 0 (ilimitado) | |||||||||
Port | Especifica 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údos em cache. A fixação mínima são 7 dias. | 30 (dias) | |||||||||
PruneAffinitiesInterval | Especifica 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údos 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 | Especifica 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 | Especifica os intervalos de endereços IP públicos que os servidores na nuvem devem usar para fazer corresponder os clientes com as caches de conteúdo. Também pode definir este valor nas definições de cache de conteúdo. | nenhuma predefinição | |||||||||
ReservedVolumeSpace | Especifica o número mínimo de bytes de espaço livre de armazenamento a ser mantido para o volume que armazena o conteúdo em cache. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | Especifica 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) | |||||||||
Verbose | 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.betterbag.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.betterbag.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/BigVolume/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>