Анализировать и оптимизировать серверы Linux
Получение Perfspect | Бегущий perfspect | Строительство Perfspect
Этот инструмент командной строки предназначен для того, чтобы помочь вам анализировать и оптимизировать серверы Linux и программное обеспечение, работающее на них. Независимо от того, является ли вы системным администратором, разработчиком или инженером по производительности, этот инструмент предоставляет всестороннюю информацию и действенные рекомендации для повышения производительности и эффективности.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
Perfspect включает в себя набор команд, предназначенных для анализа и оптимизации производительности как системы, так и программного обеспечения.
Запустите perfspect -h для помощи на верхнем уровне. Обратите внимание на доступные команды и параметры.
Perfspect подвергся повторному разработке для выпуска 3.x. Предыдущие выпуски Perfspect требовали двух этапов:
Дизайн 3.x объединяет эти два шага в один ... создавая удобные метрики. Запустите perfspect metrics для нового опыта.
Также доступны с 3.x «живые метрики», где метрики напечатаны в Stdout по мере их сбора. Попробуйте perfspect metrics --live .
Функциональность SVR-Info теперь включена в Perfspect. Отчет о конфигурации SVR-Info генерируется с помощью perfspect report . Бесчмамы могут быть выполнены с помощью perfspect report --benchmark all . Запустите perfspect flame , чтобы сгенерировать программный фламграф. И запустить perfspect telemetry для сбора системной телеметрии.
| Командование | Описание |
|---|---|
perfspect config | Изменить конфигурацию системы |
perfspect flame | Генерировать фламграфы |
perfspect lock | Соберите систему широкой точки доступа, C2C и информация о конкуренции блокировки |
perfspect metrics | Мониторинг ядра и метрики Uncore |
perfspect report | Создать отчет о конфигурации |
perfspect telemetry | Соберите системную телеметрию |
Каждая команда имеет дополнительный справочный текст, который можно просмотреть, запустив perfspect <command> -h .
Команда config предоставляет метод для просмотра и изменения различных параметров конфигурации системы. Запустите perfspect config -h чтобы просмотреть параметры, которые могут быть изменены. Используйте осторожность при изменении параметров системы. Можно настроить систему таким образом, чтобы она больше не будет работать. В некоторых случаях потребуется перезагрузка, чтобы вернуться к настройкам по умолчанию.
Пример:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
Программные фламеграфы полезны для диагностики узких мест производительности программного обеспечения. Запустите perfspect flame , чтобы захватить общеобразовательный программный пламен.
Поскольку системы содержат все больше и больше ядер, может быть полезно для анализа накладных расходов блокировки ядра и потенциального обмена ложными, что влияет на масштабируемость системы. Запустите perfspect lock для сбора широкой точки горячей точки системы, C2C и блокировки информации о споре. Опытные инженеры по производительности могут проанализировать собранную информацию для выявления узких мест.
Команда metrics обеспечивает метрики характеристики производительности системы. Предоставленные метрики зависят от архитектуры платформы.
Пример:
$ ./perfspect metrics --duration 30
emr ⣯ collection complete
Metric files:
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.csv
/home/jharper5/dev/pt/perfspect_2024-10-10_10-58-36/emr_metrics_summary.html
Команда metrics поддерживает два режима - по умолчанию и «Live». Режим по умолчанию ведет себя как выше - метрики собираются и сохраняются в файлах для просмотра. Режим «живого» печатает метрики в выбранном формате, например, CSV, JSON, в Stdout, где их можно просматривать в консоли и/или перенаправить в файл или трубопровод наблюдения.
Если SUDO невозможна и работает, поскольку пользователь root невозможен, используйте флаг --noroot в командной строке, например, perfspect metrics --noroot и попросите администратора внести следующие изменения в целевой системе:
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done См. perfspect metrics -h для обширного набора вариантов и примеров.
Команда report генерирует отчеты о конфигурации системы в различных форматах. По умолчанию все категории информации собираются:
$ ./perfspect report
soc-PF4W5A3V ⢿ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-45-40/soc-PF4W5A3V.txt
Можно собрать подмножество информации, предоставив параметры командной строки. Обратите внимание, что, указав только формат txt , он напечатан в Stdout, а также записан в файл отчета.
$ ./perfspect report --bios --os --format txt
BIOS
====
Vendor: Intel Corporation
Version: EGSDCRB1.SYS.1752.P05.2401050248
Release Date: 01/05/2024
Operating System
================
OS: Ubuntu 23.10
Kernel: 6.5.0-44-generic
Boot Parameters: BOOT_IMAGE=/boot/vmlinuz-6.5.0-44-generic root=UUID=e6d667af-f0b7-450b-b409-9fe2647aeb38 ro
Microcode: 0x21000230
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-47-55/emr.txt
См. perfspect report -h для всех вариантов.
Целевые показатели памяти, выполненные в рамках команды отчета Perfspect, требуют приложения проверки задержки памяти Intel®. Это может быть загружено отсюда: MLC. После загрузки извлеките исполняемый файл Linux и поместите его в каталог Perfspect/Tools/x86_64.
Команда telemetry запускает коллекционеры телеметрии на указанной цели (-ах), а затем генерирует отчеты результатов. По умолчанию все типы телеметрии собираются. Чтобы выбрать типы телеметрии, доступны дополнительные параметры командной строки (см. perfspect telemetry -h ).
$ ./perfspect telemetry --duration 30
soc-PF4W5A3V ⣾ collection complete
Report files:
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.html
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.xlsx
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.json
/home/myuser/dev/perfspect/perfspect_2024-09-03_17-55-13/soc-PF4W5A3V_telem.txt
По умолчанию Perfspect нацелен на локального хоста, то есть хост, в котором работает Perfsepe. Удаленная система (ы) также может быть нацелена, когда удаленные системы достижимы через SSH от локального хоста.
ВАЖНО: Убедитесь, что у удаленного пользователя есть доступ SUDO без пароля (или привилегии root), чтобы полностью использовать возможности Perfspect.
Чтобы нацелиться на одну удаленную систему, используя предварительно сконфигурированный закрытый ключ:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Чтобы нацелиться на одну удаленную систему, используя пароль:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Чтобы нацелиться на более чем одну удаленную систему, для предоставления необходимых параметров соединения используется файл YAML, например:
$ cat targets.yaml
# This YAML file contains a list of remote targets with their corresponding properties.
# Each target has the following properties:
# name: The name of the target (optional)
# host: The IP address or host name of the target (required)
# port: The port number used to connect to the target via SSH (optional)
# user: The user name used to connect to the target via SSH (optional)
# key: The path to the private key file used to connect to the target via SSH (optional)
# pwd: The password used to connect to the target via SSH (optional)
#
# Note: If key and pwd are both provided, the key will be used for authentication.
#
# Security Notes:
# It is recommended to use a private key for authentication instead of a password.
# Keep this file in a secure location and do not expose it to unauthorized users.
#
# Below are examples. Modify them to match your environment.
targets:
- name: ELAINES_TARGET
host: 192.168.1.1
port:
user: elaine
key: /home/elaine/.ssh/id_rsa
pwd:
- name: JERRYS_TARGET
host: 192.168.1.2
port: 2222
user: jerry
key:
pwd: george
$ ./perfspect report --benchmark speed,memory --targets targets.yaml
...
builder/build.sh строит зависимости и приложение в контейнерах Docker, которые обеспечивают необходимые среды сборки. Предполагается, что у вас установлен Docker в вашей системе разработки.
make сборку приложения. Предполагается, что зависимости были построены ранее и что вы установили в своей системе разработки.