Configuração de 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.
Use o Terminal para definir parâmetros avançados de configuração
No app Terminal do Mac, é possível definir parâmetros avançados de configuração por meio do comando defaults
, seguido do comando sudo AssetCacheManagerUtil reloadSettings
. Use o comando AssetCacheManagerUtil settings
para visualizar os ajustes padrão (não avançado).
Para obter mais informações sobre o comando AssetCacheManagerUtil
, consulte Gerencie o cache de conteúdo a partir da linha de comando e a página “man” do AssetCacheManagerUtil(8).
Você pode configurar tanto as chaves simples como as 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 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 carregar novamente os ajustes do cache de conteúdo:
$ sudo AssetCacheManagerUtil reloadSettings
Para obter mais informações sobre o comando defaults
, consulte a página defaults(1) man.
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 aquelas que também pode ser configuradas nas preferências de Cache de Conteúdo (descritas na tabela abaixo). Para definir valores nas preferências de Cache de Conteúdo, escolha menu Apple > Preferências do Sistema, clique em Compartilhamento e clique em “Cache de Conteúdo”.
Chave | Descrição | Padrão | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Quando o conteúdo for removido do cache de conteúdo devido a pouco espaço em disco e o conteúdo removido for adicionado ao cache de conteúdo por menos do que os dias indicados, você receberá um alerta de pouco espaço no disco. | 30 (dias) | |||||||||
AllowCacheDelete | Permite que o conteúdo seja removido do cache automaticamente quando o computador precisar de espaço em disco para outros apps. Para melhor eficácia de cache de conteúdo, desative esta configuração. | Sim | |||||||||
AllowImports | Permite solicitações de importação (envio). | 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. Você também pode configurar este valor nas preferências do 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 computadores portáteis que tenham apenas conexões de rede Wi-Fi executem cache de conteúdo. | Sim | |||||||||
CacheLimit | Número máximo de bytes de espaço em disco que será usado para cache de conteúdo. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | 0 (ilimitado) | |||||||||
DatabaseUpdateInterval | Frequência com que o cache de conteúdo salva alterações no banco de dados em disco. O aumento do intervalo eleva o risco de perda de conteúdo armazenado em cache após uma interrupção de energia. O máximo é de 3.600 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 | 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 as preferências de Cache de Conteúdo (consulte Selecione um volume para armazenamento em cache). Você também pode configurar este valor nas preferências do Cache de Conteúdo. | /Library/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 | Número mínimo de bytes por segundo que o cliente precisa manter durante a transferência de conteúdo do cache de conteúdo. O cache de conteúdo interrompe as transferências de dados com velocidade inferior a essa taxa. O valor fixado mínimo é de 1000 bytes por segundo. | 8000 (bytes por segundo) | |||||||||
DownloadTimeout | Intervalo, em segundos, em que uma transferência para um cliente pode ficar ociosa até ser cancelada. O valor fixado mínimo é de 10 segundos. | 180 (segundos) | |||||||||
ImportMaxRate | 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 | Número mínimo de bytes por segundo que o cliente precisa manter durante a importação (envio) de conteúdo. O cache de conteúdo interrompe importações que transfiram dados com velocidade inferior a essa taxa. A taxa mínima é de 100 bytes por segundo. | 2000 (bytes por segundo) | |||||||||
ImportRateAttenuation | Porcentagem de atenuação adicionada ao tempo de envio. O mínimo fixado é de 0% de atenuação. Valores muito altos ultrapassarão o ImportTimeout e provocarão falhas. | .20 (porcentagem) | |||||||||
ImportTimeout | 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 | Nome BSD de uma interface de rede a ser usada pelo cache de conteúdo. | Ouvir em todas as interfaces | |||||||||
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 ou escolha o menu Apple > Preferências do Sistema, clique em Economizador de Energia e selecione a opção “Impedir repouso automático do computador quando o monitor estiver desligado”. | 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. Você também pode configurar este valor nas preferências do 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. Caso deseje usar a chave ListenRangesOnly, você também precisa especificar a chave ListenRanges. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | Não | |||||||||
ListenWithPeersAndParents | 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 | Se o cache de conteúdo deve oferecer conteúdo apenas aos clientes da mesma rede local imediata do cache de conteúdo, e não aos clientes em todas as redes locais acessíveis ao cache de conteúdo. Você também pode configurar este valor nas preferências do 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 | Esse limite serve para impedir que os descritores de arquivo do cache de conteúdo se esgotem. A Apple não garante que um cache de conteúdo possa atender a 3.400 clientes simultâneos. | 3400 | |||||||||
MaxParentDepth | Número máximo de vezes, para uma única solicitação, que um cache de conteúdo filho enviará uma solicitação a um cache de conteúdo pai. As solicitações muito profundas (cadeia de encaminhamento muito longa) são forçadas para a origem, em vez de um pai. | 8 | |||||||||
MaxPeersToQuery | Número máximo de caches de conteúdo pares aos quais o conteúdo será solicitado. | 0 (ilimitado) | |||||||||
MetricsInterval | 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 | Intervalo, em segundos, em que uma transferência de um servidor da Apple pode ficar ociosa até ser cancelada (possivelmente tentando a transferência novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
OriginUploadTimeout | 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 | |||||||||
ParentDownloadTimeout | Intervalo, em segundos, em que uma transferência de um cache de conteúdo pai pode ficar ociosa até ser cancelada (possivelmente tentando a transferência novamente). Fixado entre 5 e 300 segundos, inclusive. | 60 | |||||||||
ParentRetryInterval | Tempo de espera, em segundos, até que os caches de conteúdo pais sejam ignorados após terem acumulado cinco falhas consecutivas de rede ou erros de servidor. Fixado entre 30 e 3600 segundos, inclusive. | 900 | |||||||||
Principais | Uma lista de endereços IP locais de outros caches de conteúdo a partir dos quais este cache deve transferir ou carregar conteúdo, em vez de transferir ou carregar diretamente da Apple. Endereços inválidos e endereços de computadores que não são caches de conteúdo são ignorados. Os caches pais que se tornam indisponíveis são ignorados de acordo com ParentRetryInterval. Se os caches de conteúdo pais ficarem indisponíveis, o cache de conteúdo transferirá ou carregará diretamente da Apple, até que um cache de conteúdo pai fique disponível novamente. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | nenhum | |||||||||
ParentSelectionPolicy | Política a ser usada ao escolher dentre mais de um cache de conteúdo pai configurado. Em todas as políticas, os caches pais temporariamente indisponíveis são ignorados. As políticas são:
Você também pode configurar este valor nas preferências do Cache de Conteúdo. | round robin | |||||||||
ParentUploadTimeout | Intervalo, em segundos, em que um envio para um cache de conteúdo pai pode ficar ocioso até ser cancelado. Fixado entre 5 e 3600 segundos, inclusive. | 600 | |||||||||
PeerDownloadTimeout | Intervalo, em segundos, em que uma transferência de um cache de conteúdo par pode ficar ociosa até ser cancelada (possivelmente tentando a transferência 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 consulta 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 é de 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. Você também pode configurar este valor nas preferências do 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 responderá 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 possui nenhum efeito na lista de pares que esse cache de conteúdo consultará em busca de conteúdo e para transferência de 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. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | nenhum | |||||||||
PeerLocalSubnetsOnly | Se o cache de conteúdo deve ser par apenas de outros caches de conteúdo na mesma rede local imediata, e não de caches de conteúdo que usam o mesmo endereço IP público deste computador. Quando o valor de PeerLocalSubnetsOnly é verdadeiro, o cache de conteúdo consulta e responde corretamente apenas a caches de conteúdo que estão 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. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | Sim | |||||||||
PeerNotifyTimeout | 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 | Tempo de espera, em segundos, para a resposta dos caches de conteúdo pares quando consultados sobre o conteúdo em cache. Fixado entre 1 e 60 segundos, inclusive. | 5 | |||||||||
PeerRetryInterval | 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 em disco que o cache de conteúdo usa para dados do iCloud, em bytes. O PersonalCacheLimit não deve ser superior a CacheLimit. | 0 (ilimitado) | |||||||||
Porta | Número da porta TCP na qual o cache de conteúdo aceita solicitações de envios ou transferências. | 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. Para melhorar o desempenho, as afinidades de usuário 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 o conteúdo armazenado em cache. O valor fixado mínimo é de 7 dias. | 30 (dias) | |||||||||
PruneAffinitiesInterval | 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 o conteúdo armazenado em cache. O valor fixado mínimo é de um dia. | 7 (dias) | |||||||||
PruneAssetsAge | Conteúdo não solicitado nesse número de dias é removido do cache de conteúdo automaticamente. O valor fixado mínimo é de 7 dias. | 120 (dias) | |||||||||
PruneAssetsInterval | Frequência, em dias, em que o cache de conteúdo deve procurar e remover conteúdo mais antigo que o número indicado em PruneAssetsAge. O valor fixado mínimo é de um dia. | 7 (dias) | |||||||||
PublicRanges | Intervalos de endereço IP público que os servidores de nuvem devem usar para corresponder os clientes aos caches de conteúdo. Você também pode configurar este valor nas preferências do Cache de Conteúdo. | nenhum padrão | |||||||||
ReservedVolumeSpace | Número mínimo livre em disco, em bytes, a ser mantido para o volume que armazena o conteúdo em cache. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | 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 ele seja restabelecido. Fixado entre 1 e 60 segundos, inclusive. | 10 (segundos) | |||||||||
Verbose | Quando Verbose=verdadeiro, o cache de conteúdo registra um pouco mais de informações sobre suas atividades. O aumento de registros pode reduzir o desempenho. Este ajuste não é recomendado para longo prazo. Use o comando Por exemplo: Você também pode 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.exemplo.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.exemplo.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/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>