Menganalisis dan mengoptimalkan server Linux
Mendapatkan perfspect | Menjalankan PerfSpect | Membangun perfspect
Alat baris perintah ini dirancang untuk membantu Anda menganalisis dan mengoptimalkan server Linux dan perangkat lunak yang berjalan di atasnya. Baik Anda seorang administrator sistem, pengembang, atau insinyur kinerja, alat ini memberikan wawasan yang komprehensif dan rekomendasi yang dapat ditindaklanjuti untuk meningkatkan kinerja dan efisiensi.
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
PerfSpect mencakup serangkaian perintah yang dirancang untuk menganalisis dan mengoptimalkan kinerja sistem dan perangkat lunak.
Jalankan perfspect -h untuk bantuan tingkat atas. Perhatikan perintah dan opsi yang tersedia.
PerfSpect telah mengalami desain ulang untuk rilis 3.x. Rilis PerfSpect sebelumnya membutuhkan dua tahap:
Desain 3.x menggabungkan dua langkah ini menjadi satu ... memproduksi metrik ramah pengguna. Jalankan perfspect metrics untuk pengalaman baru.
Juga tersedia dengan 3.x adalah "metrik hidup" di mana metrik dicetak ke stdout saat dikumpulkan. Coba perfspect metrics --live .
Fungsionalitas SVR-Info sekarang termasuk dalam perfSpect. Laporan Konfigurasi SVR-Info dihasilkan dengan menjalankan perfspect report . Benchmark dapat dieksekusi dengan menjalankan perfspect report --benchmark all . Jalankan perfspect flame untuk menghasilkan Flamegraph perangkat lunak. Dan, jalankan perfspect telemetry untuk mengumpulkan telemetri sistem.
| Memerintah | Keterangan |
|---|---|
perfspect config | Ubah Konfigurasi Sistem |
perfspect flame | Menghasilkan flamegraphs |
perfspect lock | Kumpulkan Sistem Wide Hotspot, C2C dan Informasi Perselisihan Kunci |
perfspect metrics | Pantau metrik inti dan uncore |
perfspect report | Hasilkan Laporan Konfigurasi |
perfspect telemetry | Kumpulkan Telemetri Sistem |
Setiap perintah memiliki teks bantuan tambahan yang dapat dilihat dengan menjalankan perfspect <command> -h .
Perintah config menyediakan metode untuk melihat dan mengubah berbagai parameter konfigurasi sistem. Jalankan perfspect config -h untuk melihat parameter yang dapat dimodifikasi. Gunakan hati -hati saat mengubah parameter sistem. Dimungkinkan untuk mengonfigurasi sistem dengan cara yang tidak akan lagi beroperasi. Dalam beberapa kasus, reboot akan diminta untuk kembali ke pengaturan default.
Contoh:
$ ./perfspect config --cores 24 --llc 2.0 --uncoremaxfreq 1.8
...
Perangkat lunak Flamegraphs berguna dalam mendiagnosis kemacetan kinerja perangkat lunak. Jalankan perfspect flame untuk menangkap Flamegraph perangkat lunak di seluruh sistem.
Karena sistem mengandung semakin banyak inti, dapat bermanfaat untuk menganalisis overhead kunci kernel dan potensi pembagian palsu yang memengaruhi skalabilitas sistem. Jalankan perfspect lock untuk mengumpulkan informasi hotspot lebar, C2C, dan Kunci. Insinyur kinerja yang berpengalaman dapat menganalisis informasi yang dikumpulkan untuk mengidentifikasi kemacetan.
Perintah metrics menyediakan metrik karakterisasi kinerja sistem. Metrik yang disediakan tergantung pada arsitektur platform.
Contoh:
$ ./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
Perintah metrics mendukung dua mode - default dan "Live". Mode default berperilaku seperti di atas - metrik dikumpulkan dan disimpan ke dalam file untuk ditinjau. Mode "Live" mencetak metrik dalam format yang dipilih, misalnya, CSV, JSON, ke stdout di mana mereka dapat dilihat di konsol dan/atau dialihkan ke dalam file atau pipa observabilitas.
Jika sudo tidak mungkin dan berjalan karena pengguna root tidak dimungkinkan, gunakan flag --noroot pada baris perintah, misalnya, perfspect metrics --noroot , dan meminta administrator membuat perubahan berikut pada sistem target:
for i in $(find /sys/devices -name perf_event_mux_interval_ms); do echo 125 > $i; done Lihat perfspect metrics -h untuk serangkaian opsi dan contoh yang luas.
Perintah report menghasilkan laporan konfigurasi sistem dalam berbagai format. Secara default, semua kategori informasi dikumpulkan:
$ ./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
Dimungkinkan untuk mengumpulkan subset informasi dengan memberikan opsi baris perintah. Perhatikan bahwa dengan hanya menentukan format txt , itu dicetak ke stdout, serta ditulis ke file laporan.
$ ./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
Lihat perfspect report -h untuk semua opsi.
Tolok ukur memori yang dieksekusi melalui perintah Laporan PerfSpect memerlukan aplikasi Pemeriksa Latensi Memori Intel®. Ini dapat diunduh dari sini: MLC. Setelah diunduh, ekstrak Linux dapat dieksekusi dan tempatkan di direktori perfSpect/tools/x86_64.
Perintah telemetry menjalankan kolektor telemetri pada target yang ditentukan dan kemudian menghasilkan laporan hasil. Secara default, semua jenis telemetri dikumpulkan. Untuk memilih jenis telemetri, opsi baris perintah tambahan tersedia (lihat 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
Secara default, perfSpect menargetkan host lokal, yaitu, host tempat perfspect berjalan. Sistem jarak jauh juga dapat ditargetkan ketika sistem jarak jauh dapat dijangkau melalui SSH dari host lokal.
Penting: Pastikan pengguna jarak jauh memiliki akses sudo tanpa kata sandi (atau hak istimewa root) untuk sepenuhnya memanfaatkan kemampuan perfSpect.
Untuk menargetkan sistem jarak jauh tunggal menggunakan kunci pribadi yang telah dikonfigurasi sebelumnya:
$ ./perfspect report --target 192.168.1.42 --user fred --key ~/.ssh/fredkey
...
Untuk menargetkan satu sistem jarak jauh menggunakan kata sandi:
$ ./perfspect report --target 192.168.1.42 --user fred
[email protected]'s password: ******
...
Untuk menargetkan lebih dari satu sistem jarak jauh, file YAML digunakan untuk memberikan parameter koneksi yang diperlukan, misalnya:
$ 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 membangun dependensi dan aplikasi dalam wadah Docker yang menyediakan lingkungan build yang diperlukan. Asumsikan Anda memiliki Docker yang diinstal pada sistem pengembangan Anda.
make membangun aplikasi. Dengan asumsi dependensi telah dibangun sebelumnya dan bahwa Anda telah dipasang pada sistem pengembangan Anda.