macOS 10.15: повільна за задумом (2020)

У епізоді 379 ATP Марко Армент і Джон Сіракуза описали помітні затримки та зависання після оновлення до macOS 10.15.

Я сам боровся з цією проблемою та знайшов кілька системних операцій, які можуть спричиняти ці затримки, про які я розповім нижче.

Один із способів усунути затримку — вимкнути підключення до Інтернету. Це важкі ліки, але якщо ви помітили ці затримки, спробуйте протягом години, щоб переконатися, що проблему справді вирішено, вимкнувши підключення до Інтернету.

Ще один спосіб зменшити затримки — вимкнути захист цілісності системи. Я кажу зменшити, тому що у мене все ще є затримки, навіть якщо SIP вимкнено, але загалом система здається набагато швидшою, і я настійно рекомендую зробити те саме всім, хто вважає, що їхня система повільна.

Створення нового процесу

Apple запровадила нотаріальне посвідчення, окрім незручностей, які це створює для нас, розробників, це також призводить до погіршення взаємодії з користувачем, оскільки коли користувач вперше запускає новий виконуваний файл, Apple затримує виконання, очікуючи відповіді від свого сервера. Для мене ця перевірка займає майже секунду.

Це стосується не тільки файлів, завантажених з Інтернету, і не лише того, коли ви запускаєте їх через Finder, це все. Отже, навіть якщо ви напишете однорядковий сценарій оболонки та запустите його в терміналі, ви отримаєте затримку!

Ви можете перевірити це, запустивши такі два рядки в терміналі:

echo $'#!/bin/sh\necho Привіт' > /tmp/test.sh && chmod a+x /tmp/test.sh час /tmp/test.sh && час /tmp/test.sh

Оновлення 2020-05-23: деякі користувачі мають категорію Інструменти розробника на панелі налаштувань безпеки та конфіденційності. Якщо ваш термінал додано до цієї категорії, ви не зможете відтворити цю затримку. Хоча підтверджень реальності затримки було достатньо. Користувач із Китаю повідомляє про затримку 5,7 секунди під час використання VPN.

Чесно кажучи, це просто дивно. Apple надсилає вихідні коди всіх моїх спеціальних сценаріїв на свій сервер? Зважаючи на їхню позицію щодо конфіденційності, я так не думаю, тому вони, ймовірно, просто надсилають контрольну суму, але що вони роблять із цією контрольною сумою, яку система не могла зробити локально?

Що стосується нотаріальної перевірки, результат кешується, тому другий виклик має бути швидким, але якщо ви розробник, ви можете регулярно оновлювати свої сценарії та двійкові файли, запускаючи нові перевірки (здається, кешування є inode- на основі, тому резервне копіювання оновлення на місці може уникнути повторної перевірки), або ви можете мати робочі процеси, які включають створення та динамічне виконання сценаріїв, продуктивність яких тепер залежить від швидкості реагування серверів Apple.

Найгірша затримка, яку я бачив для цієї конкретної проблеми, становить близько 7 секунд, і у мене було кілька епізодів, коли здавалося, що результат не кешувався, тому повторні запуску все одно мали б затримку.< /p>

Про цю проблему повідомлено в Apple, їй присвоєно FB7674490. Apple, однак, відповіла, що це було «задумом» (звідси і назва цієї публікації).

Бажані розташування файлової системи

Apple має кілька розташувань файлової системи, для доступу до яких потрібен дозвіл користувача, наприклад ~/Desktop, ~/Documents і ~/Downloads.

Однак дивно, що просте отримання відображуваного імені чи піктограми будь-якої з цих папок запустить код Apple для перевірки того, що клієнт має право доступу до розташування.

Це робиться шляхом надсилання повідомлення процесу sandboxd, який надсилає повідомлення tccd, який викликає SecCodeCheckValidityWithErrors і, здається, спілкується з іншим процесом, але я не можу знайти, який із них, і це займає приблизно 150 мс на слот.< /p>

Цей час очікування застосовується до кожного з привілейованих місць, до яких здійснюється доступ, і поки результат зберігається в кеш-пам’яті, кеш триває лише до наступного перезапуску програми.

Щоб відтворити це, я відкрив Transmission і перейшов до «Налаштування» → «Передачі». Тут ви можете налаштувати 3 різні папки, які відображатимуться у спливаючій кнопці з назвою та піктограмою. Я налаштував їх як ~/Desktop, ~/Documents і ~/Downloads. Повторний запуск передачі та відкриття налаштувань у моїй системі викликали (досить помітну) затримку на 0,62 секунди.

Відповідні частини стека (під час цієї затримки) були -[NSWorkspace iconForFile:] → getattrlist → __WAITING_ON_APPROVAL_FROM_SANDBOXD__.

Про цю проблему повідомлено в Apple, їй присвоєно FB7674470.

Доступ через брелок

Як і у випадку з привілейованими папками, елементи в’язки ключів також...

