Analisar e otimizar servidores Linux
Obtendo perfspect | Perfspecto em execução | Construindo Perfspect
Esta ferramenta de linha de comando foi projetada para ajudá-lo a analisar e otimizar os servidores Linux e o software em execução neles. Seja você um administrador do sistema, um desenvolvedor ou um engenheiro de desempenho, essa ferramenta fornece informações abrangentes e recomendações acionáveis para melhorar o desempenho e a eficiência.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
O Perfspect inclui um conjunto de comandos projetados para analisar e otimizar o desempenho do sistema e do software.
Execute perfspect -h para ajuda de nível superior. Observe os comandos e opções disponíveis.
O Perfspect passou por um re-design para a versão 3.x. Os lançamentos anteriores do Perfspecte exigiram duas etapas:
O Design 3.x combina essas duas etapas em uma ... produzindo métricas amigáveis. Execute perfspect metrics para a nova experiência.
Também estão disponíveis com 3.x "métricas ao vivo", onde as métricas são impressas para o stdout, à medida que são coletadas. Experimente perfspect metrics --live .
A funcionalidade SVR-INFO está agora incluída no Perfspect. O relatório de configuração SVR-INFO é gerado executando perfspect report . Os benchmarks podem ser executados executando perfspect report --benchmark all . Execute perfspect flame para gerar um software FlameGraph. E execute perfspect telemetry para coletar telemetria do sistema.
| Comando | Descrição |
|---|---|
perfspect config | Modifique a configuração do sistema |
perfspect flame | Gerar FlameGraphs |
perfspect lock | Colete o hotspot amplo do sistema, o C2C e as informações de contenção de bloqueio |
perfspect metrics | Monitore o núcleo e as métricas incorporadas |
perfspect report | Gerar relatório de configuração |
perfspect telemetry | Colete telemetria do sistema |
Cada comando possui texto de ajuda adicional que pode ser visualizado executando perfspect <command> -h .
O comando config fornece um método para visualizar e alterar vários parâmetros de configuração do sistema. Execute perfspect config -h para visualizar os parâmetros que podem ser modificados. Tenha cuidado ao alterar os parâmetros do sistema. É possível configurar o sistema de uma maneira que ele não operará mais. Em alguns casos, uma reinicialização deverá retornar às configurações padrão.
Exemplo:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
O software FlameGraphs é útil no diagnóstico de gargalos de desempenho do software. Execute perfspect flame para capturar um software FlameGraph em todo o sistema.
Como os sistemas contêm cada vez mais núcleos, pode ser útil analisar a sobrecarga da trava do kernel e o potencial compartilhamento de falsos que afeta a escalabilidade do sistema. Execute perfspect lock para coletar informações de acesso amplo do sistema, C2C e Bloquear. Engenheiros de desempenho experientes podem analisar as informações coletadas para identificar gargalos.
O comando metrics fornece métricas de caracterização de desempenho do sistema. As métricas fornecidas dependem da arquitetura da plataforma.
Exemplo:
$ ./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
O comando metrics suporta dois modos - padrão e "Live". O modo padrão se comporta como acima - as métricas são coletadas e salvas em arquivos para revisão. O modo "LIVE" imprime as métricas em um formato selecionado, por exemplo, CSV, JSON, para que eles possam ser visualizados no console e/ou redirecionados para um arquivo ou pipeline de observabilidade.
Se o sudo não for possível e em execução como o usuário root não for possível, use a bandeira --noroot na linha de comando, por exemplo, perfspect metrics --noroot e solicite que um administrador faça as seguintes alterações no sistema de destino:
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done Consulte perfspect metrics -h para o extenso conjunto de opções e exemplos.
O comando report gera relatórios de configuração do sistema em vários formatos. Por padrão, todas as categorias de informações são coletadas:
$ ./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
É possível coletar um subconjunto de informações, fornecendo opções de linha de comando. Observe que, ao especificar apenas o formato txt , ele é impresso para Stdout, bem como gravado em um arquivo de relatório.
$ ./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
Consulte perfspect report -h para todas as opções.
Os benchmarks de memória executados através do comando do Relatório do Perfspect requerem o aplicativo Intel® Latncy Checker. Pode ser baixado daqui: MLC. Depois de baixado, extraia o executável do Linux e coloque -o no diretório Perfspect/Tools/x86_64.
O comando telemetry executa coletores de telemetria no (s) alvo (s) especificado (s) e gera relatórios dos resultados. Por padrão, todos os tipos de telemetria são coletados. Para selecionar tipos de telemetria, opções adicionais de linha de comando estão disponíveis (consulte 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
Por padrão, o Perfspect tem como alvo o host local, ou seja, o host em que o Perfspect está em execução. O (s) sistema (s) remoto (s) também pode ser direcionado quando os sistemas remotos são acessíveis através do SSH do host local.
IMPORTANTE: Verifique se o usuário remoto possui acesso a sudo sem senha (ou privilégios root) para utilizar totalmente os recursos do Perfspect.
Para atingir um único sistema remoto usando uma chave privada pré-configurada:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Para segmentar um único sistema remoto usando uma senha:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Para segmentar mais de um sistema remoto, um arquivo YAML é usado para fornecer os parâmetros de conexão necessários, por exemplo:
$ 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 cria as dependências e o aplicativo nos contêineres do Docker que fornecem os ambientes de construção necessários. Presume que você tenha o Docker instalado no seu sistema de desenvolvimento.
make construir o aplicativo. Presume que as dependências foram construídas anteriormente e que você instalou no seu sistema de desenvolvimento.