تحليل وتحسين خوادم 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 لإنشاء برنامج FlameGraph. وتشغيل perfspect telemetry لجمع القياس عن بعد للنظام.
| يأمر | وصف |
|---|---|
perfspect config | تعديل تكوين النظام |
perfspect flame | توليد FlameGraphs |
perfspect lock | اجمع نظام Hotspot على نطاق واسع ، 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 لجمع نقطة اتصال واسعة من النظام ، 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". يتصرف الوضع الافتراضي على النحو الوارد أعلاه - يتم جمع المقاييس وحفظها في ملفات للمراجعة. يطبع وضع "Live" المقاييس بتنسيق محدد ، على سبيل المثال ، CSV ، JSON ، إلى stdout حيث يمكن عرضها في وحدة التحكم و/أو إعادة توجيهها إلى ملف أو أنابيب قابلية الملاحظة.
إذا كان Sudo غير ممكن وتشغيله كمستخدم الجذر غير ممكن ، فاستخدم علامة --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 تطبيق Checker Intel® Memory Contency. يمكن تنزيله من هنا: 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 من المضيف المحلي.
هام: تأكد من أن المستخدم عن بُعد لديه وصول Sudo أقل من كلمة المرور (أو امتيازات الجذر) لاستخدام إمكانات 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 بناء التطبيق. يفترض أن التبعيات قد تم بناؤها مسبقًا وأنك قد تم تثبيتها على نظام التطوير الخاص بك.