- แพลตฟอร์มโอเพนซอร์สที่ Google เป็นผู้นำในการออกแบบและพัฒนา โดยมีเป้าหมายเป็น สแตกการทำ system tracing ยุคถัดไป
- วิเคราะห์สาเหตุของปัญหาด้านประสิทธิภาพและการทำงาน ด้วยการ สังเกตลำดับการทำงานของระบบบนพื้นฐานของ tracing ในระบบที่ซับซ้อน
- มี ความเสถียรและประสิทธิภาพระดับ production และถูกนำไปใช้เป็นระบบ tracing พื้นฐานของ ระบบปฏิบัติการ Android และ เบราว์เซอร์ Chromium
- รวบรวมอีเวนต์จากหลายโปรเซสและเธรดให้เป็น trace แบบรวมศูนย์เดียว ผ่าน tracing daemon ประสิทธิภาพสูง
- มี SDK แบบ C++17 ที่มี overhead ต่ำ สำหรับทำ instrumentation การเปลี่ยนแปลงด้านเวลาและสถานะของแอปพลิเคชันใน user space ได้อย่างแม่นยำ
- เก็บข้อมูล context ของทั้งระบบผ่าน โพรบระดับ OS เช่น scheduling, ความถี่ CPU, หน่วยความจำ, call stack ของ Android และ Linux
- มี UI แบบเบราว์เซอร์ สำหรับแสดงผล trace ขนาดใหญ่ในรูปแบบ timeline และสำรวจแบบอินเทอร์แอ็กทีฟ
- ใช้งานได้บนเบราว์เซอร์หลักโดยไม่ต้องติดตั้งเพิ่มเติม และรองรับการเปิดดู trace format ภายนอกได้หลากหลาย
- มี เอนจินวิเคราะห์แบบ SQL ในตัว ทำให้สามารถ query trace ได้เหมือนข้อมูล และดึง metric แบบกำหนดเองออกมาได้
- เอกสารทางการมีให้ที่ perfetto.dev พร้อมคู่มือแบบเป็นขั้นตอนตั้งแต่ผู้เริ่มต้นจนถึงผู้ใช้งานระดับเชี่ยวชาญ
- เป็นโครงการแบบเปิดที่ปฏิบัติตาม แนวทางชุมชนโอเพนซอร์สของ Google
ทำไมต้องใช้ Perfetto
- นักพัฒนาแอปและแพลตฟอร์ม Android สามารถวิเคราะห์สาเหตุรากของปัญหาด้านประสิทธิภาพ เช่น แอปเริ่มช้า, frame drop, ANR ได้อย่างเป็นระบบ
- นักพัฒนา C/C++ สามารถใช้ Tracing SDK เพื่อทำ instrumentation เส้นทางการทำงานของแอปพลิเคชัน และระบุจุดคอขวดได้อย่างแม่นยำ
- นักพัฒนาเคอร์เนลและระบบ Linux สามารถแสดงผลอีเวนต์เคอร์เนลที่อิงกับ
ftrace เพื่อวิเคราะห์ scheduling, system call และการทำงานของ interrupt
- นักพัฒนา Chromium ใช้ Perfetto เป็นแบ็กเอนด์ของ
chrome://tracing เพื่อดีบักการทำงานภายในของเบราว์เซอร์, V8 และ Blink
- วิศวกรประสิทธิภาพและ SRE สามารถวิเคราะห์แบบรวมศูนย์ด้วย SQL จากฟอร์แมตที่หลากหลาย เช่น Linux perf, macOS Instruments และ Chrome JSON trace
2 ความคิดเห็น
ในบทความ Meta, Linux scheduler ที่ออกแบบมาสำหรับ Steam Deck ของ Valve บนเซิร์ฟเวอร์ขนาดใหญ่ | GeekNews ที่โพสต์ไปเมื่อไม่นานนี้ ก็มีการแสดงข้อมูลการทำโปรไฟล์โดยใช้ perfetto เช่นกัน
เห็นบ่อยมากในบทความอื่น ๆ แต่เหมือนใน GeekNews ยังไม่ได้แนะนำกันอย่างจริงจัง เลยเอามาลงให้ ถึงจะช้าไปหน่อยก็ตาม ;)
รวมเครื่องมือติดตามที่ฉันชอบที่สุด: eBPF, QEMU, Perfetto