Юрій Чорноіван
yurchor@ukr.net 2020

# Профілювання

# Як виконати профілювання вашої системи

Коли Sysprof виконує профілювання вашої системи, вона записує дані стека для програм, які виконуються, включно із ядром Linux. Іноді, користуватися отриманими значенням незручно, якщо вам потрібні лише дані окремого процесу. Якщо досліджувана програма не надто взаємодії із основною системою, можливо, доцільнішим буде використання Sysprof для породження нового процесу.

Щоб виконати профілювання усієї системи, переконайтеся, що кнопку цілі встановлено у значення Усі процеси, і натисніть Записати.

На цьому кроці система може попросити вас пройти уповноваження для доступу до профілювання системи. Таке уповноваження потрібне, оскільки реалізація perf у ядрі Linux потребує прав доступу адміністратора (root) для виконання профілювання на рівні усієї системи.

Під час сеансу профілювання ви побачите кількість секунд, протягом яких був активним профіль. Повторне натискання кнопки Записати зупинить сеанс профілювання. Після цього буде показано граф викликів.

Якщо у вашому графі викликів профілювання ви побачите пункт програми sysprof, вам варто спробувати записати сеанс профілювання за допомогою програми sysprof-cli. Ця програма є засобом командного рядка, який виконає запис вашого сеансу профілювання на диск для подальшого перегляду.

Щоб дізнатися більше, ознайомтеся із розділом щодо інтерпретації результатів.

# Профілювання нового процесу

Часто у вас може виникнути потреба у запуску нового процесу для профілювання. Спочатку натисніть кнопку Програма поряд з верхньою частиною вікна записування. Вкажіть вашу команду і робочий каталог і, якщо хочете, будь-які потрібні вам змінні середовища. Ваш процес буде запущено на початку записування даних.

Якщо ви запускаєте процес, який потребує доступу до вашого поточного дисплея, зокрема програму на основі GTK+, вам варто позначити пункт Успадкувати середовище.

# Профілювання за допомогою засобу командного рядка sysprof-cli

Для мінімізації накладних витрат вам варто скористатися засобом командного рядка sysprof-cli. Якщо програму буде запущено без аргументів, вона запише дані усієї системи із збереже виведені дані до файла capture.syscap. Цей файл може бути відкрито за допомогою програми Sysprof для перегляду графу викликів.

Якщо ви хочете запустити новий процес, скористайтеся командою sysprof-cli -- 'команда', щоб вказати команду, яку буде запущено. Команда успадкує поточне середовище.

# Інтерпретація результатів

Результати профілювання у Sysprof поділено на три розділи. У верхній лівій частині буде показано список усіх профільованих функцій. Їх буде упорядковано за частотою їхнього виклику під час записування даних.

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

Після вибору функції зі списку функцій усі дані із записаних джерел викликів цієї функції буде показано у нижній лівій частині вікна. Їх також буде упорядковано за відсотком вибірок, до трасування стеку яких включено цю функцію.

Праворуч буде показано усі спадкоємців вибраної функції. Ви можете вибрати функцію або зі списку функцій, або зі списку джерел виклику.

Якщо ви бачите у результатах записи -- - Context Switch - -, це означає, що програма передає керування ядру Linux або навпаки. Для цього може бути багато причин, зокрема системний виклик або сигнал.