Configurar las opciones avanzadas del almacenamiento de contenido en caché en la Mac
Puedes usar parámetros de configuración avanzada para afinar la caché del contenido de la configuración de tu red.
Puedes establecer parámetros de configuración avanzada del contenido en caché, ya sea usando la línea de comandos en Terminal o modificando el valor de las claves en el archivo /Library/Preferences/com.apple.AssetCache.plist. Para que algunos cambios tomen efecto, el almacenamiento de contenido en caché debe ser detenido y reiniciado.
Usar Terminal para establecer parámetros de configuración avanzados
En la app Terminal en tu Mac, puedes establecer parámetros de configuración avanzada usando el comando defaults
seguido del comando sudo AssetCacheManagerUtil reloadSettings
. Usa el comando AssetCacheManagerUtil settings
para ver la configuración estándar (no avanzada).
Para obtener más información sobre el comando AssetCacheManagerUtil
, consulta “Administrar el contenido en caché desde la línea de comando” y la página “man” AssetCacheManagerUtil(8).
Puedes configurar claves sencillas y complejas con el comando defaults
.
Por ejemplo, para configurar la clave Interface
a en1, ejecuta este comando como administrador:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
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”, asegúrate de ejecutar el siguiente comando para volver a cargar la configuración de la caché de contenido:
$ sudo AssetCacheManagerUtil reloadSettings
Para obtener más información sobre el comando “defaults”
, consulta la página “man” defaults(1).
Configuración de caché: claves y valores de “plist”
Importante: no cambies ninguna configuración en el archivo com.apple.AssetCache.plist distinta a las que se describen en la tabla de abajo.
La clave puede tener un valor que está limitado entre dos valores. El valor de la clave puede ser cualquier número en el rango entre los valores bajo y alto. Si está establecido por debajo del valor del límite inferior, el se usa el valor del límite inferior. Si está establecido por arriba del valor del límite superior, el se usa el valor del límite superior. For ejemplo, PeerDownloadTimeout está limitado 5 and 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 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 los valores en las preferencias de Contenido en caché, selecciona menú Apple > Preferencias del Sistema y haz clic en “Contenido en caché”.
Clave | Descripción | Por omisión | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Cuando el contenido es purgado del caché de contenido porque el espacio en disco es bajo y el contenido purgado fue agregado al caché de contenido hace menos días que los especificados, recibirás una alerta de espacio. | 30 (días) | |||||||||
AllowCacheDelete | Permitir que el contenido sea purgado desde el caché automáticamente cuando la computadora necesita espacio en disco para otras apps. | Sí | |||||||||
AllowImports | Permitir solicitudes de importación (cargar). | Sí | |||||||||
AllowPersonalCaching | Permitir el uso de caché para datos de iCloud de los usuarios. Al menos una de las claves AllowPersonalCaching o AllowSharedCaching debe ser sí. También puedes establecer este valor en las preferencias de “Contenido en caché” | Sí | |||||||||
AllowSharedCaching | Controla el caché del contenido que no es de iCloud, como las actualizaciones de apps y software. Al menos una de las claves AllowPersonalCaching o AllowSharedCaching debe ser sí. | Sí | |||||||||
AllowWirelessPortable | Permitir que las computadoras portátiles que sólo tienen conexiones a red Wi‑Fi ejecuten contenido en caché. | Sí | |||||||||
CacheLimit | El número máximo de bytes de espacio en disco que será usado para el caché de contenido. También puedes establecer este valor en las preferencias de “Contenido en caché” | 0 (Ilimitado) | |||||||||
DatabaseUpdateInterval | Qué tan frecuentemente el caché de contenido guarda cambios en su propia base de datos en el disco. Al elevar el intervalo se incrementa el riesgo de perder contenido en caché tras una falla de energía. El máximo es 3600 segundos (1 hora). Un intervalo de 0 significa que siempre se actualice la base de datos inmediatamente sin demora, lo cual reduce el rendimiento. | 5 (segundos) | |||||||||
DataPath | La ruta al directorio usado para almacenar el contenido en caché. 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 trasladar contenido automáticamente, usa el panel de preferencias “Contenido en caché” (consulta Selecciona un volumen para la caché). También puedes establecer este valor en las preferencias de “Contenido en caché” | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | 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 | 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 | El número máximo de bytes por segundo para los datos que el caché de contenido recibe de cada cliente. Un valor de 0 indica un número limitado de bytes por segundo. | 0 (bytes por segundo) | |||||||||
ImportMinRate | El número mínimo de bytes por segundo que los clientes deben sostener mientras importan (cargan) contenido. La caché de contenido detiene las importaciones que transfieren datos más lentamente que esta velocidad. La velocidad mínima es de 100 bytes por segundo. | 2000 (bytes por segundo) | |||||||||
ImportRateAttenuation | El porcentaje de atenuación agregado al tiempo de carga. El mínimo limitado es 0% de atenuación. Los valores demasiado grandes excederán el ImportTimeout y ocasionarán fallas. | 0.20 (porcentaje) | |||||||||
ImportTimeout | Cuánto tiempo se permite (en segundos) que una importación (carga) desde un cliente permanezca inactiva antes de dejar de intentarlo. El mínimo es 10 segundos. | 300 (segundos) | |||||||||
Interfaz | El nombre de BSD de una interfaz de red a ser usada por la caché de contenido. | Escuchar en todas las interfaces | |||||||||
ListenRanges | Un arreglo de diccionarios que describen el rango de direcciones IP del cliente a servir. Consulta abajo para ver un ejemplo usando la clave ListenRanges. También puedes establecer este valor en las preferencias de “Contenido en caché” | ninguno | |||||||||
ListenRangesOnly | Sí ListenRangesOnly es definida como “verdad”, la caché de contenido proporciona contenido únicamente a los clientes en los rangos especificados por la clave ListenRanges. Si quieres usar la clave ListenRangesOnly, debes especificar también la clave ListenRanges. También puedes establecer este valor en las preferencias de “Contenido en caché” | No | |||||||||
ListenWithPeersAndParents | 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 ListenRanges puede generarse automáticamente desde LocalSubnetsOnly; y que PeerListenRanges se puede generar automáticamente desde PeerLocalSubnetsOnly. | El valor por omisión depende del historial de la computadora:
| |||||||||
LocalSubnetsOnly | Si la caché de contenido debe o no ofrecer contenido sólo a los clientes en la misma red local inmediata como la caché de contenido, en lugar de ofrecerlo a clientes en redes locales que pueden ser alcanzadas por la caché de contenido. También puedes establecer este valor en las preferencias de “Contenido en caché” | Sí | |||||||||
LogClientIdentity | Determina si la caché de contenido debe o no registrar la dirección IP y el número de puerto de los clientes que solicitan el contenido. | No | |||||||||
MaxConcurrentClients | Este límite sirve para evitar que el almacenamiento de contenido en caché se quede sin descriptores de archivo. Apple no garantiza que una caché de contenido pueda lograr 3400 clientes concurrentes. | 3400 | |||||||||
MaxParentDepth | El número máximo de veces para una solicitud individual que la caché secundaria de contenido reenviará la solicitud a una caché principal de contenido. Las solicitudes que son demasiado profundas (la cadena de reenvío es demasiado larga) son forzadas al origen en vez de a una caché principal. | 8 | |||||||||
MaxPeersToQuery | El número máximo de puntos de caché con contenido que pueden pedir contenido. | 0 (Ilimitado) | |||||||||
MetricsInterval | La frecuencia (en segundos) en la que se agrega una fila de métricas a la base de datos de métricas en /Librería/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 | Cuánto tiempo, en segundos, se permite que una descarga de los servidores de Apple quede inactiva antes de dejar de tratar (y posiblemente tratar de descargar nuevamente). Limitado entre 5 y 300 segundos, estos incluidos. | 60 | |||||||||
OriginUploadTimeout | Cuánto tiempo se permite, en segundos, que una carga a un servidor de origen permanezca inactiva antes de dejar de intentarlo. Limitado entre 5 y 3600 segundos (ambos incluidos). | 600 | |||||||||
ParentDownloadTimeout | Cuánto tiempo (en segundos) se permite que la descarga de una caché de contenido principal permanezca inactiva antes de dejar de intentarlo (y posiblemente tratar de descargar nuevamente). Limitado entre 5 y 300 segundos, estos incluidos. | 60 | |||||||||
ParentRetryInterval | Cuánto tiempo, en segundos, se ignoran las cachés principales de contenido después de que han acumulado cinco fallas de red o errores de servidor consecutivamente. Limitado entre 30 y 3600 segundos, estos incluidos. | 900 | |||||||||
Principales | Una lista de las direcciones IP locales de otras cachés de contenido desde las cuales esta caché debe descargar o cargar contenido en vez de descargar o cargar a Apple directamente. Se ignoran las direcciones inválidas y las de computadoras que no son cachés de contenido. Las cachés principales que dejan de estar disponibles son omitidas de acuerdo a ParentRetryInterval. Si todas las cachés principales de contenido dejan de estar disponibles, la caché de contenido descargará o cargará directamente de/hacia Apple hasta que una caché de contenido principal esté disponible nuevamente. También puedes establecer este valor en las preferencias de “Contenido en caché” | ninguno | |||||||||
ParentSelectionPolicy | La política que se usa para elegir una caché de contenido principal cuando hay varias configuradas. Con cada una de las políticas, las cachés principales que no están disponibles temporalmente son omitidas. Las políticas son:
También puedes establecer este valor en las preferencias de “Contenido en caché” | round-robin | |||||||||
ParentUploadTimeout | Cuánto tiempo (en segundos) se permite que la carga de una caché de contenido principal permanezca inactiva antes de dejar de intentarlo. Limitado entre 5 y 3600 segundos, estos incluidos. | 600 | |||||||||
PeerDownloadTimeout | Cuánto tiempo, en segundos, se permite que una descarga de un punto caché de contenido quede inactiva antes de dejar de tratar (y posiblemente tratar de descargar nuevamente). Limitado entre 5 y 300 segundos, estos incluidos. | 30 | |||||||||
PeerFilterRanges | Cuando PeerFilterRanges es un arreglo (de entradas como aquellas para ListenRanges), la caché de contenido filtra y ordena su lista de puntos de acuerdo a los rangos en el arreglo. 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 es verdadero booleano, la caché de contenido hace lo mismo que lo descrito arriba pero usa ListenRanges en vez del valor de PeerFilterRanges. Cuando PeerFilterRanges es cualquier otro tipo u falta el valor, la caché de contenido ni filtra ni ordena su lista de puntos antes de truncar la lista conforme 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 desde cualquier otra caché de contenido. También puedes establecer este valor en las preferencias de “Contenido en caché” | ninguno | |||||||||
PeerListenRanges | Cuando PeerListenRanges es un arreglo de diccionarios donde cada diccionario representa un rango de direcciones IP, la caché de contenido sólo responderá con éxito a las consultas de punto desde cachés de contenido con una dirección IP contenida dentro de este arreglo de rangos. Cuando PeerListenRanges es un arreglo vacío, la caché de contenido responderá con un error a las consultas de caché desde cualquier otra caché de contenido. Cuando PeerListenRanges es un verdadero booleano, la caché de contenido usará el valor de ListenRanges en vez del valor PeerListenRanges para decidir a cuáles otras cachés de contenido les responderá sus consultas de caché exitosamente. Cuando PeerListenRanges es cualquier otro tipo o el valor falta, la caché de contenido responderá exitosamente con un error a las consultas de caché desde todas las otras cachés de contenido. PeerListenRanges sólo afecta a cuáles cachés de contenido responderá exitosamente esta caché de contenido sus consultas de caché. No tiene efecto en la lista de puntos que esta caché de contenido consultará 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. También puedes establecer este valor en las preferencias de “Contenido en caché” | ninguno | |||||||||
PeerLocalSubnetsOnly | Especifica si la caché de contenido debe o no conectarse como punto únicamente con otras cachés de contenido en la misma red local inmediata, en lugar de con otras cachés de contenido que usen 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 PeerLocalSubnetsOnly es verdadero, este sustituye la configuración de PeerFilterRanges y PeerListenRanges. Cuando PeerLocalSubnetsOnly es falso, la caché de contenido postpone a PeerFilterRanges y PeerListenRanges para configurar las restricciones de puntos. Cuando PeerLocalSubnetsOnly es verdadero y la red cambia, las restricciones de puntos de red local se actualizan apropiadamente. También puedes establecer este valor en las preferencias de “Contenido en caché” | Sí | |||||||||
PeerNotifyTimeout | Cuánto tiempo, en segundos, se esperan las respuestas de puntos cachés de contenido cuando se envía un ping en el arranque. Limitado entre 5 y 300 segundos, estos incluidos. | 30 | |||||||||
PeerQueryTimeout | Cuánto tiempo, en segundos, se esperan las respuestas de puntos cachés de contenido cuando se les solicita respecto al contenido en sus cachés. Limitado entre 1 y 60 segundos, estos incluidos. | 5 | |||||||||
PeerRetryInterval | Cuánto tiempo, en segundos, se ignoran las puntos caché de contenido después de que han acumulado tres notificaciones o fallas en consultas consecutivamente. Después de que ha pasado el intervalo para reintentar, los puntos caché de contenido son reordenados a la lista de puntos para consulta de contenido. Limitado entre 30 y 3600 segundos, estos incluidos. | 900 (segundos) | |||||||||
PersonalCacheLimit | Limita cuánto espacio en disco usa el caché de contenido para datos en caché de iCloud, en bytes. El PersonalCacheLimit no debe exceder el CacheLimit. | 0 (Ilimitado) | |||||||||
Puerto | 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 más antiguas que este número de días son eliminadas del caché de afinidades automáticamente. Las afinidades de usuario proporcionan pistas a los clientes sobre dónde es almacenado en caché su contenido, para un rendimiento mejorado. Eliminar las afinidades de usuarios no tiene efecto en el contenido en caché. El mínimo limitado es 7 días. | 30 (días) | |||||||||
PruneAffinitiesInterval | Qué tan frecuentemente, en días, el 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. Eliminar las afinidades de usuarios no tiene efecto en el contenido en caché. El mínimo limitado es de un día. | 7 (días) | |||||||||
PruneAssetsAge | El contenido que no ha sido solicitado en este número de días será eliminado del caché de contenido automáticamente. El mínimo limitado es 7 días. | 120 (días) | |||||||||
PruneAssetsInterval | Qué tan frecuentemente, en días, el caché de contenido debe escanear y eliminar el contenido más antiguo que los días establecidos en PruneAssetsAge. El mínimo limitado es de un día. | 7 (días) | |||||||||
PublicRanges | Rangos de direcciones IP públicas que los servidores de red deben usar para corresponder los clientes con los cachés de contenido. También puedes establecer este valor en las preferencias de “Contenido en caché” | no hay valor por omisión | |||||||||
ReservedVolumeSpace | El número mínimo de bytes de espacio libre en disco a ser mantenidos para el volumen que almacena el contenido en caché. | 2000000000 (2 GB) | |||||||||
TerminationTimeout | Cuánto tiempo, en segundos, el caché de contenido debe intentar darse de baja del registro cuando está siendo detenido. Al darse de baja del registros se informa a los clientes que el caché de contenido ya no está disponible de modo que ya no intentará usar dicha caché de contenido (o hasta que la caché de contenido sea iniciada nuevamente). Limitado entre 1 y 60 segundos, estos incluidos. | 10 (segundos) | |||||||||
Detallado | Cuando Verbose=true la caché de contenido registra un poco más de información acerca de sus actividades. El incremento en el registro puede reducir el rendimiento. Este parámetro no es recomendado para uso de largo plazo. Usa el comando Por ejemplo: También puedes usar 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.
Por ejemplo:
caching1.example.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.example.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 /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>