У епізоді 379 ATP Марко Армент і Джон Сіракуза описали помітні затримки та зависання після оновлення до macOS 10.15.

Я сам боровся з цією проблемою та знайшов кілька системних операцій, які можуть спричиняти ці затримки, про які я розповім нижче.

Один із способів усунути затримку — вимкнути підключення до Інтернету. Це важкі ліки, але якщо ви помітили ці затримки, спробуйте протягом години, щоб переконатися, що проблему справді вирішено, вимкнувши підключення до Інтернету.

Ще один спосіб зменшити затримки — вимкнути захист цілісності системи. Я кажу зменшити, тому що у мене все ще є затримки, навіть якщо SIP вимкнено, але загалом система здається набагато швидшою, і я настійно рекомендую зробити те саме всім, хто вважає, що їхня система повільна.

Створення нового процесу

Apple запровадила нотаріальне посвідчення, окрім незручностей, які це створює для нас, розробників, це також призводить до погіршення взаємодії з користувачем, оскільки коли користувач вперше запускає новий виконуваний файл, Apple затримує виконання, очікуючи відповіді від свого сервера. Для мене ця перевірка займає майже секунду.

Це стосується не тільки файлів, завантажених з Інтернету, і не лише того, коли ви запускаєте їх через Finder, це все. Отже, навіть якщо ви напишете однорядковий сценарій оболонки та запустите його в терміналі, ви отримаєте затримку!

Ви можете перевірити це, запустивши такі два рядки в терміналі:

echo $'#!/bin/sh\necho Привіт' > /tmp/test.sh && chmod a+x /tmp/test.sh час /tmp/test.sh && час /tmp/test.sh

Оновлення 2020-05-23: деякі користувачі мають категорію Інструменти розробника на панелі налаштувань безпеки та конфіденційності. Якщо ваш термінал додано до цієї категорії, ви не зможете відтворити цю затримку. Хоча підтверджень реальності затримки було достатньо. Користувач із Китаю повідомляє про затримку 5,7 секунди під час використання VPN.

Чесно кажучи, це просто дивно. Apple надсилає вихідні коди всіх моїх спеціальних сценаріїв на свій сервер? Зважаючи на їхню позицію щодо конфіденційності, я так не думаю, тому вони, ймовірно, просто надсилають контрольну суму, але що вони роблять із цією контрольною сумою, яку система не могла зробити локально?

Що стосується нотаріальної перевірки, результат кешується, тому другий виклик має бути швидким, але якщо ви розробник, ви можете регулярно оновлювати свої сценарії та двійкові файли, запускаючи нові перевірки (здається, кешування є inode- на основі, тому резервне копіювання оновлення на місці може уникнути повторної перевірки), або ви можете мати робочі процеси, які включають створення та динамічне виконання сценаріїв, продуктивність яких тепер залежить від швидкості реагування серверів Apple.

Найгірша затримка, яку я бачив для цієї конкретної проблеми, становить близько 7 секунд, і у мене було кілька епізодів, коли здавалося, що результат не кешувався, тому повторні запуску все одно мали б затримку.< /p>

Про цю проблему повідомлено в Apple, їй присвоєно FB7674490. Apple, однак, відповіла, що це було «задумом» (звідси і назва цієї публікації).

Бажані розташування файлової системи

Apple має кілька розташувань файлової системи, для доступу до яких потрібен дозвіл користувача, наприклад ~/Desktop, ~/Documents і ~/Downloads.

Однак дивно, що просте отримання відображуваного імені чи піктограми будь-якої з цих папок запустить код Apple для перевірки того, що клієнт має право доступу до розташування.

Це робиться шляхом надсилання повідомлення процесу sandboxd, який надсилає повідомлення tccd, який викликає SecCodeCheckValidityWithErrors і, здається, спілкується з іншим процесом, але я не можу знайти, який із них, і це займає приблизно 150 мс на слот.< /p>

Цей час очікування застосовується до кожного з привілейованих місць, до яких здійснюється доступ, і поки результат зберігається в кеш-пам’яті, кеш триває лише до наступного перезапуску програми.

Щоб відтворити це, я відкрив Transmission і перейшов до «Налаштування» → «Передачі». Тут ви можете налаштувати 3 різні папки, які відображатимуться у спливаючій кнопці з назвою та піктограмою. Я налаштував їх як ~/Desktop, ~/Documents і ~/Downloads. Повторний запуск передачі та відкриття налаштувань у моїй системі викликали (досить помітну) затримку на 0,62 секунди.

Відповідні частини стека (під час цієї затримки) були -[NSWorkspace iconForFile:] → getattrlist → __WAITING_ON_APPROVAL_FROM_SANDBOXD__.

Про цю проблему повідомлено в Apple, їй присвоєно FB7674470.

Доступ через брелок

Як і у випадку з привілейованими папками, елементи в’язки ключів також...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow