Експертні параметри кешування вмісту на Mac
Можна використати експертні параметри конфігурації для точного налаштування кешування вмісту в мережевій конфігурації.
Експертні параметри конфігурації можна зазначити в командному рядку в Терміналі або змінивши значення ключів у файлі /Library/Preferences/com.apple.AssetCache.plist. Щоб деякі зміни набули чинності, кешування вмісту потрібно зупинити та перезапустити.
Налаштування експертних параметрів
Ви можете конфігурувати деякі експертні параметри для служби кешування вмісту, перейшовши до Системних параметрів (macOS 13 або новіша) або Параметрів системи (macOS 12.0.1 або старіша) > Поширення > Кешування вмісту. Потім натисніть і утримуйте клавішу Alt і виберіть «Експертні параметри».
Ви можете конфігурувати більше експертних параметрів за допомогою програми Термінал на Mac, використовуючи команду defaults
і наступну за нею команду sudo AssetCacheManagerUtil reloadSettings
. Щоб переглянути стандартні (не експертні) параметри, використовуйте команду AssetCacheManagerUtil settings
.
З командою defaults
можна використовувати звичайні та прості ключі.
Наприклад, щоб задати номер порту (5000) для нединамічного номера порту, номером порту має бути будь-яке число від 49192 до 65535. Відтак виконайте цю команду як адміністратор:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Port -int 50000
ListenRanges
— це складний ключ, який займає масив словників. Наприклад, виконайте цю команду як адміністратор, щоб указати два діапазони IP-адрес для ключа 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; } )'
Після стандартної команди виконайте цю команду, щоб перезапустити параметри кешу вмісту:
$ sudo AssetCacheManagerUtil reloadSettings
Ключі та значення файлу plist конфігурації кешування
Важливо! Не змінюйте жодні параметри у файлі com.apple.AssetCache.plist, крім описаних у таблиці нижче.
Ключ може мати фіксоване значення між двома значеннями. Значенням ключа може бути будь-яке число в діапазоні між малим і великим значеннями. Якщо його задано нижче мінімально допустимого значення, використовується мінімально допустиме значення. Якщо його задано вище максимально допустимого значення, використовується максимально допустиме значення. Наприклад, PeerDownloadTimeout — фіксоване значення від 5 до 300. Якщо для нього вказано 301 або 1000, тоді використовується значення 300. Якщо для нього вказано 4 або -10, тоді використовується значення 5.
Деякі зміни починають діяти після запуску команди AssetCacheManagerUtil reloadSettings
, а для інших потрібно зупинити та перезапустити кешування вмісту. Єдині ключі, що підтримують команду reloadSettings, це ті, які також можна вказати в параметрах кешування вмісту (згадано в таблиці нижче). Задавання значень у параметрах кешування вмісту.
macOS 13 або новіша. Виберіть меню Apple > Системні параметри > Загальні > Поширення > Кешування вмісту.
macOS 12.0.1 або старіша. Виберіть меню Apple > Системні параметри > Поширення > Кешування вмісту.
Ключ | Опис | Стандартне значення | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Попереджає, коли через брак місця в сховищі з кешу вилучається вміст, і вилучений вміст було додано до кешу вмісту раніше за вказану кількість днів. | 30 (днів) | |||||||||
AllowCacheDelete | Дає змогу автоматично вилучати вміст із кешу, коли на комп’ютері бракує місця для інших програм. Для максимальної ефективності кешування вмісту вимкніть цей параметр. | Так | |||||||||
AllowImports | Дозволяє запити на імпорт (закачування). | Так | |||||||||
AllowPersonalCaching | Дозволяє кешування даних користувачів iCloud. Принаймні один ключ AllowPersonalCaching або AllowSharedCaching повинен мати значення «так». Це значення також можна задати в параметрах кешування вмісту. | Так | |||||||||
AllowSharedCaching | Керує кешуванням вмісту не з iCloud, як-от оновленням програм і програмного забезпечення. Принаймні один ключ AllowPersonalCaching або AllowSharedCaching повинен мати значення «так». | Так | |||||||||
AllowWirelessPortable | Дозволяє ноутбукам Mac, що мають з’єднання лише з мережею Wi-Fi, виконувати кешування вмісту. | Так | |||||||||
CacheLimit | Указує максимальну кількість байтів місця в сховищі, що використовується для кешу вмісту. Це значення також можна задати в параметрах кешування вмісту. | 0 (необмежено) | |||||||||
DatabaseUpdateInterval | Указує, як часто кеш вмісту зберігає зміни в базі даних сховища. Збільшення інтервалу підвищує ризик втрати кешованого вмісту в разі збою в енергопостачанні. Максимальне значення — 3600 секунд (1 година). Якщо для інтервалу задано 0, це означає, щоб база даних завжди відразу оновлюватиметься без затримок, що зменшує продуктивність. | 5 (секунд) | |||||||||
DataPath | Указує шлях до каталогу, який використовується для зберігання кешованого вмісту. Якщо змінити цей параметр, кешований вміст переміщуватиметься зі старого в нове місце вручну, а не автоматично. Щоб переміщувати вміст автоматично, скористайтеся параметрами кешування вмісту. Це значення також можна задати в параметрах кешування вмісту. | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | Відображає сповіщення для попереджень кешування вмісту. Для максимальної ефективності кешів вмісту ввімкніть цей параметр. | Ні | |||||||||
DownloadMinRate | Указує мінімальну кількість байтів на секунду, яку мають підтримувати клієнти під час викачування вмісту з кешу. Якщо швидкість передавання даних нижча за це значення, кеш вмісту зупиняє викачування. Фіксована мінімальна швидкість — 1000 байтів на секунду. | 8000 (байтів на секунду) | |||||||||
DownloadTimeout | Указує період неактивності (у секундах) для викачування до клієнта перед відмовою. Фіксоване мінімальне значення — 10 секунд. | 180 (секунд) | |||||||||
ImportMaxRate | Указує максимальну кількість байтів на секунду, за якої кеш вмісту отримує дані від кожного клієнта. Значення 0 позначає необмежену кількість байтів на секунду. | 0 (байтів на секунду) | |||||||||
ImportMinRate | Указує мінімальну кількість байтів на секунду, яку мають підтримувати клієнти під час імпортування (закачування) вмісту. Якщо швидкість передавання даних нижча за це значення, кеш вмісту зупиняє імпорт. Мінімальна швидкість — 100 байт на секунду. | 2000 (байтів на секунду) | |||||||||
ImportRateAttenuation | Указує відсоткове значення згасання, додане до часу закачування. Фіксоване мінімальне значення — 0% згасання. Завеликі значення перевищують значення ключа ImportTimeout і спричиняють невдачі. | .20 (відсоткове значення) | |||||||||
ImportTimeout | Указує період неактивності (у секундах) для імпорту (закачування) від клієнта перед відмовою. Мінімальне значення — 10 секунд. | 300 (секунд) | |||||||||
Interface | Указує BSD-назву інтерфейсу мережі, яка використовуватиметься кешем вмісту. Наприклад en0. Також завжди слухає в інтерфейсі замикання на себе (localhost). | Слухання у вибраному інтерфейсі | |||||||||
KeepAwake | Якщо ввімкнено кешування вмісту, комп’ютер не переходить у режим сну. Для максимальної доступності кешів вмісту ввімкніть це налаштування. Увімкніть параметр «Запобігати автоматичному засинанню комп’ютера, коли дисплей вимкнено» у розділі «Збереження енергії» у системних параметрах (на macOS 13 або новішій) або системних уподобаннях (на macOS 12.0.1 або старіших версіях). | Ні | |||||||||
ListenRanges | Масив словників, де описується діапазон IP-адрес клієнта, які потрібно обслуговувати. Нижче наведено приклад використання ключа ListenRanges. Тип subkey більше не потрібний і за наявності він ігнорується. Це значення також можна задати в параметрах кешування вмісту. | немає | |||||||||
ListenRangesOnly | Якщо для ключа ListenRangesOnly задано значення «true», кеш вмісту надаватиме вміст лише для клієнтів у діапазонах, визначених ключем ListenRanges. Якщо ви хочете використовувати ключ ListenRangesOnly, потрібно також указати ключ ListenRanges. Це значення також можна задати в параметрах кешування вмісту. | Ні | |||||||||
ListenWithPeers AndParents | Указує, чи кешування вмісту реєструється об’єднанням ключів ListenRanges, PeerListenRanges і Parents, чи лише ключем ListenRanges. Зауважте, що ListenRanges можна автоматично генерувати з LocalSubnetsOnly, а PeerListenRanges можна автоматично генерувати з PeerLocalSubnetsOnly. | Типове значення залежить від історії комп’ютера:
| |||||||||
LocalSubnetsOnly | Указує, чи кеш вмісту має пропонувати вміст лише клієнтам у тій самій локальній мережі, що й кеш вмісту, а не клієнтам усіх локальних мереж, доступ до яких він може отримувати. Це значення також можна задати в параметрах кешування вмісту. | Так | |||||||||
LogClientIdentity | Визначає, чи кеш вмісту має реєструвати IP-адресу та номер порту клієнтів, які запитують вміст. | Ні | |||||||||
MaxConcurrentClients | Указує максимальну кількість клієнтів, яку може підтримувати кеш умісту. Apple не гарантує, що кеш вмісту може одночасно обслуговувати 3400 клієнтів. | 3400 | |||||||||
MaxParentDepth | Указує максимальну кількість переспрямувань для одного запиту з дочірнього кешу вмісту до батьківського. Надто глибокі запити (задовгий ланцюг переспрямування) примусово спрямовуються до оригінального кешу, а не батьківського. | 8 | |||||||||
MaxPeersToQuery | Указує максимальну кількість вузлів кешування вмісту, які можуть запитувати вміст. | 0 (необмежено) | |||||||||
MetricsInterval | Указує, як часто в секундах додавати рядок метрик у базу даних показників у /Library/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Фіксоване значення в межах 1–60 секунд включно. Ці метрики можна переглянути на панелі «Кеш» Монітора активності. | 60 (секунд) | |||||||||
MetricsMaxAge | Старіші за цю метрики вилучаються з бази даних метрик по одній на день. Фіксоване мінімальне значення — 30 днів. | 30 (днів) | |||||||||
OriginDownloadTimeout | Указує період неактивності (у секундах) для викачування із серверів Apple перед відмовою (і можливою повторною спробою викачування). Фіксоване значення від 5 до 300 секунд включно. | 60 | |||||||||
OriginUploadTimeout | Указує період неактивності (у секундах) для закачування на оригінальний сервер перед відмовою. Фіксоване значення від 5 до 3600 секунд включно. | 600 | |||||||||
ParentDownloadTimeout | Указує період неактивності (у секундах) для викачування з батьківського кешу вмісту перед відмовою (і можливою повторною спробою викачування). Фіксоване значення в межах 5-300 секунд включно. | 60 | |||||||||
ParentRetryInterval | Указує період ігнорування (у секундах) для батьківських кешів вмісту після п’яти послідовних збоїв у мережі або помилок сервера. Фіксоване значення в межах 30-3600 секунд включно. | 900 | |||||||||
Parents | Список локальних IP-адрес інших кешів вмісту, з яких цей кеш має викачувати або закачувати вміст замість викачування з або закачування безпосередньо до Apple. Недійсні адреси або адреси комп’ютерів, які не є кешами вмісту, ігноруються. Батьківські кеші, які стають недоступними, пропускаються відповідно до ключа ParentRetryInterval. Якщо всі батьківські кеші вмісту стануть недоступними, кеш вмісту викачуватиме або закачуватиме вміст безпосередньо в Apple, доки батьківський кеш вмісту знову стане доступним. Це значення також можна задати в параметрах кешування вмісту. | немає | |||||||||
ParentSelectionPolicy | Політика, яка використовуватиметься під час вибору з кількох конфігурованих батьківських кешів вмісту. З будь-якою політикою батьківські кеші, які тимчасово недоступні, пропускаються. Політики:
Це значення також можна задати в параметрах кешування вмісту. | циклічно | |||||||||
ParentUploadTimeout | Указує період неактивності (у секундах) для закачування в батьківський кеш вмісту перед відмовою. Фіксоване значення в межах 5–3600 секунд включно. | 600 | |||||||||
PeerDownloadTimeout | Указує період неактивності (у секундах) для викачування з вузла кешування вмісту перед відмовою (і можливою повторною спробою викачування). Фіксоване значення від 5 до 300 секунд включно. | 30 | |||||||||
PeerFilterRanges | Якщо ключ PeerFilterRanges — це масив (таких записів, як для ключа ListenRanges), кеш вмісту фільтрує та сортує список вузлів кешування відповідно до діапазонів у масиві. Кеш вмісту надсилає запити лише вузлам кешування, указаним у ключі PeerFilterRanges. Фільтрування та сортування застосовуються перед обрізанням списку вузлів кешування в разі досягнення кількості записів, указаної для ключа MaxPeersToQuery (якщо задано такий параметр). Якщо ключ PeerFilterRanges є порожнім масивом, кеш вмісту не надсилатиме запити вузлам кешування. Якщо ключ PeerFilterRanges — це булеве значення «true», кеш вмісту виконує вказані вище дії, однак замість ключа PeerFilterRanges використовує ключ ListenRanges. Якщо ключ PeerFilterRanges — це значення будь-якого іншого типу або воно відсутнє, кеш вмісту не фільтрує та не сортує список вузлів кешування перед обрізанням списку в разі досягнення кількості записів, указаної для ключа MaxPeersToQuery. Ключ PeerFilterRanges впливає лише на список інших кешів вмісту, у яких цей кеш вмісту запитує вміст і викачування. Він не впливає на вхідні запити вмісту з будь-якого іншого кешу вмісту. Тип subkey більше не потрібний і за наявності він ігнорується. Це значення також можна задати в параметрах кешування вмісту. | немає | |||||||||
PeerListenRanges | Якщо ключ PeerListenRanges є масивом словників, де кожен словник відповідає діапазону IP-адрес, кеш вмісту успішно відповідає лише на запити вузлів кешування з кешів вмісту з IP-адресою, що входить до цього масиву діапазонів. Якщо ключ PeerListenRanges є порожнім масивом, кеш вмісту відповідає з помилкою на запити кешів із будь-якого іншого кешу вмісту. Якщо ключ PeerListenRanges є логічним значенням true, кеш вмісту використовує значення ListenRanges замість значення PeerListenRanges, щоб вирішувати, на запити яких кешів з інших кешів вмісту він успішно відповідає. Якщо ключ PeerListenRanges є значенням будь-якого іншого типу або воно відсутнє, кеш вмісту успішно відповідає на запити кешів з усіх інших кешів вмісту. Ключ PeerListenRanges впливає лише на кеші вмісту, на запити кешів із яких цей кеш вмісту успішно відповідає. Він не впливає на список вузлів кешування, у яких цей кеш вмісту запитує вміст і з яких його викачує. Якщо кеш вмісту відповідає на запит кешу з помилкою, кеш, що запитує вміст, позначає кеш вмісту, що відповідає, як недружній і не надсилає повторні запити, доки не мине вказане для ключа PeerRetryInterval значення. Тип subkey більше не потрібний і за наявності він ігнорується. Це значення також можна задати в параметрах кешування вмісту. | немає | |||||||||
PeerLocalSubnetsOnly | Указує, чи кеш вмісту має підтримувати рівноправний зв’язок лише з іншими кешами вмісту в тій самій найближчій локальній мережі, а не з кешами вмісту, що використовують ту саму публічну IP-адресу, що й цей комп’ютер. Якщо ключ PeerLocalSubnetsOnly має знає значення «true», кеш вмісту запитує та успішно відповідає лише на рівноправні запити з кешів вмісту в тій самій найближчій локальній мережі. Якщо ключ PeerLocalSubnetsOnly має знає значення «true», він перезаписує конфігурацію ключів PeerFilterRanges і PeerListenRanges. Якщо ключ PeerLocalSubnetsOnly має знає значення «true», кеш вмісту посилається на ключі PeerFilterRanges і PeerListenRanges для конфігурування обмежень рівноправного зв’язку. Якщо ключ PeerLocalSubnetsOnly має знає значення true й мережа змінюється, обмеження рівноправного зв’язку локальної мережі відповідно оновлюються. Це значення також можна задати в параметрах кешування вмісту. | Так | |||||||||
PeerNotifyTimeout | Указує період очікування (у секундах) для відповідей із вузлів кешування вмісту в разі їх пінгування під час запуску. Фіксоване значення від 5 до 300 секунд включно. | 30 | |||||||||
PeerQueryTimeout | Указує період очікування (у секундах) для відповідей від вузлів кешування вмісту в разі запиту вмісту з їх кешів. Фіксоване значення від 1 до 60 секунд включно. | 5 | |||||||||
PeerRetryInterval | Указує період ігнорування (у секундах) для вузлів кешування вмісту після отримання трьох послідовних сповіщень або помилок запиту. Після завершення інтервалу на повторну спробу вузли кешування вмісту відновлюються до списку рівноправних учасників для запиту вмісту. Фіксоване значення від 30 до 3600 секунд включно. | 900 (секунд) | |||||||||
PersonalCacheLimit | Обмежує обсяг сховища в байтах, яке кеш вмісту використовує для кешованих даних iCloud. Значення ключа PersonalCacheLimit не повинно перевищувати значення CacheLimit. | 0 (необмежено) | |||||||||
Port | Указує номер TCP-порту, у якому кешування вмісту приймає запити на закачування або викачування. | 0 (використовувати випадковий порт) | |||||||||
PruneAffinitiesAge | Відповідності користувачів, яким більше за цю кількість днів, автоматично видаляються з кешу відповідностей. Відповідності користувачів надають клієнтам підказки щодо того, де кешується їхній вміст, задля покращення продуктивності. Зменшення відповідностей користувачів не впливає на кешований вміст. Фіксоване мінімальне значення — 7 днів. | 30 (днів) | |||||||||
PruneAffinitiesInterval | Указує, як часто (у днях) кеш вмісту має сканувати та вилучати відповідності користувачів, яким більше днів, ніж указано для ключа PruneAffinitiesAge. Відповідності користувачів, які використовуються лише для iCloud, надають клієнтам підказки щодо того, де кешується їхній вміст, задля покращення продуктивності. Зменшення відповідностей користувачів не впливає на кешований вміст. Фіксоване мінімальне значення — один день. | 7 (днів) | |||||||||
PruneAssetsAge | Вміст, який не запитувався таку кількість днів, автоматично видаляється з кешу вмісту. Фіксоване мінімальне значення — 7 днів. | 120 (днів) | |||||||||
PruneAssetsInterval | Указує, як часто (у днях) кеш вмісту має сканувати та вилучати вміст, якому більше днів, ніж указано для ключа PruneAssetsAge. Фіксоване мінімальне значення — один день. | 7 (днів) | |||||||||
PublicRanges | Указує діапазони публічних IP-адрес, які можуть використовувати хмарні сервери для зіставлення клієнтів із кешами вмісту. Це значення також можна задати в параметрах кешування вмісту. | не стандартне | |||||||||
ReservedVolumeSpace | Указує, який мінімальний об’єм вільного місця в байтах підтримувати на томі, де зберігається кешований вміст. | 2000000000 (2 ГБ) | |||||||||
TerminationTimeout | Указує, як довго (у секундах) кеш вмісту намагатиметься скасувати реєстрацію, якщо її було зупинено. Скасування реєстрації повідомляє клієнтам, що кеш вмісту більше недоступний, тож вони не намагатимуться використати його знову (або доки кеш вмісту не буде запущено повторно). Фіксоване значення від 1 до 60 секунд включно. | 10 (секунд) | |||||||||
Verbose | Якщо ключ Verbose має значення true, кеш вмісту реєструє трохи більше інформації про його дії. Збільшення обсягу інформації, що реєструється, може зменшити продуктивність. Не рекомендується використовувати цей параметр тривалий час. Щоб переглянути журнали кешування вмісту, скористайтеся командою Наприклад: Також можна скористатися програмою Консоль, щоб переглянути журнали. | Ні |
Приклад ключа ListenRanges
Ви можете скористатися ключем ListenRanges, щоб указати пріоритетні кеші вмісту в експертних топологіях мережі, де за тією самою публічною IP-адресою використовується кілька кешів вмісту.
Наприклад:
caching1.betterbag.com використовує ключ ListenRanges, щоб указати діапазон від 10.0.0.1 до 10.0.0.254 і від 10.1.0.1 до 10.1.0.254, та задає ключу ListenRangesOnly значення «No».
caching2.betterbag.com використовує ключ ListenRanges, щоб указати діапазон від 10.1.0.1 до 10.1.0.39 (зауважте: накладається з другим діапазоном caching1) і задає ключу ListenRangesOnly значення «No».
Якщо клієнт з IP-адресою 10.0.0.10 запитує вміст, він скеровується до caching1.
Якщо клієнт з IP-адресою 10.1.0.10 запитує вміст, він скеровується до caching1 або caching2 (вибирається випадково).
Якщо клієнт з IP-адресою 10.2.0.10 запитує вміст, він скеровується до caching1 або caching2 (вибирається випадково).
Якщо caching1 вимкнено чи стався збій в енергопостачанні, але досі доступне caching2, усі клієнти спрямовуються до caching2.
Зразок файлу plist
Нижче наведено зразок файлу /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>