<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="profiling" xml:lang="ru">
    <info>
      <link type="guide" xref="index#profiling"/>
    
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Ser82-png</mal:name>
      <mal:email>asvmail.as@gmail.com</mal:email>
      <mal:years>2022</mal:years>
    </mal:credit>
  </info>
    <title>Профилирование</title>
  <section id="system-profiling">
    <title>Как профилировать вашу систему</title>
    <p>Когда <app>Sysprof</app> профилирует вашу систему, он записывает информацию о стеке для всех выполняемых приложений, включая ядро Linux. Иногда это может сбивать с толку, если вы хотите посмотреть только на один процесс. Если ваше приложение мало взаимодействует с основной системой, вы можете добиться большего успеха, используя <app>Sysprof</app> для <link href="profiling#new-process-profiling">создания нового процесса</link>.</p>

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

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

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

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

    <p>Подробнее смотрите в разделе <link href="profiling#interpreting-results">интерпретация результатов</link>.</p>

  </section>

  <section id="new-process-profiling">
    <info>
      <link type="guide" xref="index#profiling"/>
    </info>
    <title>Профилирование нового процесса</title>

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

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

  </section>

  <section id="sysprof-cli">
    <info>
      <link type="guide" xref="index#profiling"/>
    </info>
    <title>Профилирование с помощью инструмента командной строки sysprof-cli</title>

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

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

  </section>

  <section id="interpreting-results">
    <info>
      <link type="guide" xref="index#profiling"/>
    </info>
    <title>Интерпретация результатов</title>

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

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

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

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

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

  </section>

</page>
