Linux 서버를 분석하고 최적화합니다
성능 | 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 실행하여 소프트웨어 Flamegraph를 생성하십시오. 그리고 System Telemetry를 수집하기 위해 perfspect telemetry 실행하십시오.
| 명령 | 설명 |
|---|---|
perfspect config | 시스템 구성 수정 |
perfspect flame | 불꽃을 생성합니다 |
perfspect lock | 시스템 와이드 핫스팟, C2C를 수집하고 경합 정보를 잠그십시오 |
perfspect metrics | 코어 및 무모한 지표를 모니터링합니다 |
perfspect report | 구성 보고서를 생성하십시오 |
perfspect telemetry | 시스템 원격 측정을 수집하십시오 |
각 명령에는 perfspect <command> -h 실행하여 볼 수있는 추가 도움말 텍스트가 있습니다.
config 명령은 다양한 시스템 구성 매개 변수를보고 변경하는 메소드를 제공합니다. perfspect config -h 실행하려면 수정할 수있는 매개 변수를 봅니다. 시스템 매개 변수를 변경할 때 주의하십시오 . 시스템이 더 이상 작동하지 않는 방식으로 시스템을 구성 할 수 있습니다. 경우에 따라 기본 설정으로 돌아 가기 위해서는 재부팅이 필요합니다.
예:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
소프트웨어 flamegraphs는 소프트웨어 성능 병목 현상을 진단하는 데 유용합니다. perfspect flame 실행하여 시스템 전체 소프트웨어 Flamegraph를 캡처하십시오.
시스템에는 점점 더 많은 코어가 포함되어 있으므로 시스템 확장성에 영향을 미치는 커널 잠금 오버 헤드 및 잠재적 오 탐식을 분석하는 것이 유용 할 수 있습니다. perfspect lock 실행하여 System Wide Hotspot, 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 명령은 기본과 "라이브"의 두 가지 모드를 지원합니다. 기본 모드는 위와 같이 작동합니다. 메트릭이 수집되어 검토를 위해 파일에 저장됩니다. "라이브"모드는 선택한 형식 (예 : CSV, JSON)으로 메트릭을 인쇄하여 Console에서 볼 수 있거나 파일 또는 관찰 가능성 파이프 라인으로 리디렉션 될 수 있습니다.
루트 사용자가 불가능한 경우 Sudo가 불가능하고 실행중인 경우, 명령 줄 (예 : perfspect metrics --noroot 에서 --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는 Perfspect가 실행되는 호스트 인 로컬 호스트 (즉)를 대상으로합니다. 원격 시스템은 로컬 호스트의 SSH를 통해 원격 시스템에 도달 할 수있는 경우 원격 시스템을 타겟팅 할 수 있습니다.
중요 : 원격 사용자가 Perfspect의 기능을 완전히 활용하기 위해 비밀번호가없는 Sudo 액세스 (또는 루트 권한)가 있는지 확인하십시오.
사전 구성된 개인 키를 사용하여 단일 원격 시스템을 대상으로합니다.
$ ./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 . 의존성이 이전에 구축되었으며 개발 시스템에 설치되었다고 가정합니다.