เริ่มต้นอย่างรวดเร็ว | มีส่วนช่วย
โปรเจ็กต์นี้มีไลบรารีสำหรับ API เหตุการณ์ Perf ของ Linux หัวใจหลักของมันคือการใช้งาน syscall perf_event_open (2)
ซึ่งสามารถใช้งานได้เหมือนเดิม
ไลบรารียังมียูทิลิตี้หลายอย่างที่จำเป็นสำหรับการใช้งาน API ที่เสถียร ยูทิลิตี้นี้มีการจัดการข้อผิดพลาด การสนับสนุนการตรวจสอบ และอื่นๆ
จุดเน้นของไลบรารีนี้คือผลลัพธ์ที่มีความแม่นยำสูงโดยไม่มีค่าใช้จ่ายใด ๆ ในระหว่างการวัด นั่นคือ การตั้งค่าการวัดอาจมีค่าใช้จ่ายสูง แต่การดำเนินการวัดจำเป็นต้องเพิ่มค่าใช้จ่ายเป็นศูนย์จากไลบรารีนี้ สิ่งนี้มาพร้อมกับประโยชน์อย่างมากในการบรรลุผลลัพธ์ที่แม่นยำที่สุดเท่าที่จะเป็นไปได้ และมีความยืดหยุ่นมากที่สุดเท่าที่จะเป็นไปได้ โดยแลกกับ UX
หากต้องการสร้างโปรเจ็กต์ ให้ติดตั้ง libcap
:
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
จากนั้นเพียงสร้างโครงการ
make build
ตัวอย่างมีอยู่ในไดเร็กทอรี examples
โดยส่งออกไปยังไดเร็กทอรี build/examples
./build/examples/full
เริ่มต้นอย่างรวดเร็ว
คุณสมบัติ
เอกสาร
มีส่วนช่วย
CAP_PERFMON
ใน 5.9) มีเครื่องมือสร้างโปรไฟล์มากมายสำหรับ Linux เครื่องมือเช่น Valgrind (และ Callgrind) เป็นวิธีที่ยอดเยี่ยมและแม่นยำในการวิเคราะห์ประสิทธิภาพของหน่วยความจำและ callstack อย่างไรก็ตาม มันสร้างการวัดค่าต่างๆ เช่น รอบ CPU และคำสั่งที่ง่ายขึ้น เนื่องจากไม่ได้วัดฮาร์ดแวร์ดั้งเดิม เครื่องมืออื่นๆ เช่น gprof, prof และ gperftools นั้นใกล้เคียงกับฮาร์ดแวร์มาก แต่ขาดการรองรับสำหรับการวัดเคอร์เนลและเหตุการณ์ที่ไม่ได้ใช้งาน วิธีอื่นๆ ในการวัดคำสั่งและรอบที่ใช้ใน SUPERCOP, Papi ฯลฯ อาจไม่ถูกต้อง เพียงนับรอบโดยรวมที่ทำโดยแกน CPU นี่คือจุดที่ Linux perf API โดดเด่น API มอบชุดเครื่องมือที่ครอบคลุมสำหรับการวัดเหตุการณ์ผู้ใช้และเคอร์เนล ไม่ว่าจะเป็นผ่านเบรกพอยต์ที่กำหนดโดยซอฟต์แวร์หรือตัวนับฮาร์ดแวร์
เครื่องมือ perf
CLI นั้นยอดเยี่ยมในการมอบวิธีการใช้ API เหล่านี้ แต่จะวัดการทำงานของโปรแกรมทั้งหมด การเรียกของระบบพื้นฐาน perf_event_open (2)
ไม่มี wrapper glibc และดังนั้นจึงค่อนข้างละเอียด - โดยเฉพาะอย่างยิ่งเมื่อทำการวัดจำนวนมาก
ห้องสมุดนี้มีจุดมุ่งหมายเพื่อเติมเต็มช่องว่างเล็กๆ นี้ซึ่งมีการวัดโค้ดเฉพาะในรูปแบบไบนารีที่มีความแม่นยำสูง
เพื่อดำเนินการต่อในขณะที่ API มีความเสถียร
ยินดีต้อนรับการสนับสนุนใด ๆ หากคุณไม่สามารถเขียนโค้ดเองได้ อาจมีคนอื่นเขียนโค้ดเอง ดังนั้นโปรดโพสต์ปัญหาหากคุณคิดอะไรในใจ
ตรวจสอบให้แน่ใจว่าคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นต่อไปนี้:
$CC
หมายถึง gcc
8 หรือใหม่กว่าlibcap
แล้วclang-format
แล้ว (หากคุณต้องการจัดรูปแบบโค้ด)compiledb
แล้ว (ถ้าคุณต้องการโค้ดรูปแบบหรือวิเคราะห์ด้วยเครื่องมือ llvm อื่น ๆ ) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
ตัวอย่างสามารถทดสอบได้โดยใช้ Docker
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed