Заміряти процес
Також: замір програми, замір процесу
Коротка відповідь
«Заміряти процес» — це інструмент Монітора активності, який протягом кількох секунд записує, що робить вибраний процес, і створює текстовий звіт про те, на що витрачають час його потоки. Розробники за такими звітами зʼясовують, чому програма повільна, зайнята чи зависла.
За описом Apple, «Заміряти процес» створює звіт про вибраний процес за 3 секунди. У звіті перелічено кожен потік і функції, які він виконував, з лічильниками, що показують, як часто траплялася кожна з них.
Читати звіт самостійно не обовʼязково. Найкорисніший він тоді, коли програма зависла або сильно навантажує процесор і ви хочете надіслати розробникові щось конкретне.
Як заміряти процес у Моніторі активності
Виберіть процес, натисніть кнопку «Ще» (три крапки) угорі вікна й виберіть «Заміряти процес». Також можна двічі клацнути процес і натиснути «Заміряти» у вікні, що відкриється.
Коли зʼявиться звіт, його можна зберегти як текстовий файл і додати до звіту про помилку чи запиту в підтримку.
Як заміряти процес із Термінала
Виконайте sample <PID> 5, щоб заміряти процес протягом 5 секунд. Замість PID можна вказати частину назви процесу. Звіт виводиться на екран і зберігається у файл, а шлях до нього показується в кінці.
Як читати звіт заміру
Звіт починається із заголовка: назва процесу й PID, його шлях, батьківський процес, тип коду й версія macOS. Найважливіша частина йде далі, у розділі Call graph.
У графі викликів (call graph) перелічено всі потоки. Головний потік, який обробляє клацання й натискання клавіш, позначено com.apple.main-thread. Під кожним потоком функції мають відступи, що показують, яка функція яку викликала. Число на початку рядка — це скільки разів функція була в стеку на момент заміру.
- Ідіть за рядками з найбільшими числами вниз до найглибшого відступу. Саме там потік провів найбільше часу.
- Якщо найглибші рядки головного потоку — це виклики очікування, як-от
mach_msg,__psynch_cvwaitчи__semwait_signal, потік був заблокований і чекав на щось інше. - Якщо найглибші рядки — власні функції програми з великими лічильниками, потік був зайнятий роботою.
- Розділ «Sort by top of stack» ближче до кінця перелічує функції, які виконувалися найчастіше, — це короткий підсумок тих самих даних.
- Список Binary Images у кінці називає фреймворки й бібліотеки, завантажені в процес.
Як зберегти замір у файл із Термінала
Команда sample дає більше контролю, ніж Монітор активності. За замовчуванням вона працює 10 секунд, і цю тривалість можна змінити.
- Відкрийте Термінал із папки «Програми» > «Утиліти».
- Знайдіть ідентифікатор процесу командою
pgrep -lx Safari, замінивши Safari назвою процесу. - Виконайте
sample <PID> 10 -file ~/Desktop/sample.txt, поки проблема триває. - Відкрийте файл на робочому столі або додайте його до звіту про помилку.
Коли замір допомагає, а коли ні
Замір — це знімок одного процесу. Використовуйте його, коли вже знаєте, яка програма спричиняє проблему.
- Допомагає: програма зависла, один процес постійно має високий «% процесора» або програма повільно виконує певне завдання, яке можна повторити.
- Менш корисний: увесь Mac повільний, і ви не знаєте чому. Тут краще підійде spindump, який охоплює всі процеси.
- Не допомагає: проблема вже минула. Замір показує лише те, що відбувалося, поки він тривав.
Як надіслати замір розробникові
Замір сам по собі корисний, але коротка примітка дуже полегшує роботу з ним.
- Робіть замір, поки програма зависла або зайнята, а не після того, як вона відновилася.
- Збережіть звіт як текстовий файл, а не копіюйте його частину. Розробникам потрібен увесь граф викликів і список Binary Images.
- Запишіть, що ви робили, коли почалася проблема, наприклад який файл відкрили чи яку кнопку натиснули.
- Вкажіть версію програми й версію macOS. Обидві також є в заголовку звіту, поряд із Version і OS Version.
- Надішліть його через сторінку підтримки програми чи систему відстеження помилок, а якщо програма від Apple — в Apple через Асистент відгуків.
Що питають люди
Що робить «Заміряти процес» у Моніторі активності?
Записує, що робить процес, приблизно 3 секунди й показує звіт про його потоки та код, який вони виконували. Розробники користуються ним, щоб зʼясувати причину зависань і високого навантаження процесора.
Чи безпечно заміряти процес?
Так. Замір лише спостерігає за процесом. Він його не змінює й не зупиняє.
Коли варто заміряти процес?
Заміряйте, поки проблема триває, наприклад коли програма зависла або сильно навантажує процесор. Замір після того, як програма відновилася, не покаже причини.
Скільки часу триває «Заміряти процес»?
У Моніторі активності замір триває близько 3 секунд. Команда sample у Терміналі за замовчуванням записує 10 секунд або стільки секунд, скільки ви вкажете.
Чи містить звіт заміру особисту інформацію?
Він містить назву процесу, шляхи до файлів і завантажені бібліотеки, а шляхи можуть включати ваше імʼя користувача. Перегляньте його, перш ніж публікувати.
Чому в заміру знаки питання замість назв функцій?
Для цих частин програми не було доступних назв символів. Розробник однаково може зіставити адреси зі своїм кодом, тож надішліть звіт як є.
Повʼязане
Шукаєте щось краще за Монітор активності? Дивіться найкращі альтернативи Монітору активності для Mac або перегляньте усі терміни глосарію.