Мониторинг#
Обзор вариантов мониторинга производительности#
Ниже приведены некоторые средства мониторинга производительности и настройки, доступные в 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:
Команда
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