Профилирование

Как профилировать вашу систему

Когда Sysprof профилирует вашу систему, он записывает информацию о стеке для всех выполняемых приложений, включая ядро Linux. Иногда это может сбивать с толку, если вы хотите посмотреть только на один процесс. Если ваше приложение мало взаимодействует с основной системой, вы можете добиться большего успеха, используя Sysprof для создания нового процесса.

Чтобы профилировать всю систему, убедитесь, что для целевой кнопки выбрано значение Все процессы, и нажмите Начать запись.

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

Во время сеанса профилирования вы увидите время в секундах, в течение которого было активно профилирование. Нажатие кнопки Остановить запись остановит сеанс профилирования. После этого будет показан граф вызовов.

Если вы обнаружите в графе вызовов профилирования приложение sysprof, вам следует попытаться записать сеанс профилирования с помощью sysprof-cli. Это приложение командной строки, которое записывает ваш сеанс профилирования на диск для последующего просмотра.

Подробнее смотрите в разделе интерпретация результатов.

Профилирование нового процесса

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

Если вы создаете процесс, которому требуется доступ к вашему текущему дисплею, например, приложение GTK+, убедитесь, что включён параметр Наследование окружения.

Профилирование с помощью инструмента командной строки sysprof-cli

Для уменьшения оверхеда вы можете рассмотреть возможность использования инструмента командной строки sysprof-cli. При запуске без каких-либо аргументов он запишет данные всей вашей системы и сохранит выходные данные в файл capture.syscap. Этот файл можно будет открыть с помощью приложения Sysprof для просмотра графа вызовов.

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

Интерпретация результатов

Результаты профилирования в Sysprof разделены на три раздела. В левом верхнем углу находится список всех профилированных функций. Они отсортированы по тому, как часто вызывались во время записи.

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

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

Справа показаны все потомки выбранной функции. Вы можете выбрать функцию либо из списка функций, либо из списка источников вызовов.

Если вы видите в результатах - - Context Switch - -, то это означает, что приложение передаёт управление ядру Linux или наоборот. Для этого может быть много причин, в том числе системный вызов или сигнал.