<?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="uk">
    <info>
      <link type="guide" xref="index#profiling"/>
    
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Юрій Чорноіван</mal:name>
      <mal:email>yurchor@ukr.net</mal:email>
      <mal:years>2020</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="existing-process-profiling">
    <info>
      <link type="guide" xref="index#profiling"/>
    </info>
    <title>Профілювання наявного процесу</title>
    <p>За допомогою <app>Sysprof</app> ви зможете виконати профілювання одного або декількох наявних процесів у вашій системі. Для початку, скористайтеся кнопкою <em>ціль профілювання</em>, яку розташовано поруч із кнопкою <em>Записати</em>. На контекстній панелі, яку буде показано, виберіть пункт <em>Наявний процес</em>. Далі, виберіть процеси, які ви хочете профілювати. Перед пунктами процесів, які ви виберете для профілювання, буде показано позначки.</p>

    <p>Після вибору процесів-цілей натисніть кнопку <em>Записати</em>, щоб розпочати профілювання.</p>

    <p>У момент, коли профілювання слід завершити, натисніть кнопку <em>Записати</em> ще раз, щоб припинити профілювання.</p>

    <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>, яку розташовано поряд із кнопкою <em>Записати</em>. Далі, виберіть <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 -p pid</cmd>.</p>

    <p>Якщо ви хочете запустити новий процес, скористайтеся командою <cmd>sysprof-cli -c 'команда'</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>

    <p>Ви можете перейти всередину функції активацією рядка у ієрархії спадкоємців подвійним клацанням лівою кнопкою миші або натисканням клавіш <key>Enter</key> або <key>Пробіл</key>.</p>

    <note>
      <p>Якщо ви бачите у результатах записи <em>- - kernel - -</em>, це означає, що програма передає керування ядру Linux або навпаки. Для цього може бути багато причин, зокрема <em>системний виклик</em> або <em>сигнал</em>.</p>
    </note>

  </section>

</page>
