Мониторинг#

Обзор вариантов мониторинга производительности#

Ниже приведены некоторые средства мониторинга производительности и настройки, доступные в SberLinux:

  • Performance Co-Pilot (pcp) используется для мониторинга, визуализации, хранения и анализа измерений производительности на системном уровне. Это позволяет осуществлять мониторинг и управление данными в режиме реального времени, а также регистрировать и извлекать исторические данные.

  • SberLinux предоставляет несколько инструментов, которые можно использовать из командной строки для мониторинга системы. Ниже приведены встроенные инструменты командной строки:

    • top предоставляется пакетом procps-ng. Этот инструмент предлагает динамическое представление о процессах в работающей системе. Он отображает разнообразную информацию, включая сводку системы и список задач, которые в настоящее время управляются ядром Linux.

    • ps предоставляется пакетом procps-ng. Он делает снимок выбранной группы активных процессов. По умолчанию проверяемая группа ограничена процессами, принадлежащими текущему пользователю и связанными с терминалом, на котором выполняется команда ps.

    • Virtual memory statistics (vmstat) предоставляется пакетом procps-ng. Он предоставляет мгновенные отчеты о процессах системы, памяти, подкачке, вводе/выводе блоков, прерываниях и активности процессора.

    • System activity reporter (sar) предоставляется пакетом sysstat. Он собирает и сообщает информацию о системной активности, которая произошла до сих пор в текущий день.

  • perf анализирует производительность различных операций. Подробнее в разделе «Утилита рerf».

  • bcc-tools используется для сбора компилятора BPF (BCC). Компилятор предоставляет более 100 сценариев eBPF, которые отслеживают действия ядра. Для получения дополнительной информации о каждом из этих инструментов смотрите страницу руководства (с помощью команды man), описывающую, как использовать компилятор и какие функции он выполняет.

  • turbostat предоставляется пакетом kernel-tools. В нем представлены данные о топологии процессора, частоте, статистике состояния питания в режиме ожидания, температуре и энергопотреблении процессоров Intel 64.

  • iostat предоставляется пакетом sysstat. Он отслеживает загрузку системных устройств ввода-вывода и сообщает о ней, чтобы помочь администраторам принимать решения о том, как сбалансировать нагрузку ввода-вывода между физическими дисками.

  • irqbalance распределяет аппаратные прерывания между процессорами для повышения производительности системы.

  • ss печатает статистическую информацию о сокетах, позволяя администраторам оценивать производительность устройства с течением времени. SberLinux рекомендует использовать ss поверх netstat.

  • numastat предоставляется пакетом numactl. По умолчанию numastat отображает системную статистику попадания и промаха NUMA для каждого узла из распределителя памяти ядра. Оптимальная производительность определяется высокими значениями numa_hit и низкими значениями numa_miss.

  • numad - автоматический демон управления привязкой NUMA. Он отслеживает топологию NUMA и использование ресурсов в системе, что динамически улучшает распределение ресурсов NUMA, управление ими и производительность системы.

  • SystemTap отслеживает и анализирует действия операционной системы, особенно действия ядра.

  • Valgrind анализирует приложения, запуская их на синтетическом процессоре и инструментируя существующий код приложения по мере его выполнения. Затем он печатает комментарий, который четко идентифицирует каждый процесс, участвующий в выполнении приложения, в указанный пользователем файл, дескриптор файла или сетевой сокет. Это также полезно для поиска утечек памяти.

  • pqos предоставляется пакетом intel-cmt-cat. Он отслеживает и управляет кешем процессора и пропускной способностью памяти на последних процессорах Intel.

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

Дополнительная информация#

Дополнительная информация о работе перечисленных инструментов указана в справочных страницах man: pcp, top, ps, vmstat, sar, perf, iostat, irqbalance, ss, numastat, numad, valgrind и pqos.

Утилита рerf#

Описание#

Утилита perf измеряет и анализирует производительность различных операций в ядре и пользовательском пространстве, включая использование процессора, памяти, дисковой подсистемы и других ресурсов.

Для этого perf использует аппаратные счетчики производительности (Performance Monitoring Units, PMU) оборудования и точки трассировки ядра. Полученные данные анализируются и представляются в человекочитаемом формате.

Синтаксис утилиты:

perf <options> <command> <args>

Где:

  • <options> - опции;

  • <command> - команда;

  • <args> - агрументы.

Опции#

Часто используемые опции утилиты представлены в таблице ниже.

Опции perf#

Опция

Описание

-h, --help

Вывести справочную информацию

-v, --version

Вывести информацию о версии

--list-opts

Вывести возможные опции

--list-cmds

Вывести наиболее часто используемые команды

--debugfs-dir

Указать каталог debugfs или переменную среды PERF_DEBUGFS_DIR

--debug-file <file>

Записывать вывод отладки в указанный файл <file>

--debug <level>

Установить значения (<level>) от 0 до 10 для переменной отладки. Чем выше установленное значение, тем подробнее вывод

Команды#

Ниже перечислены часто используемые команды утилиты perf:

  • Команда perf help выводит список команд утилиты. Опции -a или--all выводят все доступные команды.

  • Команда perf stat предоставляет статистику по различным событиям, включая выполненные команды и затраченные тактовые циклы.

  • Команда perf record записывает данные в файл perf.data, который может быть позже проанализирован с помощью команды perf report.

  • Команда perf report считывает и отображает данные о производительности из файла perf.data.

    Вместе с командой можно использовать следующие опции:

    • --demangle - выводить имена символов в человекочитаемом формате. Включено по умолчанию;

    • --demangle-kernel - выводить имена символов ядра в человекочитаемом формате;

    • --no-demangle - отключить вывод имен символов в человекочитаемом формате.

  • Команда perf list выводит список предопределенных событий, доступных на машине. Эти события будут варьироваться в зависимости конфигурации аппаратного и программного обеспечения.

  • Команда perf top выводит информацию о профиле производительности процессора в режиме реального времени. Функционирует аналогично утилите top. Но в отличие от нее показывает, сколько времени ЦП использует каждая функция.

  • Команда perf trace отслеживает системные вызовы, используемые указанным потоком или процессом, и все сигналы, получаемые приложением.

Примеры использования#

  • Чтобы включить сбор данных о производительности приложения ./sample, используйте команду:

    perf record ./sample
    
  • Чтобы вывести отчет, где имена функций C++ будут отражены в человекочитаемом формате, используйте команду:

    perf report --demangle --demangle-kernel
    

    Пример вывода:

    Samples: 7 of event 'task-clock:ppp', Event count (approx.): 1750000
    Overhead Command Shared Object Symbol
    14.29% hello_world [kernel.kallsyms] [k] __lookup_mnt
    14.29% hello_world [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
    14.29% hello_world [kernel.kallsyms] [k] do_user_addr_fault
    14.29% hello_world ld-linux-x86-64.so.2 [.] _dl_relocate_object
    14.29% hello_world ld-linux-x86-64.so.2 [.] do_lookup_x
    14.29% hello_world ld-linux-x86-64.so.2 [.] mmap64
    14.29% hello_world ld-linux-x86-64.so.2 [.] strcmp