Ajustes avançados do cache de conteúdo no Mac
Você pode usar os parâmetros avançados de configuração para ajustar o cache de conteúdo de acordo com a configuração da rede.
Você pode usar a linha de comando no Terminal ou modificar o valor das chaves no arquivo /Library/Preferences/com.apple.AssetCache.plist para definir os parâmetros avançados da configuração do cache de conteúdo. Para que algumas alterações surtam efeito, o cache de conteúdo deve ser interrompido e reiniciado.
Defina ajustes avançados
Para configurar alguns ajustes avançados do serviço de cache de conteúdo, você pode acessar Ajustes do Sistema (macOS 13 ou posterior) ou Preferências do Sistema (macOS 12.0.1 ou anterior) > Compartilhamento > Cache de Conteúdo. Mantenha a tecla Opção pressionada e selecione Opções Avançadas.
Você pode configurar ajustes ainda mais avançados por meio do app Terminal no Mac usando o comando defaults
, seguido do comando sudo AssetCacheManagerUtil reloadSettings
. Use o comando AssetCacheManagerUtil settings
para visualizar os ajustes padrão (não avançado).
Você pode configurar tanto as chaves simples como as complexas com o comando defaults
.
Por exemplo, para codificar por hard code o número da porta (50000) com um número de porta não dinâmico, o número da porta deve ser qualquer número entre 49192 e 65535; execute este comando como administrador:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Port -int 50000
ListenRanges
é uma chave complexa que envolve um conjunto de dicionários. Por exemplo, execute este comando como administrador para configurar dois intervalos de endereço 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 executar o comando a seguir para recarregar os ajustes do cache de conteúdo:
$ sudo AssetCacheManagerUtil reloadSettings
Valores e chaves da plist de configuração de cache
Importante: não altere nenhum ajuste no arquivo com.apple.AssetCache.plist além dos descritos na tabela abaixo.
Uma chave pode ter um valor fixado entre dois valores. O valor da chave pode ser qualquer número entre o valor mais baixo e o mais alto. Se estiver abaixo do valor limite inferior, o limite inferior será usado. Se estiver acima do valor limite superior, o limite superior será usado. Por exemplo, o valor de PeerDownloadTimeout é fixado entre 5 e 300. Se for definido como 301 ou 1000, assumirá valor igual a 300. Se for definido como 4 ou -10, assumirá valor igual a 5.
Algumas alterações têm efeito quando você executa AssetCacheManagerUtil reloadSettings
; outras alterações exigem que você pare e reinicie o cache de conteúdo. As únicas chaves compatíveis com reloadSettings são as que também podem ser definidas nas preferências Cache de Conteúdo (indicadas na tabela abaixo). Para definir valores nas preferências do Cache de Conteúdo:
macOS 13 ou posterior: escolha o menu Apple > Ajustes do Sistema > Geral > Compartilhamento > Cache de Conteúdo.
macOS 12.0.1 ou anterior: escolha o menu Apple > Preferências do Sistema > Compartilhamento > Cache de Conteúdo.
Chave | Descrição | Valor padrão | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Quando ocorrer a depuração de cache de conteúdo por falta de espaço de armazenamento e o conteúdo depurado tiver sido adicionado ao cache de conteúdo a menos dias do que especificado, você receberá um alerta de pouco espaço. | 30 (dias) | |||||||||
AllowCacheDelete | Permite a depuração do cache de conteúdo automaticamente quando o computador precisar de espaço de armazenamento para outros apps. Para melhor eficácia de cache de conteúdo, desative esta configuração. | Sim | |||||||||
AllowImports | Permite solicitações de importação (upload). | Sim | |||||||||
AllowPersonalCaching | Permite o armazenamento em cache de dados do iCloud dos usuários. Ao menos uma das chaves AllowPersonalCaching ou AllowSharedCaching precisa ser sim. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | Sim | |||||||||
AllowSharedCaching | Controla a captura de conteúdo que não seja do iCloud, como atualizações de software e apps. Ao menos uma das chaves AllowPersonalCaching ou AllowSharedCaching precisa ser sim. | Sim | |||||||||
AllowWirelessPortable | Permite que laptops Mac somente com conexões de rede Wi-Fi executem o cache de conteúdo. | Sim | |||||||||
CacheLimit | Especifica o número máximo de bytes de espaço de armazenamento usado para cache de conteúdo. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | 0 (ilimitado) | |||||||||
DatabaseUpdateInterval | Especifica a frequência em que o cache de conteúdo salva alterações no seu banco de dados de armazenamento. O aumento do intervalo eleva o risco de perda de conteúdos armazenados em cache após uma interrupção de energia. O máximo é de 3600 segundos (1 hora). Um intervalo de 0 significa que o banco de dados será sempre atualizado imediatamente, o que diminui o desempenho. | 5 (segundos) | |||||||||
DataPath | Especifica o caminho para o diretório usado para armazenar conteúdo em cache. A alteração desse ajuste manualmente não move o conteúdo armazenado em cache da antiga para a nova localização automaticamente. Para mover conteúdo automaticamente, use os ajustes de Cache de Conteúdo. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | /Biblioteca/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | Exibe notificações para alertas de cache de conteúdo. Para melhor eficácia de cache de conteúdo, ative esta configuração. | Não | |||||||||
DownloadMinRate | Especifica o úmero mínimo de bytes por segundo que o cliente precisa manter durante o download de conteúdo do cache de conteúdo. O cache de conteúdo interrompe os downloads de dados com velocidade inferior a essa taxa. O valor fixado mínimo é de 1000 bytes por segundo. | 8000 (bytes por segundo) | |||||||||
DownloadTimeout | Especifica o intervalo, em segundos, em que um download para um cliente pode ficar ocioso até ser cancelado. O valor fixado mínimo é de 10 segundos. | 180 (segundos) | |||||||||
ImportMaxRate | Especifica o número máximo de bytes por segundo em que o cache de conteúdo receberá dados de cada cliente. Um valor de 0 indica uma quantidade ilimitada de bytes por segundo. | 0 (bytes por segundo) | |||||||||
ImportMinRate | Especifica o número mínimo de bytes por segundo que o cliente precisa manter durante a importação (envio) de um conteúdo. O cache de conteúdo interromperá importações que transfiram dados com velocidade inferior a essa taxa. O taxa mínima é de 100 bytes por segundo. | 2000 (bytes por segundo) | |||||||||
ImportRateAttenuation | Especifica a porcentagem de atenuação adicionada ao tempo de envio. O mínimo fixado é de 0% de atenuação. Valores muito altos ultrapassam o ImportTimeout e provocam falhas. | .20 (porcentagem) | |||||||||
ImportTimeout | Especifica o intervalo, em segundos, em que uma importação (envio) de um cliente pode ficar ociosa até ser cancelada. O mínimo é 10 segundos. | 300 (segundos) | |||||||||
Interface | Especifica o nome BSD de uma interface de rede a ser usada pelo cache de conteúdo. Por exemplo, en0. Além disso, sempre presta atenção na interface de loopback (localhost). | Presta atenção na interface selecionada | |||||||||
KeepAwake | Mantém o computador fora de repouso enquanto o cache de conteúdo está ativo. Para melhor disponibilidade de cache de conteúdo, ative esta configuração. Selecione a opção “Impedir repouso automático quando a tela estiver desligada” no Economizador de Energia nos Ajustes do Sistema (no macOS 13 ou posterior) ou nas Preferências do Sistema (no macOS 12.0.1 ou anterior). | Não | |||||||||
ListenRanges | Matriz de dicionários que descrevem o intervalo de endereços IP do cliente a ser servido. Veja abaixo um exemplo usando a chave ListenRanges. A subchave tipo não é mais necessária e é ignorada caso esteja presente. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | nenhum | |||||||||
ListenRangesOnly | Se a chave ListenRangesOnly estiver definida como verdadeira, o cache de conteúdo fornece conteúdo apenas aos clientes nos intervalos especificados pela chave ListenRanges. Se você quiser usar a chave ListenRangesOnly, também é necessário especificar a chave ListenRanges. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | Não | |||||||||
ListenWithPeers AndParents | Indica se o cache de conteúdo faz o registro com a união das chaves ListenRanges, PeerListenRanges e Parents ou apenas com a chave ListenRanges. Observe que a chave ListenRanges poderia ser gerada automaticamente a partir de LocalSubnetsOnly, e a chave PeerListenRanges poderia ser gerada automaticamente a partir de PeerLocalSubnetsOnly. | O valor padrão depende do histórico do computador:
| |||||||||
LocalSubnetsOnly | Indica se o cache de conteúdo deve oferecer conteúdo apenas aos clientes da mesma rede local imediata do cache de conteúdo em vez de aos clientes em todas as redes locais acessíveis ao cache de conteúdo. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | Sim | |||||||||
LogClientIdentity | Determina se o cache de conteúdo deve registrar o endereço IP e o número da porta dos clientes que solicitam conteúdo. | Não | |||||||||
MaxConcurrentClients | Especifica o número máximo de clientes que um cache de conteúdo pode suportar. A Apple não garante que um cache de conteúdo possa atender a 3.400 clientes simultâneos. | 3400 | |||||||||
MaxParentDepth | Especifica o número máximo de vezes, em um único pedido, que um cache de conteúdo secundário envia um pedido para um cache de conteúdo principal. Solicitações longínquas demais (encadeamento longo demais) são forçadas para a origem em vez do cache de conteúdo principal. | 8 | |||||||||
MaxPeersToQuery | Especifica o número máximo de caches de conteúdo pares a solicitarem conteúdo. | 0 (ilimitado) | |||||||||
MetricsInterval | Especifica a frequência, em segundos, em que uma linha de métricas é adicionada ao banco de dados de métricas em /Library/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Fixado entre 1 e 60 segundos, inclusive. Você pode visualizar essas métricas no painel Cache do Monitor de Atividade. | 60 (segundos) | |||||||||
MetricsMaxAge | Métricas mais antigas são removidas do banco de dados de métricas uma vez por dia. O valor fixado mínimo é de 30 dias. | 30 (dias) | |||||||||
OriginDownloadTimeout | Especifica o intervalo, em segundos, em que um download de um servidor da Apple pode ficar ocioso até ser cancelado (possivelmente tentando o download novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
OriginUploadTimeout | Especifica o intervalo, em segundos, em que um envio para um servidor de origem pode ficar ocioso até ser cancelado. Fixado entre 5 e 3600 segundos, inclusive. | 600 | |||||||||
Pais | Uma lista dos endereços IP locais de outros caches de conteúdo dos quais este cache deve baixar ou enviar conteúdo em vez de baixá-lo ou enviá-lo diretamente à Apple. Endereços inválidos e endereços de computadores que não são caches de conteúdo são ignorados. Caches principais que se tornam indisponíveis serão ignorados conforme o ParentRetryInterval. Se todos os caches de conteúdo principais ficarem indisponíveis, o cache de conteúdo baixa ou envia diretamente para a Apple, até que um cache de conteúdo principal fique disponível novamente. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | nenhum | |||||||||
ParentDownloadTimeout | Especifica o intervalo, em segundos, em que um download de um cache de conteúdo principal pode ficar ocioso até ser cancelado (possivelmente tentando o download novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
ParentRetryInterval | Especifica o tempo de espera, em segundos, até que caches de conteúdo principais sejam ignorados após terem acumulado cinco falhas de rede ou erros de servidor consecutivos. Fixado entre 30 e 3600 segundos, inclusive. | 900 | |||||||||
ParentSelectionPolicy | A política a ser usada ao escolher entre mais de um cache de conteúdo principal configurado. Com cada política, caches principais que estiverem indisponíveis temporariamente serão ignorados. As políticas são:
Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | round-robin | |||||||||
ParentUploadTimeout | Especifica o intervalo, em segundos, em que um envio para um cache de conteúdo principal pode ficar ocioso até ser cancelado. Fixado entre 5 e 3600 segundos, inclusive. | 600 | |||||||||
PeerDownloadTimeout | Especifica o intervalo, em segundos, em que um download de um cache de conteúdo par pode ficar ocioso até ser cancelado (possivelmente tentando o download novamente). Fixado entre 5 e 300 segundos, inclusive. | 30 | |||||||||
PeerFilterRanges | Quando PeerFilterRanges é uma matriz (de entradas como as de ListenRanges), os intervalos dessa matriz servem de base para que o cache de conteúdo filtre e ordene a lista de pares. O cache de conteúdo consulta apenas os pares que estão em PeerFilterRanges. A filtragem e ordenação são aplicadas antes da lista de pares ser truncada nas entradas de MaxPeersToQuery (se tal ajuste estiver presente). Quando PeerFilterRanges é uma matriz vazia, o cache de conteúdo não consultará nenhum par. Quando PeerFilterRanges assume o valor booleano verdadeiro, o cache de conteúdo tem o mesmo comportamento descrito acima, mas usa o valor de ListenRanges em vez do valor de PeerFilterRanges. Quando PeerFilterRanges assume qualquer outro tipo ou o valor não é encontrado, o cache de conteúdo não filtra nem ordena a lista de pares antes de truncar a lista de entradas em MaxPeersToQuery. PeerFilterRanges afeta apenas a lista de outros caches de conteúdo nos quais esse cache de conteúdo busca por conteúdo e transferências. Ele não tem efeito sobre a entrada de solicitações de conteúdo provenientes de qualquer outro cache de conteúdo. A subchave tipo não é mais necessária e é ignorada caso esteja presente. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | nenhum | |||||||||
PeerListenRanges | Quando PeerListenRanges é uma matriz de dicionários, em que cada dicionário representa um intervalo de endereço IP, o cache de conteúdo responde corretamente apenas às consultas sobre cache de pares provenientes de caches de conteúdo com um endereço IP contido nessa matriz de intervalos. Quando PeerListenRanges é uma matriz vazia, o cache de conteúdo responde às consultas sobre cache de qualquer outro cache de conteúdo com um erro. Quando PeerListenRanges é um Booleano verdadeiro, o cache de conteúdo usa o valor de ListenRanges em vez do valor de PeerListenRanges para decidir a quais outros caches de conteúdo ele responde corretamente às consultas de cache. Quando PeerListenRanges é de qualquer outro tipo ou o valor não é encontrado, o cache de conteúdo responde corretamente às consultas de cache de todos os outros caches de conteúdo. PeerListenRanges afeta apenas os caches de conteúdo aos quais esse cache de conteúdo responde corretamente a consultas de cache. Ele não tem nenhum efeito na lista de pares que esse cache de conteúdo consulta em busca de conteúdo e para baixar conteúdo. Quando um cache de conteúdo responde a uma consulta com um erro, o cache de conteúdo que fez a consulta marca o cache de conteúdo consultado como hostil e não tenta realizar a consulta novamente até que o valor de PeerRetryInterval tenha decorrido. A subchave tipo não é mais necessária e é ignorada caso esteja presente. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | nenhum | |||||||||
PeerLocalSubnetsOnly | Indica se o cache de conteúdo deve ser apenas um par com outros caches de conteúdo da mesma rede local imediata, e não com caches de conteúdo de todas as redes que usam o mesmo endereço IP público que este computador. Quando o valor de PeerLocalSubnetsOnly é verdadeiro, o cache de conteúdo consulta e responde com êxito apenas a caches de conteúdo que estejam na mesma rede local imediata. Quando o valor de PeerLocalSubnetsOnly é verdadeiro, ele sobrescreve a configuração de PeerFilterRanges e PeerListenRanges. Quando o valor de PeerLocalSubnetsOnly é falso, o cache de conteúdo transfere a configuração das restrições de pares para PeerFilterRanges e PeerListenRanges. Quando o valor de PeerLocalSubnetsOnly é verdadeiro e a rede é alterada, as restrições de pares da rede local são atualizadas. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | Sim | |||||||||
PeerNotifyTimeout | Especifica o tempo de espera, em segundos, para a resposta dos caches de conteúdo pares após o ping de inicialização. Fixado entre 5 e 300 segundos, inclusive. | 30 | |||||||||
PeerQueryTimeout | Especifica o tempo de espera, em segundos, para a resposta dos caches de conteúdo pares quando consultados sobre os conteúdos em cache. Fixado entre 1 e 60 segundos, inclusive. | 5 | |||||||||
PeerRetryInterval | Especifica o tempo de espera, em segundos, até que os caches de conteúdo pares sejam ignorados após terem acumulado três falhas consecutivas de consulta ou notificação. Após o término do intervalo, os caches de conteúdo pares voltam para a lista de pares de consulta de conteúdo. Fixado entre 30 e 3600 segundos, inclusive. | 900 (segundos) | |||||||||
PersonalCacheLimit | Limita o espaço de armazenamento que o cache de conteúdo usa para dados do iCloud, em bytes. PersonalCacheLimit não deve ser superior a CacheLimit. | 0 (ilimitado) | |||||||||
Port | Especifica o número da porta TCP na qual o cache de conteúdo aceita solicitações de envio ou transferência. | 0 (usa uma porta aleatória) | |||||||||
PruneAffinitiesAge | Afinidades de usuário mais antigas que esse número são removidas do cache de afinidades automaticamente. As afinidades de usuário fornecem dicas aos clientes, como, por exemplo, onde o conteúdo está armazenado, a fim de melhorar o desempenho. A redução das afinidades de usuário não tem nenhum efeito sobre os conteúdos em cache. O valor fixado mínimo é de 7 dias. | 30 (dias) | |||||||||
PruneAffinitiesInterval | Especifica a frequência, em dias, em que o cache de conteúdo deve procurar e remover afinidades de usuário mais antigas que o número indicado em PruneAffinitiesAge. Para melhorar o desempenho, as afinidades de usuário, usadas apenas pelo iCloud, fornecem dicas aos clientes, como, por exemplo, onde o conteúdo está armazenado. A redução das afinidades de usuário não tem nenhum efeito sobre os conteúdos em cache. O valor fixado mínimo é de um dia. | 7 (dias) | |||||||||
PruneAssetsAge | O conteúdo que não for solicitado nesse número de dias será removido do cache de conteúdo automaticamente. O valor fixado mínimo é de 7 dias. | 120 (dias) | |||||||||
PruneAssetsInterval | Especifica a frequência, em dias, em que o cache de conteúdo deve procurar e remover conteúdo mais antigo que o número de dias indicado em PruneAssetsAge. O valor fixado mínimo é de um dia. | 7 (dias) | |||||||||
PublicRanges | Especifica os intervalos de endereço IP público que os servidores de nuvem devem usar para corresponder os clientes aos caches de conteúdo. Também é possível definir esse valor nos ajustes de Cache de Conteúdo. | nenhum padrão | |||||||||
ReservedVolumeSpace | Especifica o número mínimo livre de armazenamento, em bytes, a ser mantido para o volume que armazena o conteúdo em cache. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | Especifica o tempo, em segundos, em que o cache de conteúdo deve tentar cancelar o registro ao ser interrompido. O cancelamento do registro informa aos clientes que o cache de conteúdo não está mais disponível. Assim, eles não tentarão usá-lo novamente até que seja reiniciado. Fixado entre 1 e 60 segundos, inclusive. | 10 (segundos) | |||||||||
Verbose | Quando “Verbose = true”, o cache de conteúdo registra algumas informações a mais sobre as atividades. O aumento do registro pode reduzir o desempenho. Esse ajuste não é recomendado para o uso de longo prazo. Use o comando Por exemplo: Também é possível usar o app Console para visualizar os registros. | Não |
Exemplo da chave ListenRanges
Você pode usar a chave ListenRanges para especificar os caches de conteúdo preferidos em topologias de rede avançadas, onde vários servidores de cache coexistam sob um 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 de 10.1.0.1 até 10.1.0.254 e define a chave ListenRangesOnly como Não.
caching2.betterbag.com usa a chave ListenRanges para especificar um intervalo de 10.1.0.1 até 10.1.0.39 (observe a sobreposição do segundo intervalo de caching1) e define a chave ListenRangesOnly como Não.
Se um cliente com endereço IP 10.0.0.10 solicita um conteúdo, ele é direcionado ao caching1.
Se um cliente com endereço IP 10.1.0.10 solicita conteúdo, ele é direcionado ao caching1 ou caching2, selecionado aleatoriamente.
Se um cliente com endereço IP 10.2.0.10 solicita conteúdo, ele é direcionado ao caching1 ou caching2, selecionado aleatoriamente.
Se o caching1 estiver desligado ou sem uma fonte de alimentação, mas o caching2 permanecer disponível, todos os clientes serão direcionados ao caching2.
Exemplo de arquivo plist
A seguir, encontra-se um exemplo de arquivo /Library/Preferences/com.apple.AssetCache.plist file.
<?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>