Как проверить, активны ли счетчики производительности ядра в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, активны ли счетчики производительности ядра в Linux. Вы научитесь использовать команду perf stat для измерения счетчиков производительности при выполнении команд, проверять конфигурацию счетчиков производительности в файловой системе /sys/kernel и просматривать журналы ядра с помощью команды dmesg для поиска сообщений, связанных со счетчиками производительности. Этот практический опыт позволит вам диагностировать и понимать состояние мониторинга производительности на вашей системе Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/sleep("Execution Delaying") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/sleep -.-> lab-558797{{"Как проверить, активны ли счетчики производительности ядра в Linux"}} linux/ls -.-> lab-558797{{"Как проверить, активны ли счетчики производительности ядра в Linux"}} linux/cat -.-> lab-558797{{"Как проверить, активны ли счетчики производительности ядра в Linux"}} linux/cd -.-> lab-558797{{"Как проверить, активны ли счетчики производительности ядра в Linux"}} linux/grep -.-> lab-558797{{"Как проверить, активны ли счетчики производительности ядра в Linux"}} end

Проверка счетчиков с помощью perf stat

На этом этапе вы узнаете, как использовать команду perf stat для измерения счетчиков производительности. Счетчики производительности - это специальные аппаратные регистры, которые подсчитывают определенные события, происходящие в ЦП, такие как количество выполненных инструкций, промахи кэша или ошибки предсказания переходов.

Инструмент perf представляет собой мощную командную утилиту для анализа производительности в Linux. Команда perf stat используется для запуска команды и сбора статистики счетчиков производительности при выполнении этой команды.

Начнем с запуска простой команды и наблюдения за ее счетчиками производительности. Мы будем использовать команду ls, которая выводит содержимое каталога.

Если вы еще не открыли терминал, сделайте это. Вы можете найти значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду и нажмите Enter:

perf stat ls

Вы должны увидеть вывод, похожий на следующий:

 Performance counter stats for 'ls':

          <placeholder>      task-clock (msec)         ##    <placeholder> CPUs utilized
          <placeholder>      context-switches          ##    <placeholder> /sec
          <placeholder>      cpu-migrations            ##    <placeholder> /sec
          <placeholder>      page-faults               ##    <placeholder> /sec
          <placeholder>      cycles                    ##    <placeholder> GHz
          <placeholder>      instructions              ##    <placeholder>  insns per cycle
          <placeholder>      branches                  ##    <placeholder> % of all instructions
          <placeholder>      branch-misses             ##    <placeholder> % of all branches

          <placeholder> msec task-clock                ##    <placeholder> CPUs utilized

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

Некоторые общие события, которые вы можете увидеть, включают:

  • task-clock: Общее время, в течение которого задача выполнялась на ЦП.
  • cycles: Количество тактов ЦП, затраченных на выполнение.
  • instructions: Количество выполненных инструкций.
  • branch-misses: Количество случаев, когда предсказание перехода было неверным.

Понимание этих счетчиков поможет вам выявить узкие места в производительности вашего кода или системы.

Вы также можете запустить perf stat для более сложной команды или даже скрипта, чтобы проанализировать его производительность.

Например, давайте попробуем запустить perf stat для простой команды sleep:

perf stat sleep 1

Это измеряет счетчики производительности, в то время как система находится в режиме ожидания в течение 1 секунды. Вывод покажет счетчики для процесса sleep.

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

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка конфигурации счетчиков в /sys/kernel

На этом этапе вы узнаете, как конфигурации счетчиков производительности представлены в файловой системе /sys ядра Linux. Файловая система /sys предоставляет интерфейс к структурам данных ядра, позволяя вам просматривать и иногда изменять параметры ядра.

Настройки счетчиков производительности, например, разрешено ли не привилегированным пользователям доступ к исходным событиям счетчиков производительности, часто контролируются с помощью файлов в /sys/kernel/perf_event.

Перейдем в соответствующий каталог и проверим файл конфигурации.

