Настроювання експертних параметрів кешування вмісту на Mac
Можна використати експертні параметри конфігурації для точного налаштування кешування вмісту в мережевій конфігурації.
Експертні параметри конфігурації можна задати за допомогою командного рядка в Терміналі або змінивши значення ключів у файлі /Library/Preferences/com.apple.AssetCache.plist. Щоб деякі зміни набули чинності, кешування вмісту потрібно зупинити та перезапустити.
Використання Терміналу для задання експертних параметрів конфігурації
В програмі Термінал на Mac ви можете задати експертні параметри конфігурації за допомогою команди defaults
і sudo AssetCacheManagerUtil reloadSettings
. Щоб переглянути стандартні (не експертні) параметри, використовуйте команду AssetCacheManagerUtil settings
.
Додаткову інформацію про команду AssetCacheManagerUtil
дивіться в розділі Керування кешуванням вмісту з командного рядка і на man-сторінці AssetCacheManagerUtil(8).
Зі стандартною
командою можна використовувати звичайні та прості ключі.
Наприклад, щоб для ключа Interface
указати значення en1, виконайте таку команду як адміністратор:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
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
Докладну інформацію про стандартну
команду можна знайти на man-сторінці defaults(1).
Ключі та значення файлу plist конфігурації кешування
Важливо! Не змінюйте жодні параметри у файлі com.apple.AssetCache.plist, крім описаних у таблиці нижче.
Ключ може мати фіксоване значення між двома значеннями. Значенням ключа може бути будь-яке число в діапазоні між малим і великим значеннями. Якщо його задано нижче мінімально допустимого значення, використовується мінімально допустиме значення. Якщо його задано вище максимально допустимого значення, використовується максимально допустиме значення. Наприклад, PeerDownloadTimeout — фіксоване значення від 5 до 300. Якщо для нього вказано 301 або 1000, тоді використовується 300. Якщо для нього вказано 4 або -10, тоді використовується 5.
Деякі зміни починають діяти після запуску команди AssetCacheManagerUtil reloadSettings
, а для інших потрібно зупинити та перезапустити кешування вмісту. Єдині ключі, що підтримують команду reloadSettings, це ті, які також можна вказати в параметрах кешування вмісту (згадано в таблиці нижче). Щоб задати значення в параметрах кешування вмісту, виберіть меню 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-ім’я інтерфейсу мережі, яке використовуватиметься кешем вмісту. | Прослуховувати всі інтерфейси | |||||||||
KeepAwake | Якщо увімкнено кешування вмісту, комп’ютер не переходить в режим сну. Для максимальної доступності кешів вмісту увімкніть це налаштування або виберіть меню Apple > Системні параметри, клацніть «Збереження енергії», а тоді увімкніть параметр «Запобігати автоматичному засинанню комп’ютера, коли дисплей вимкнено». | Ні | |||||||||
ListenRanges | Масив словників, де описується діапазон IP-адрес клієнта, які потрібно обслуговувати. Нижче наведено приклад використання ключа ListenRanges. Тип subkey більше не потрібний, і, якщо є, то ігнорується. Це значення також можна задати в параметрах кешування вмісту. | немає | |||||||||
ListenRangesOnly | Якщо для ключа ListenRangesOnly задано значення «true», кеш вмісту надаватиме вміст лише для клієнтів у діапазонах, визначених ключем ListenRanges. Якщо ви хочете використовувати ключ ListenRangesOnly, потрібно також указати ключ ListenRanges. Це значення також можна задати в параметрах кешування вмісту. | Ні | |||||||||
ListenWithPeersAndParents | Вказує, чи кешування вмісту реєструється об’єднанням ключів 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 (необмежено) | |||||||||
Порт | Номер 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.example.com використовує ключ ListenRanges, щоб указати діапазон від 10.0.0.1 до 10.0.0.254 і від 10.1.0.1 до 10.1.0.254, та задає ключу ListenRangesOnly значення «No».
caching2.example.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/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>