ในโลกของการดีบักประสิทธิภาพ เครื่องมือต่างๆ มักถูกจำกัดอยู่ภายในระบบนิเวศดั้งเดิมของตน แต่นั่นไม่ใช่กรณีของ Perfetto จาก Google ซึ่งถูกออกแบบมาเป็นโซลูชันติดตามแบบครบวงจรสำหรับระบบ Linux และ Android กลับทำสิ่งที่น่าทึ่งได้สำเร็จ นั่นคือการก้าวขึ้นมาเป็นเอนจินหลักสำหรับการแสดงผลข้อมูลประสิทธิภาพทั่วทั้งภาษาโปรแกรมและแพลตฟอร์มต่างๆ มากมาย นั่นเป็นผลมาจากรูปแบบการนำเข้า JSON ที่เรียบง่ายเป็นที่สุด ซึ่งนักพัฒนาสามารถนำไปใช้ได้ภายในเวลาไม่กี่นาที
เอกสารอย่างเป็นทางการของเครื่องมือระบุไว้ว่า Perfetto คือมีดพกอเนกประสงค์สำหรับการติดตามบน Linux Client/Embedded โดยมุ่งเน้นการวิเคราะห์ประสิทธิภาพระดับระบบสำหรับไปป์ไลน์กราฟิกของ Android การจัดตารางงาน CPU และเหตุการณ์ในเคอร์เนล แต่จากบทสนทนาในชุมชนพบว่าผลกระทบที่แท้จริงของ Perfetto นั้นขยายออกไปไกลกว่าขอบเขตการออกแบบดั้งเดิม สร้างความตึงเครียดที่น่าสนใจระหว่างจุดประสงค์ที่ตั้งใจไว้กับรูปแบบการใช้งานจริง
![]() |
|---|
| ไดอะแกรมแสดงสถาปัตยกรรมและการทำงานของ Perfetto พร้อมนำเสนอการประยุกต์ใช้ในการดีบักประสิทธิภาพในระบบต่างๆ |
เครื่องมือดูรอยทางสากลโดยไม่ได้ตั้งใจ
สิ่งที่เริ่มต้นเป็นแพลตฟอร์มติดตามรุ่นใหม่ของ Google สำหรับ Android ได้วิวัฒนาการไปเป็นสิ่งที่มีขอบเขตกว้างขวางมากยิ่งขึ้น นักพัฒนาที่ทำงานกับ Rust, Python, ระบบการจัดตารางงานแบบกำหนดเอง และแม้แต่ระบบอัตโนมัติในห้องปฏิบัติการทางการแพทย์ ต่างนำ Perfetto ไปใช้ไม่ใช่เพื่อการผสานรวมกับระบบระดับลึก แต่เป็นเพราะความสามารถในการแสดงผลที่ทรงพลังและรูปแบบการติดตาม JSON ที่ตรงไปตรงมา
Perfetto เป็นเครื่องมือที่ดูแปลกๆ เพราะดูเหมือนจะถูกออกแบบมาเพื่อติดตาม Linux และ Android เป็นหลัก แต่กลับถูกใช้งานอย่างล้นหลามเพราะการผสานรวมกับรูปแบบการติดตาม JSON ที่เรียบง่ายเป็นพิเศษ ซึ่งใช้เวลาแค่ไม่กี่วินาทีในการนำไปใช้กับเครื่องมือใดๆ ก็ตามที่คุณกำลังใช้งานอยู่
รูปแบบการยอมรับที่ไม่ได้คาดคิดนี้ได้สร้างพลวัตที่น่าสนใจ ขณะที่ทีมภายในของ Google ใช้ Perfetto อย่างกว้างขวางสำหรับการดีบักระบบ Android ชุมชนโอเพนซอร์สกลับยอมรับมันในฐานะเครื่องมือแสดงผลประสิทธิภาพอเนกประสงค์ ความสามารถของเครื่องมือในการจัดการรอยทางขนาดหลายกิกะไบต์ทั้งหมดบนฝั่งไคลเอ็นต์ในเบราว์เซอร์ โดยไม่ต้องส่งข้อมูลสำคัญไปยังเซิร์ฟเวอร์ภายนอก ทำให้มันน่าสนใจเป็นพิเศษสำหรับกรณีการใช้งานที่หลากหลาย
ตัวอย่างการนำไปใช้ในชุมชน:
- Rust language CI สำหรับการตรวจสอบประสิทธิภาพ
- การผสานรวมเครื่องมือสำหรับนักพัฒนา Flutter
- การแสดงภาพตารางเวลาห้องปฏิบัติการทางการแพทย์
- การวิเคราะห์ประสิทธิภาพ Python ผ่าน Viztracer
- การดีบักเคอร์เนลและระบบไฟล์แบบกำหนดเอง
![]() |
|---|
| สไลด์ที่แสดงรายละเอียดฟีเจอร์และความสามารถของ Perfetto UI แสดงให้เห็นการนำไปใช้อย่างแพร่หลายนอกเหนือจาก Android และ Linux |
การเชื่อมช่องว่างระหว่างการออกแบบและความเป็นจริง
ผู้ดูแล Perfetto ต่างยอมรับความแตกต่างระหว่างการใช้งานที่ตั้งใจไว้และการใช้งานจริง เครื่องมือนี้ถูกสร้างขึ้นโดยคำนึงถึงแหล่งข้อมูลที่ซับซ้อน ตั้งแต่ตัวนับประสิทธิภาพ GPU และเหตุการณ์การจัดตารางงาน CPU ไปจนถึงธุรกรรม Android binder และเมตริกการใช้หน่วยความจำ แต่นักใช้จำนวนมากเพียงต้องการแสดงผลข้อมูลประสิทธิภาพที่กำหนดเองจากแอปพลิเคชันของพวกเขา
ทีมโครงการได้พยายามแก้ไขปัญหานี้ผ่านการเพิ่มโมดูลาร์ไลเซชัน ความพยายามล่าสุดมุ่งเน้นไปที่การทำให้ UI เป็นระบบปลั๊กอิน แยกองค์ประกอบการแสดงผลหลักออกจากฟีเจอร์เฉพาะของ Android ซึ่งทำให้ผู้ใช้สามารถลบองค์ประกอบที่ไม่จำเป็นออกและสร้างประสบการณ์ที่สะอาดตาขึ้นสำหรับสถานการณ์การติดตามที่ไม่ใช่ Android การพัฒนาความสามารถในการฝังตัวผ่าน iframe และ API postMessage สะท้อนให้เห็นถึงการยอมรับกรณีการใช้งานที่กว้างขึ้นของทีม
SQL: คุณสมบัติพลังแฝง
ในขณะที่ความสามารถในการแสดงผลได้รับความสนใจมากที่สุด อินเทอร์เฟซ SQL ของ Perfetto กลับเป็นหนึ่งในคุณสมบัติที่ทรงพลังที่สุดแต่ไม่ค่อยได้รับความสนใจ ความสามารถในการรันคำสั่ง SQL ตรงไปยังข้อมูลรอยทางช่วยให้สามารถวิเคราะห์ที่ซับซ้อน ซึ่งไปไกลกว่าการตรวจสอบไทม์ไลน์แบบง่ายๆ นักพัฒนาสามารถรวบรวมเหตุการณ์ คำนวณเมตริกที่กำหนดเอง และได้รับข้อมูลเชิงลึกที่ยากจะได้จากการตรวจสอบรอยทางด้วยตนเอง
ความสามารถนี้ได้พิสูจน์แล้วว่ามีค่าอย่างยิ่งสำหรับทุกอย่าง ตั้งแต่การวิเคราะห์ประสิทธิภาพคอมไพเลอร์ Rust ไปจนถึงการดีบักระบบการจัดตารางงานที่ซับซ้อนในระบบอัตโนมัติของห้องปฏิบัติการทางการแพทย์ อินเทอร์เฟซ SQL แปลง Perfetto จากเครื่องมือแสดงผลแบบง่ายไปเป็นแพลตฟอร์มวิเคราะห์ประสิทธิภาพแบบครบวงจร ทำให้ทีมสามารถตอบคำถามเฉพาะเกี่ยวกับพฤติกรรมของระบบของพวกเขาได้ แทนที่จะเพียงแค่ดูข้อมูลไทม์ไลน์
![]() |
|---|
| คำแนะนำเกี่ยวกับการใช้เครื่องมือบันทึกมาตรฐานสำหรับการวิเคราะห์ประสิทธิภาพ รวมถึงคำสั่งในการจับภาพและรายงานการติดตามเพื่อข้อมูลเชิงลึกที่มากขึ้น |
การปฏิวัติการฝังตัว
หนึ่งในการพัฒนาที่สำคัญที่สุดในวิวัฒนาการของ Perfetto คือระบบนิเวศการใช้งานแบบฝังตัวที่กำลังเติบโต โครงการต่างๆ เช่น ระบบการรวมต่อเนื่องของ Rust สำหรับการตรวจสอบประสิทธิภาพและเครื่องมือนักพัฒนาของ Flutter ได้ผสานรวม Perfetto เข้าไปในเวิร์กโฟลว์ของพวกเขาโดยตรง ความสามารถในการฝังตัวนี้ทำให้ทีมสามารถให้การวิเคราะห์ประสิทธิภาพเป็นส่วนหนึ่งของเครื่องมือที่มีอยู่ของพวกเขาได้อย่างราบรื่น แทนที่จะต้องให้ผู้ใช้ส่งออกและนำเข้าไฟล์รอยทางด้วยตนเอง
บริษัทระบบอัตโนมัติห้องปฏิบัติการทางการแพทย์ที่ถูกกล่าวถึงในการสนทนาเป็นกรณีการใช้งานที่น่าสนใจเป็นพิเศษ ระบบของพวกเขาจำลองปัญหาการจัดตารางงานที่ซับซ้อนด้วยข้อจำกัดทางชีวภาพ จากนั้นจึงแสดงผลโดยใช้อินเทอร์เฟซไทม์ไลน์ของ Perfetto ความสามารถในการจัดการรอยทางที่มีระยะเวลายาวนานหลายชั่วโมงหรือหลายวัน แทนที่จะเป็นไมโครวินาทีตามแบบฉบับของการติดตามระบบ สะท้อนให้เห็นถึงความยืดหยุ่นของเครื่องมือข้ามโดเมนที่แตกต่างกันอย่างมาก
คุณสมบัติหลักของ Perfetto:
- การประมวลผลฝั่งไคลเอนต์ในเบราว์เซอร์ (ไม่ต้องใช้เซิร์ฟเวอร์)
- รองรับไฟล์เทรซขนาดหลายกิกะไบต์
- อินเทอร์เฟซ SQL สำหรับการวิเคราะห์เทรซขั้นสูง
- UI แบบโมดูลาร์พร้อมระบบปลั๊กอิน
- รองรับการฝังตัวผ่าน iframe/postMessage
- รูปแบบเทรซ JSON มาตรฐานเพื่อการผสานรวมที่ง่ายดาย
มองไปข้างหน้า: ความชาญฉลาดเทียบกับความยืดหยุ่น
ความท้าทายอย่างต่อเนื่องสำหรับทีมพัฒนาของ Perfetto อยู่ที่การสร้างสมดุลระหว่างการวิเคราะห์อัตโนมัติที่ชาญฉลาดกับการแสดงผลอเนกประสงค์ที่ยืดหยุ่น เครื่องมืออย่าง Apple's Instruments ทำได้ดีในการชี้นำผู้ใช้ไปสู่ปัญหาประสิทธิภาพทั่วไปผ่านความเชี่ยวชาญในตัว แต่ทำได้ผ่านการผสานรวมแพลตฟอร์มที่แน่นหนา ในทางตรงกันข้าม Perfetto มุ่งหมายที่จะสนับสนุนทุกอย่าง ตั้งแต่การติดตามระดับเคอร์เนลไปจนถึงเมตริกแอปพลิเคชันที่กำหนดเองข้ามหลายแพลตฟอร์ม
การพัฒนาต่อไปดูเหมือนจะมุ่งเน้นไปที่การทำให้เครื่องมือฉลาดขึ้นสำหรับรอยทางสังเคราะห์ ในขณะที่ยังคงลักษณะอเนกประสงค์ของมันไว้ ฟีเจอร์ต่างๆ เช่น การสร้างแทร็กอัตโนมัติจากคำสั่ง SQL และการนำทางซูมที่ได้รับการปรับปรุง แสดงให้เห็นถึงความมุ่งมั่นของทีมในการเชื่อมช่องว่างนี้ การอภิปรายเกี่ยวกับการเพิ่มการสนับสนุนมาโครและระบบอัตโนมัติของ UI ผ่าน API การฝังตัว บ่งชี้ถึงอนาคตที่ Perfetto สามารถให้การวิเคราะห์ที่มีการชี้นำมากขึ้น แม้สำหรับรูปแบบรอยทางที่กำหนดเอง
การเดินทางของ Perfetto จากเครื่องมือติดตามเฉพาะสำหรับ Android ไปสู่ตัวดีบักประสิทธิภาพสากล แสดงให้เห็นว่าเครื่องมือสำหรับนักพัฒนาสามารถวิวัฒนาการไปไกลกว่าขอบเขตดั้งเดิมของพวกเขาได้อย่างไร เมื่อพวกมันแก้ปัญหาพื้นฐานได้ดี ความสามารถในการประมวลผลฝั่งไคลเอ็นต์ ความสามารถในการวิเคราะห์ SQL และรูปแบบข้อมูลที่เรียบง่ายของเครื่องมือนี้ ได้พิสูจน์แล้วว่ามีค่ามากเกินกว่าที่จะถูกจำกัดอยู่เพียงระบบนิเวศ Linux และ Android ที่มันเริ่มต้น เมื่อการฝังตัวมีความซับซ้อนมากขึ้นและ UI มีความเป็นโมดูลาร์มากขึ้น Perfetto ดูเหมือนจะพร้อมที่จะมีความสำคัญยิ่งขึ้นไปอีกต่อเวิร์กโฟลว์การดีบักประสิทธิภาพทั่วทั้งภูมิทัศน์การพัฒนาซอฟต์แวร์
อ้างอิง: Perfetto: The Swiss Army Knife for Linux Client/Embedded Tracing