Сначала используйте команду cd для перехода в текущий каталог /sys/kernel/perf_event. Помните, что ваш каталог по умолчанию - ~/project, поэтому вам нужно использовать абсолютный путь.

Введите следующую команду и нажмите Enter:

cd /sys/kernel/perf_event

Теперь вы находитесь в каталоге /sys/kernel/perf_event. Вы можете использовать команду ls, чтобы увидеть файлы в этом каталоге:

ls

Вы должны увидеть список файлов, который может включать:

kptr_restrict  perf_event_paranoid  sysfs_deprecated

Файл, который нас интересует, - это perf_event_paranoid. Этот файл контролирует уровень доступа не привилегированных пользователей к событиям производительности. Более низкое значение означает меньшую "параноию" (больший доступ), а более высокое значение - большую "параноию" (меньший доступ).

Просмотрим содержимое этого файла с помощью команды cat:

cat perf_event_paranoid

Вывод будет представлять собой одно число, обычно в диапазоне от -1 до 2.

<number>

Вот что обычно означают разные значения:

  • -1: Разрешить всем пользователям использовать все функции perf.
  • 0: Разрешить всем пользователям использовать perf для измерений на уровне процесса и ЦП.
  • 1: Разрешить только привилегированным пользователям (например, root) использовать perf для измерений на уровне процесса и ЦП.
  • 2: Разрешить только привилегированным пользователям использовать perf для измерений на уровне процесса.

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

Понимание этого файла поможет вам понять, как система настроена в отношении доступа к мониторингу производительности.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Просмотр журналов счетчиков с помощью dmesg

На этом этапе вы узнаете, как использовать команду dmesg для просмотра сообщений ядра, которые иногда могут содержать информацию, связанную со счетчиками производительности или событиями perf. Команда dmesg отображает сообщения из кольцевого буфера ядра. Эти сообщения генерируются ядром во время загрузки и работы системы и могут содержать ценную информацию для отладки и анализа системы.

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

Для просмотра сообщений ядра используйте команду dmesg:

dmesg

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

Чтобы найти сообщения, непосредственно связанные с perf или счетчиками производительности, вы можете передать вывод команды dmesg в команду grep. grep - это мощный инструмент для поиска текста по шаблонам.

Найдем сообщения, содержащие слово "perf":

dmesg | grep perf

Эта команда выполняет следующие действия:

  • dmesg: Выводит сообщения ядра.
  • |: Это конвейер (pipe), который передает вывод команды слева в качестве входных данных для команды справа.
  • grep perf: Ищет в входных данных строки, содержащие слово "perf".

Вы можете увидеть вывод, похожий на следующий (или ничего, в зависимости от недавних событий ядра):

[<placeholder>] perf: interrupt took too long (<placeholder> > <placeholder> ms), lowering kernel.perf_event_paranoid to <placeholder>

В этом примере сообщение указывает, что прерывание производительности заняло слишком много времени, и ядро автоматически изменило настройку perf_event_paranoid (которую мы рассмотрели на предыдущем этапе) на менее строгое значение, чтобы, возможно, решить проблему.

Вы также можете искать другие связанные термины, такие как "performance" или "counter":

dmesg | grep performance
dmesg | grep counter

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

Нажмите Продолжить, чтобы завершить этот практический урок.

Резюме

В этом практическом уроке вы узнали, как проверить, активны ли счетчики производительности ядра в Linux. Вы начали с использования команды perf stat для измерения счетчиков производительности для простой команды, такой как ls, и наблюдения за выводом различных событий производительности и их счетчиков. Это показало базовую функциональность инструмента perf для анализа производительности.

Затем в рамках урока вас научили проверять конфигурацию счетчиков производительности в файловой системе /sys/kernel и просматривать журналы, связанные со счетчиками, в выводе команды dmesg. Эти шаги предоставили методы для подтверждения поддержки системой и активного состояния счетчиков производительности ядра, предлагая альтернативные способы оценки их доступности помимо команды perf stat.