วิเคราะห์และเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Linux
รับ Perfspect | Running Perfspect | การสร้างความสมบูรณ์แบบ
เครื่องมือบรรทัดคำสั่งนี้ได้รับการออกแบบมาเพื่อช่วยให้คุณวิเคราะห์และเพิ่มประสิทธิภาพเซิร์ฟเวอร์ Linux และซอฟต์แวร์ที่ทำงานอยู่ ไม่ว่าคุณจะเป็นผู้ดูแลระบบนักพัฒนาหรือวิศวกรประสิทธิภาพเครื่องมือนี้ให้ข้อมูลเชิงลึกที่ครอบคลุมและคำแนะนำที่สามารถดำเนินการได้เพื่อเพิ่มประสิทธิภาพและประสิทธิภาพ
$ wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
$ cd perfspect
Perfspect รวมถึงชุดคำสั่งที่ออกแบบมาเพื่อวิเคราะห์และเพิ่มประสิทธิภาพทั้งระบบและประสิทธิภาพของซอฟต์แวร์
เรียกใช้ perfspect -h สำหรับความช่วยเหลือระดับบนสุด หมายเหตุคำสั่งและตัวเลือกที่มีอยู่
Perfspect ได้รับการออกแบบใหม่สำหรับการเปิดตัว 3.x การเผยแพร่ก่อนหน้านี้ต้องมีสองขั้นตอน:
การออกแบบ 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 เพื่อรวบรวม telemetry ระบบ
| สั่งการ | คำอธิบาย |
|---|---|
perfspect config | แก้ไขการกำหนดค่าระบบ |
perfspect flame | สร้าง Flamegraphs |
perfspect lock | รวบรวมข้อมูลฮอตสปอตกว้าง C2C และข้อมูลการล็อค |
perfspect metrics | ตรวจสอบ Core และ Uncore Metrics |
perfspect report | สร้างรายงานการกำหนดค่า |
perfspect telemetry | รวบรวม 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" โหมดเริ่มต้นทำงานตามที่กล่าวมาข้างต้น - ตัวชี้วัดจะถูกรวบรวมและบันทึกลงในไฟล์เพื่อตรวจสอบ โหมด "สด" พิมพ์ตัวชี้วัดในรูปแบบที่เลือกเช่น 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 Report ต้องใช้แอปพลิเคชันตัวตรวจสอบความจำในหน่วยความจำIntel® สามารถดาวน์โหลดได้จากที่นี่: MLC เมื่อดาวน์โหลดแล้วให้แยก Linux Conecutable และวางไว้ในไดเรกทอรี Perfspect/Tools/x86_64
คำสั่ง telemetry เรียกใช้ตัวสะสม telemetry บนเป้าหมายที่ระบุจากนั้นสร้างรายงานของผลลัพธ์ โดยค่าเริ่มต้นประเภท telemetry ทั้งหมดจะถูกรวบรวม ในการเลือกประเภท 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 แอป สมมติว่าการพึ่งพาได้ถูกสร้างขึ้นก่อนหน้านี้และคุณได้ติดตั้งในระบบการพัฒนาของคุณ