Configuración avanzada de la caché de contenido en la Mac
Puedes usar parámetros de configuración avanzada para personalizar el almacenamiento de contenido en caché para la configuración de tu red.
Puedes establecer parámetros de configuración avanzada del almacenamiento de contenido en caché, ya sea usando la línea de comandos en Terminal o modificando el valor de las claves en el archivo /Biblioteca/Preferences/com.apple.AssetCache.plist. Para que algunos cambios tomen efecto, el almacenamiento de contenido en caché debe ser detenido y reiniciado.
Establecer configuración avanzada
Puedes establecer cierta configuración avanzada para el servicio de almacenamiento de contenido en caché; para ello, ve a Configuración del Sistema (macOS 13 o posterior) o Preferencias del Sistema (macOS 12.0.1 o anterior) > Compartir > Contenido en caché. Luego, mantén presionada la tecla Opción y selecciona Opciones avanzadas.
Puedes configurar más opciones avanzadas mediante el comando defaults
, seguido por el comando sudo AssetCacheManagerUtil reloadSettings
en la app Terminal en tu Mac. Usa el comando AssetCacheManagerUtil settings
para ver la configuración estándar (no avanzada).
Puedes configurar claves sencillas y complejas con el comando defaults
.
Por ejemplo, para programar el número de puerto (50000) a un número de puerto no dinámico, el número de puerto debería ser cualquier número entre 49192 y 65535. Ejecuta el siguiente comando como administrador:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Port -int 50000
ListenRanges
es una clave compleja que toma un arreglo de diccionarios. Por ejemplo, ejecuta este comando como administrador para configurar dos rangos de direcciones IP para la clave 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; } )'
Después de usar el comando defaults, recuerda ejecutar el siguiente comando para volver a cargar la configuración de la caché de contenido:
$ sudo AssetCacheManagerUtil reloadSettings
Configuración de almacenamiento en caché: claves y valores de plist
Importante: no cambies ninguna configuración en el archivo com.apple.AssetCache.plist distinta a la que se describe en la tabla de abajo.
Una clave puede tener un valor restringido entre dos valores. El valor de la clave puede ser cualquier número comprendido entre el valor bajo y el alto. Si se establece por debajo del valor del límite inferior, se usa el valor del límite inferior. Si se establece por encima del valor del límite superior, se usa el valor del límite superior. Por ejemplo, PeerDownloadTimeout está restringido entre 5 y 300. Si se define como 301 o 1000, entonces el valor se define como 300. Si se define como 4 o -10, entonces el valor se define como 5.
Algunos cambios entran en efecto después de que ejecutas AssetCacheManagerUtil reloadSettings
; otros requieren que detengas y reinicies el almacenamiento de contenido en caché. Las únicas claves que son compatibles con reloadSettings son aquellas que también pueden ser establecidas en el panel de preferencias Contenido en caché (mencionado en la tabla siguiente). Para establecer valores en el panel Contenido en caché:
macOS 13 o posterior: elige menú Apple > Configuración del Sistema > General > Compartir > Contenido en caché.
macOS 12.0.1 o anterior: elige menú Apple > Preferencias del Sistema > Compartir > Contenido en caché.
Clave | Descripción | Valor predeterminado | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Te avisa cuando se borra contenido de la caché de contenido porque queda poco espacio de almacenamiento y el contenido borrado se agregó a la caché de contenido hace menos días de los especificados aquí, recibirás una alerta sobre el poco espacio disponible. | 30 (días) | |||||||||
AllowCacheDelete | Permite que se borre contenido de la caché automáticamente si la computadora necesita espacio de almacenamiento para otras apps. Para mejorar la eficacia del almacenamiento de contenido en caché, desactiva esta función. | Sí | |||||||||
AllowImports | Permite solicitudes de importación (carga). | Sí | |||||||||
AllowPersonalCaching | Permite el almacenamiento en caché de los datos de iCloud de los usuarios. Al menos una de las claves de AllowPersonalCaching o AllowSharedCaching debe ser sí. También puedes configurar este valor en el panel de configuración Contenido en caché. | Sí | |||||||||
AllowSharedCaching | Controla el almacenamiento en caché del contenido que no es de iCloud, como las actualizaciones de apps y software. Al menos una de las claves de AllowPersonalCaching o AllowSharedCaching debe ser sí. | Sí | |||||||||
AllowWirelessPortable | Permite que laptops Mac que sólo tienen conexiones a red Wi-Fi ejecuten contenido en caché. | Sí | |||||||||
CacheLimit | Especifica el número máximo de bytes de espacio de almacenamiento que se usa para la caché de contenido. También puedes configurar este valor en el panel de configuración Contenido en caché. | 0 (ilimitado) | |||||||||
DatabaseUpdateInterval | Especifica la frecuencia con la que la caché de contenido guarda los cambios en su base de datos en el almacenamiento. Al elevar el intervalo se incrementa el riesgo de perder contenido en caché tras una falla de energía. El máximo es 3,600 segundos (1 hora). Un intervalo de 0 significa que la base de datos siempre se actualiza de inmediato, lo cual reduce el rendimiento. | 5 (segundos) | |||||||||
DataPath | Especifica la ruta al directorio usado para almacenar en caché el contenido. Si se cambia manualmente este parámetro, no se traslada automáticamente el contenido en caché desde la ubicación anterior a la nueva. Para mover el contenido automáticamente, usa el panel de configuración Contenido en caché. También puedes configurar este valor en el panel de configuración Contenido en caché. | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | Muestra notificaciones de alertas de contenido en caché. Para mejorar la eficacia del almacenamiento de contenido en caché, activa esta función. | No | |||||||||
DownloadMinRate | Especifica el número mínimo de bytes por segundo que los clientes deben sostener mientras descargan contenido de la caché. La caché de contenido detiene las descargas que transfieren datos más lentamente que esta velocidad. El límite mínimo es 1000 bytes por segundo. | 8000 (bytes por segundo) | |||||||||
DownloadTimeout | Especifica cuánto tiempo se permite (en segundos) que una descarga a un cliente permanezca inactiva antes de dejar de intentarlo. El límite mínimo es 10 segundos. | 180 (segundos) | |||||||||
ImportMaxRate | Especifica el número máximo de bytes por segundo al que la caché de contenido recibe datos de cada cliente. Un valor de 0 indica un número ilimitado de bytes por segundo. | 0 (bytes por segundo) | |||||||||
ImportMinRate | Especifica el número mínimo de bytes por segundo que los clientes deben sostener durante la importación (carga) de contenido. La caché de contenido detendrá las importaciones que transfieran datos a una velocidad inferior a esta. La velocidad mínima es de 100 bytes por segundo. | 2000 (bytes por segundo) | |||||||||
ImportRateAttenuation | Especifica el porcentaje de atenuación agregado al tiempo de carga. El valor mínimo restringido es de un 0% de atenuación. Los valores demasiado elevados superarán el valor de ImportTimeout y producirán errores. | .20 (porcentaje) | |||||||||
ImportTimeout | Especifica la duración, en segundos, que se permite que esté inactiva una importación (carga) desde un cliente antes de abandonar. El mínimo es 10 segundos. | 300 (segundos) | |||||||||
Interface | Especifica el nombre BSD de una interfaz de red para su uso por parte de la caché de contenido. Por ejemplo, en0. También escucha siempre en la interfaz loopback (localhost). | Escucha en la interfaz seleccionada | |||||||||
KeepAwake | Evita que la computadora entre en reposo mientras el almacenamiento de contenido en caché está activado. Para mejorar la disponibilidad del contenido en caché, activa esta función. Selecciona la casilla Evitar que la computadora entre en reposo automáticamente cuando la pantalla está apagada en el panel de configuración Ahorro de energía en Configuración del Sistema (en macOS 13 o posterior) o en Preferencias del Sistema (en macOS 12.0.1 o anterior). | No | |||||||||
ListenRanges | Matriz de diccionarios que describen el intervalo de direcciones IP a servir. Consulta abajo para ver un ejemplo usando la clave ListenRanges. La subclave de tipo ya no es necesaria y se ignora si está presente. También puedes configurar este valor en el panel de configuración Contenido en caché. | Ninguna | |||||||||
ListenRangesOnly | Si ListenRangesOnly es “true” (verdadero), la caché de contenido proporciona contenido sólo a los clientes en los intervalos especificados por la clave ListenRanges. Si quieres usar la clave ListenRangesOnly, también debes especificar la clave ListenRanges. También puedes configurar este valor en el panel de configuración Contenido en caché. | No | |||||||||
ListenWithPeers AndParents | Indica si el contenido en caché se registra con la unión de las claves ListenRanges, PeerListenRanges y Parents keys, o únicamente con la clave ListenRanges. Ten en cuenta que la clave ListenRanges puede generarse automáticamente desde LocalSubnetsOnly; y que PeerListenRanges se puede generar automáticamente desde PeerLocalSubnetsOnly. | El valor predeterminado depende del historial de la computadora:
| |||||||||
LocalSubnetsOnly | Indica si la caché de contenido debe ofrecer contenido únicamente a los clientes que se encuentren en la misma red local inmediata que la propia caché de contenido, en vez de a los clientes de todas las redes locales accesibles para la caché de contenido. También puedes configurar este valor en el panel de configuración Contenido en caché. | Sí | |||||||||
LogClientIdentity | Esta clave determina si la caché de contenido debe registrar la dirección IP y el número de puerto de los clientes que solicitan contenido. | No | |||||||||
MaxConcurrentClients | Indica el número máximo de clientes que una caché de contenido puede admitir. Apple no garantiza que una caché de contenido pueda lograr 3,400 clientes concurrentes. | 3400 | |||||||||
MaxParentDepth | Especifica el número máximo de veces para una solicitud individual que la caché secundaria de contenido reenvía la solicitud a una caché principal de contenido. Si una solicitud es demasiado profunda (la cadena de reenvío es demasiado larga), el sistema le impone que vaya al origen, en lugar de hacerlo a una principal. | 8 | |||||||||
MaxPeersToQuery | Especifica el número máximo de cachés de contenido del mismo nivel a las que solicitar contenido. | 0 (ilimitado) | |||||||||
MetricsInterval | Especifica la frecuencia (en segundos) en la que se agrega una fila de métricas a la base de datos de métricas en /Biblioteca/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Limitado entre 1 y 60 segundos (ambos incluidos). Puedes ver estas métricas en el panel Caché de Monitor de Actividad. | 60 (segundos) | |||||||||
MetricsMaxAge | Una vez al día, las métricas anteriores se eliminan de la base de datos. El límite mínimo es 30 días. | 30 (días) | |||||||||
OriginDownloadTimeout | Especifica la duración, en segundos, que se permite que esté inactiva una descarga desde los servidores de Apple antes de desistir (y, posiblemente, antes de volver a intentar la descarga). Restringido entre 5 y 300 segundos, ambos inclusive. | 60 | |||||||||
OriginUploadTimeout | Especifica la duración, en segundos, que se permite que esté inactiva una carga a un servidor de origen antes de abandonar. Restringido entre 5 y 3,600 segundos, ambos inclusive. | 600 | |||||||||
Padres y tutores | Una lista de las direcciones IP locales de otras cachés de contenido desde las cuales esta caché debe descargar o cargar contenido en lugar de hacerlo directamente desde Apple. Se ignoran las direcciones inválidas y las de computadoras que no son cachés de contenido. Las cachés principales que dejen de estar disponibles se omitirán de acuerdo con ParentRetryInterval. Si todas las cachés de contenido principales dejan de estar disponibles, la caché de contenido descargará desde o cargará en Apple directamente hasta que vuelva a haber una disponible. También puedes configurar este valor en el panel de configuración Contenido en caché. | Ninguna | |||||||||
ParentDownloadTimeout | Especifica la duración, en segundos, durante la cual se permite que esté inactiva una descarga desde una caché de contenido principal antes de desistir (y, posiblemente, volver a intentar la descarga). Restringido entre 5 y 300 segundos, ambos inclusive. | 60 | |||||||||
ParentRetryInterval | Especifica la duración, en segundos, durante la cual se van a pasar por alto las cachés de contenido principales cuando hayan acumulado cinco fallos de red o errores del servidor consecutivos. Restringido entre 30 y 3,600 segundos, ambos inclusive. | 900 | |||||||||
ParentSelectionPolicy | La política que se debe usar a la hora de seleccionar entre más de una caché de contenido principal configurada. Con cada política, se omitirán las cachés principales que dejen de estar disponibles temporalmente. Las políticas son:
También puedes configurar este valor en el panel de configuración Contenido en caché. | round-robin | |||||||||
ParentUploadTimeout | Especifica la duración, en segundos, durante la cual se permite que esté inactiva una carga a una caché de contenido principal antes de abandonar. Restringido entre 5 y 3,600 segundos, ambos inclusive. | 600 | |||||||||
PeerDownloadTimeout | Especifica la duración, en segundos, durante la cual se permite que esté inactiva una descarga desde una caché de contenido del mismo nivel antes de desistir (y, posiblemente, volver a intentar la descarga). Restringido entre 5 y 300 segundos, ambos inclusive. | 30 | |||||||||
PeerFilterRanges | Cuando PeerFilterRanges es una matriz (de entradas como las de ListenRanges), la caché de contenido filtra y ordena su lista de pares según los intervalos de la matriz. La caché de contenido sólo consulta a los puntos que están en los rangos de PeerFilterRanges. El filtrado y ordenado son aplicados antes de truncar la lista de puntos en las entradas de MaxPeersToQuery (si esa configuración está presente). Cuando PeerFilterRanges es un arreglo vacío, la caché de contenido no consulta ningún punto. Cuando PeerFilterRanges tiene el valor booleano “true” (verdadero), la caché de contenido hace lo mismo que en el caso anterior, pero usa el valor de ListenRanges en lugar del valor de PeerFilterRanges. Cuando PeerFilterRanges es cualquier otro tipo o el valor no está presente, la caché de contenido ni filtra ni ordena su lista de pares antes de truncar la lista en las entradas de MaxPeersToQuery. PeerFilterRanges sólo afecta la lista de otras cachés de contenido que esta caché de contenido consulta para contenido y descargas. No tiene efecto en las solicitudes entrantes de contenido de ninguna otra caché de contenido. La subclave de tipo ya no es necesaria y se ignora si está presente. También puedes configurar este valor en el panel de configuración Contenido en caché. | Ninguna | |||||||||
PeerListenRanges | Cuando la clave PeerListenRanges es un arreglo de diccionarios donde cada diccionario representa un rango de direcciones IP, la caché de contenido sólo responde con éxito a las consultas de cachés del mismo nivel desde cachés de contenido con una dirección IP contenida dentro de este arreglo de rangos. Cuando la clave PeerListenRanges es un arreglo vacío, la caché de contenido responde con un error a las consultas de caché desde cualquier otra caché de contenido. Cuando la clave PeerListenRanges es un verdadero booleano, la caché de contenido usa el valor de ListenRanges en vez del valor PeerListenRanges para decidir a cuáles otras cachés de contenido les responde sus consultas de caché exitosamente. Cuando el valor de la clave PeerListenRanges falta o es de cualquier otro tipo, la caché de contenido responde exitosamente con un error a las consultas de caché desde todas las otras cachés de contenido. La clave PeerListenRanges sólo afecta a cuáles cachés de contenido responde exitosamente esta caché de contenido sus consultas de caché. No tiene efecto en la lista de puntos que esta caché de contenido consulta para obtener contenido y descargar contenido de ellos. Cuando una caché de contenido responde con un error a una consulta de caché, la caché de contenido que hace la consulta marca a la caché de contenido que respondió como no amigable y no intentará consultarla otra vez hasta que PeerRetryInterval haya transcurrido. La subclave de tipo ya no es necesaria y se ignora si está presente. También puedes configurar este valor en el panel de configuración Contenido en caché. | Ninguna | |||||||||
PeerLocalSubnetsOnly | Indica si la caché de contenido debería ser del mismo nivel a otras cachés de contenido de la misma red local inmediata, en vez de a las cachés de contenido que utilicen la misma dirección IP pública que esta computadora. Cuando PeerLocalSubnetsOnly es verdadero, la caché de contenido sólo realiza consultas y responde exitosamente a consultas de puntos provenientes de cachés de contenido en la misma red local inmediata. Cuando el valor de PeerLocalSubnetsOnly sea “true” (verdadero), sustituirá la configuración de PeerFilterRanges y PeerListenRanges. Cuando el valor de PeerLocalSubnetsOnly es “false” (falso), la caché de contenido deriva a PeerFilterRanges y PeerListenRanges para configurar las restricciones de pares. Cuando el valor de la clave PeerLocalSubnetsOnly es “true” (verdadero) y la red cambia, las restricciones de los pares de la red local se actualizan según corresponda. También puedes configurar este valor en el panel de configuración Contenido en caché. | Sí | |||||||||
PeerNotifyTimeout | Especifica la duración, en segundos, de espera de respuestas de cachés de contenido del mismo nivel al hacerles ping en el arranque. Restringido entre 5 y 300 segundos, ambos inclusive. | 30 | |||||||||
PeerQueryTimeout | Especifica la duración, en segundos, de espera para que las cachés de contenido del mismo nivel respondan cuando se les consulta sobre su contenido. Restringido entre 1 y 60 segundos, ambos inclusive. | 5 | |||||||||
PeerRetryInterval | Especifica la duración, en segundos, durante la cual se ignora a las cachés de contenido del mismo nivel después de que hayan acumulado tres notificaciones o consultas fallidas consecutivas. Cuando haya transcurrido el intervalo de tiempo para el reintento, las cachés de contenido del mismo nivel se restaurarán en la lista de pares para realizar consultas de contenido. Restringido entre 30 y 3,600 segundos, ambos inclusive. | 900 (segundos) | |||||||||
PersonalCacheLimit | Limita la cantidad de espacio de almacenamiento (en bytes) que utiliza la caché de contenido para los datos de iCloud almacenados en caché. El valor de PersonalCacheLimit no debe superar el valor de CacheLimit. | 0 (ilimitado) | |||||||||
Port (Puerto) | Especifica el número de puerto TCP en el cual el contenido en caché acepta solicitudes para cargas o descargas. | 0 (usar un puerto aleatorio) | |||||||||
PruneAffinitiesAge | Las afinidades de usuario que tengan más días de los especificados se eliminan automáticamente de la caché de afinidades. Las afinidades de usuario proporcionan información a los clientes sobre el lugar de almacenamiento en caché de su contenido a fin de mejorar el rendimiento. La eliminación de afinidades de usuarios no afecta al contenido almacenado en caché. El mínimo restringido es de 7 días. | 30 (días) | |||||||||
PruneAffinitiesInterval | Especifica la frecuencia, en días, con la que la caché de contenido debe escanear y eliminar las afinidades de usuarios más antiguas que los días establecidos en PruneAffinitiesAge. Las afinidades de usuario, utilizadas sólo por iCloud, proporcionan pistas a los clientes sobre dónde es almacenado en caché su contenido, para un rendimiento mejorado. La eliminación de afinidades de usuarios no afecta al contenido almacenado en caché. El mínimo restringido es de 1 día. | 7 (días) | |||||||||
PruneAssetsAge | El contenido no solicitado durante este número de días se elimina automáticamente de la caché de contenido. El mínimo restringido es de 7 días. | 120 (días) | |||||||||
PruneAssetsInterval | Especifica la frecuencia, en días, con que la caché de contenido debe buscar y eliminar contenido que tenga más días que PruneAssetsAge. El mínimo restringido es de 1 día. | 7 (días) | |||||||||
PublicRanges | Especifica los intervalos de direcciones IP públicas que deben utilizar los servidores en la nube para asociar los clientes con las cachés de contenido. También puedes configurar este valor en el panel de configuración Contenido en caché. | No es el valor predeterminado | |||||||||
ReservedVolumeSpace | Especifica el número mínimo de bytes de espacio de almacenamiento libre que se tiene que dejar para el volumen que guarda el contenido en caché. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | Especifica la duración, en segundos, durante la que la caché de contenido debe intentar anular el registro cuando se está deteniendo. Al anular el registro se informa a los clientes de que la caché de contenido ya no está disponible para que no intenten utilizarla otra vez (o hasta que la caché de contenido se reinicie). Restringido entre 1 y 60 segundos, ambos inclusive. | 10 (segundos) | |||||||||
Verbose | Cuando Verbose=true, la caché de contenido registra un poco más de información sobre sus actividades. El registro incrementado puede reducir el rendimiento. Este parámetro no es recomendado para uso de largo plazo. Usa el comando Ejemplo: También puedes utilizar la app Consola para ver los registros. | No |
Ejemplo de la clave ListenRanges
Puedes usar la clave ListenRanges para especificar las cachés de contenido preferidos en topologías de red avanzadas, donde varias cachés de contenido se usan detrás de la misma dirección IP pública.
Ejemplo:
caching1.betterbag.com usa la clave ListenRanges para especificar un rango de 10.0.0.1 a 10.0.0.254 y 10.1.0.1 a 10.1.0.254, y establece la clave ListenRangesOnly a No.
caching2.betterbag.com usa la clave ListenRanges para especificar un rango de 10.1.0.1 a 10.1.0.39 (nota el traslape con el segundo rango de caching1), y establece la clave ListenRangesOnly a No.
Si un cliente cuya dirección IP es 10.0.0.10 solicita contenido, este es dirigido a caching1.
Si un cliente cuya dirección IP es 10.1.0.10 solicita contenido, este es dirigido ya sea a caching1 o caching2, seleccionados aleatoriamente.
Si un cliente cuya dirección IP es 10.2.0.10 solicita contenido, este es dirigido ya sea a caching1 o caching2, seleccionados aleatoriamente.
Si caching1 está apagado o se queda sin alimentación pero caching2 permanece disponible, todos los clientes son dirigidos a caching2.
Archivo plist de ejemplo
El siguiente es un ejemplo de archivo /Biblioteca/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>