พวกเขากำลังบอกคุณเกี่ยวกับโปรแกรม Go ของคุณ วิธีอ่านไฟล์ Go Mem Pprof Svg

เผยแพร่แล้ว: 2023-02-20

หากคุณต้องการทราบวิธีอ่านไฟล์ go mem pprof svg แสดงว่าคุณมาถูกที่แล้ว ในบทความนี้ เราจะแสดงวิธีอ่านไฟล์เหล่านี้เพื่อให้คุณเข้าใจว่าไฟล์เหล่านี้กำลังบอกคุณเกี่ยวกับโปรแกรม Go ของคุณอย่างไร ขั้นแรก เรามาดูว่าแท้จริงแล้วไฟล์เหล่านี้คืออะไร ไฟล์ Go mem pprof svg ถูกสร้างขึ้นโดย Go memory profiler มีข้อมูลเกี่ยวกับการใช้หน่วยความจำของโปรแกรม Go ของคุณ Profiler รวบรวมข้อมูลนี้โดยดูที่การจัดสรรหน่วยความจำของโปรแกรมของคุณ จากนั้นจะสร้างรายงานที่คุณสามารถดูได้ในเบราว์เซอร์ของคุณ รายงานประกอบด้วยข้อมูลจำนวนมาก แต่ส่วนที่สำคัญที่สุดคือกราฟที่อยู่ด้านบนสุด กราฟนี้แสดงจำนวนหน่วยความจำทั้งหมดที่โปรแกรมของคุณใช้ คุณสามารถดูได้ว่าโปรแกรมของคุณใช้หน่วยความจำเท่าใดในช่วงเวลาหนึ่งๆ โดยวางเมาส์เหนือกราฟ ตัวเลขที่ปรากฏคือจำนวนหน่วยความจำที่โปรแกรมของคุณใช้หน่วยเป็นเมกะไบต์ คุณยังสามารถดูว่าโปรแกรมของคุณใช้หน่วยความจำเท่าใดโดยดูคำอธิบายที่ด้านล่างของกราฟ คำอธิบายนี้แสดงจำนวนหน่วยความจำที่โปรแกรมของคุณใช้ในสีต่างๆ ส่วนสีเขียวของคำอธิบายแสดงจำนวนหน่วยความจำที่โปรแกรมของคุณใช้สำหรับฮีป ส่วนสีน้ำเงินแสดงถึงจำนวนหน่วยความจำที่โปรแกรมของคุณใช้สำหรับสแต็ค ส่วนสีม่วงแสดงถึงจำนวนหน่วยความจำที่โปรแกรมของคุณใช้สำหรับตัวรวบรวมขยะ ตอนนี้คุณรู้แล้วว่าไฟล์เหล่านี้คืออะไรและประกอบด้วยอะไรบ้าง มาดูวิธีอ่านไฟล์กัน สิ่งแรกที่คุณต้องทำคือเปิดไฟล์ในเบราว์เซอร์ของคุณ คุณสามารถทำได้โดยคลิกที่ปุ่ม "เปิดในเบราว์เซอร์" ที่ด้านบนของหน้า เมื่อเปิดไฟล์แล้ว คุณจะเห็นกราฟที่ด้านบน ดังที่เราได้กล่าวไว้ก่อนหน้านี้ กราฟนี้แสดงจำนวนหน่วยความจำทั้งหมดที่โปรแกรมของคุณใช้ คุณสามารถวางเมาส์เหนือกราฟเพื่อดูจำนวนหน่วยความจำที่โปรแกรมของคุณใช้อยู่ในช่วงเวลาใดก็ได้ คุณยังสามารถดูจำนวนหน่วยความจำที่โปรแกรมของคุณใช้ได้โดยดูคำอธิบายที่ด้านล่างของกราฟ คำอธิบายเป็นรหัสสี คุณจึงเห็นได้ง่ายว่าส่วนใดของหน่วยความจำที่โปรแกรมของคุณใช้อยู่ ตอนนี้คุณรู้วิธีอ่านไฟล์เหล่านี้แล้ว คุณก็เริ่มเข้าใจอะไรได้บ้าง

คุณจะดูผลลัพธ์ Profiler ใน Cpu Pprof ได้อย่างไร

คุณจะดูผลลัพธ์ Profiler ใน Cpu Pprof ได้อย่างไร
รูปภาพโดย – golangexample

เอาต์พุต profiler สามารถดูได้ใน cpu pprof โดยการรัน profiler ด้วยอ็อพชัน -d สิ่งนี้จะส่งออก ข้อมูลผู้สร้างโปรไฟล์ ไปยังไฟล์ที่ระบุโดยตัวเลือก -o คุณยังสามารถดูเอาต์พุตตัวสร้างโปรไฟล์ในเบราว์เซอร์ Google Chrome ได้โดยเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของเบราว์เซอร์แล้วเลือกแท็บโปรไฟล์

Pprof คืออะไร?

Pprof เป็นแอปพลิเคชั่นสำหรับวิเคราะห์และจัดการข้อมูลการทำโปรไฟล์ Pprof นำตัวอย่างการทำโปรไฟล์ที่หลากหลายมาพิจารณาในผลลัพธ์ของโปรไฟล์ สามารถสร้างรายงาน แสดงภาพข้อมูล และวิเคราะห์โดยใช้รูปแบบโปรโต แพ็คเกจการแสดงภาพแบบจุด (ซึ่งสามารถใช้เพื่อสร้าง รายงานทั้งแบบข้อความและกราฟิก ) อนุญาตให้ใช้ทั้งรายงานแบบข้อความและแบบกราฟิก

แพ็คเกจใดต่อไปนี้สามารถใช้ค้นหาการใช้หน่วยความจำสำหรับโปรแกรม Go ได้

ตัวอย่างการจัดสรรหน่วยความจำมีรายงานในโปรไฟล์ฮีป และใช้เพื่อมอนิเตอร์การใช้หน่วยความจำปัจจุบันและในอดีต

กระบวนการ 10 อันดับแรกตามหน่วยความจำและการใช้ Cpu บนแล็ปท็อป Linux ของฉัน

หน่วยความจำและการใช้งาน CPU ของแล็ปท็อป Linux ของฉันแสดงอยู่ในตารางด้านล่าง โดยมีการจัดอันดับกระบวนการสิบอันดับแรก คอลัมน์การใช้หน่วยความจำ อธิบายถึงจำนวนหน่วยความจำที่ใช้โดยกระบวนการ ในขณะที่คอลัมน์การใช้งาน CPU อธิบายถึงจำนวน CPU ที่ใช้ในระหว่างกระบวนการ

เครื่องมือ Pprof

เครื่องมือ Pprof
รูปภาพโดย – GitHub

เครื่องมือ pprof เป็นเครื่องมือสร้างโปรไฟล์ประสิทธิภาพที่ให้คุณรวบรวมและวิเคราะห์ข้อมูลเกี่ยวกับ โปรแกรม Go ของคุณ คุณสามารถใช้เพื่อค้นหาว่าโปรแกรมของคุณใช้เวลาส่วนใหญ่ไปที่ใด และเพื่อระบุปัญหาคอขวดที่สามารถปรับปรุงได้

วิธีสร้างโปรไฟล์โปรแกรม Go ของคุณ

ข้อเสียประการหนึ่งของวิธีการข้างต้นคือคุณต้องมีเว็บเซิร์ฟเวอร์ทำงานอยู่เพื่อรับข้อมูลโปรไฟล์ หรือคุณอาจต้องการใช้บางอย่างเช่น Watcher หากคุณกำลังสร้างโปรไฟล์เว็บแอปพลิเคชัน แพ็คเกจ pprof ประกอบด้วยเครื่องมือ pprof ซึ่งเหมือนกับคำสั่ง curl บนเว็บ และ pprof-dev ซึ่งจะพิมพ์ข้อมูลการดีบักสำหรับ แพ็คเกจ Go ที่กำลังวิเคราะห์

โปรไฟล์ Pprof โปรไฟล์ Pprof

โปรไฟล์ Pprof เป็นโปรไฟล์ประสิทธิภาพประเภทหนึ่งที่สามารถใช้เพื่อระบุคอขวดของประสิทธิภาพที่อาจเกิดขึ้นในแอปพลิเคชัน โดยจะให้ข้อมูลสรุปเกี่ยวกับประสิทธิภาพของแอปพลิเคชันและสามารถใช้เพื่อระบุส่วนที่อาจต้องมีการตรวจสอบเพิ่มเติม

ในโพสต์นี้ เราจะตรวจสอบภายในของ pprof และผลกระทบต่อโปรไฟล์ของเราอย่างไร เพื่อดูว่าสิ่งต่างๆ เข้ากันได้อย่างไร โปรไฟล์เป็นขั้นตอนแรกในกระบวนการ การทำให้เป็นอนุกรมของสตริงทำได้โดยใช้ struct ซึ่งป้อนสตริงลงในตารางสตริง สตริงที่ถูกทำให้เป็นอนุกรมโดยใช้โครงสร้างนี้ไม่เหมือนกับสตริงที่ถูกทำให้เป็นอนุกรมโดยใช้โปรโต ฟังก์ชันที่มี 128 ไบต์เป็นไบต์ได้รับตัวอย่าง (การวัด) ตัวอย่าง การนำเข้าหลักของแพ็คเกจมีดังนี้ (ระบบปฏิบัติการ, การทดสอบ): ggphy.com/Google/pprof/profile/package/mainimport.html TestProfile เป็นการทดสอบ func สร้างโปรไฟล์ว่างเพื่อเพิ่มทุกอย่างที่เราต้องการ

เมื่อใช้ประเภทตัวอย่าง ให้ใช้สิ่งนี้ * ประวัติโดยย่อ. ประเภทค่าในกรณีนี้คือ // หากคุณต้องการให้ทราบการจัดสรร คุณจะต้องใส่โปรไฟล์ เป็นไบต์ // เป็นหน่วย ในทำนองเดียวกัน ค่าและประเภทตัวอย่างจะเรียงลำดับในลักษณะเดียวกัน กราฟต่อไปนี้ถูกสร้างขึ้นโดยใช้เครื่องมือ pprof – http://8080 profile.pb.gz หลังจากรัน การทดสอบ profile_test.go ดูเหมือนว่ามีบางอย่างใช้หน่วยความจำ 128B (ไบต์) ในหน่วยความจำของกระบวนการ

เนื่องจากไม่รู้ว่าที่ตั้งอยู่ที่ไหนแผนที่จึงไม่แสดงตำแหน่ง หากคุณใช้การแมป ชื่อไฟล์จะมองเห็นได้อยู่แล้ว มาลองตั้งชื่อกันในครั้งต่อไป เมื่อคุณเรียกใช้ go test profile_test.go แล้ว ให้เปิดโปรไฟล์อีกครั้งด้วย go ขณะนี้ตัวอย่างเปิดใช้งานข้อมูลเมตาแล้ว ดังที่แสดงโดยเครื่องมือ pprof – http://8080 profile.pb.gz โปรไฟล์ยังห่างไกลจากสิ่งที่คุณคาดหวังในความเป็นจริงในขณะนี้ ดังนั้นเราจะสร้างตัวอย่างที่ซับซ้อนขึ้น แม้ว่า โครงสร้าง Go อาจไม่สมเหตุสมผล แต่การทำงานทีละขั้นตอนจากโปรไฟล์เปล่าเพื่อประกอบสิ่งที่เราเห็นตามปกติอีกครั้ง จะช่วยให้เข้าใจได้ง่ายขึ้น หากแต่ละโปรไฟล์มีสแต็กเทรซเหล่านี้จำนวนมาก อาจเป็นไปได้ว่าสแต็กเทรซเหล่านี้จะปรากฏในลักษณะเดียวกับในมุมมองโปรไฟล์ปกติของคุณ เราได้เพิ่มจำนวนตัวอย่าง สถานที่ และฟังก์ชันต่างๆ เพื่อทำให้กระบวนการมีความสมจริงยิ่งขึ้น เพื่อให้สแต็กเทรซแสดงออกมาในรูปแบบที่สมจริงยิ่งขึ้น

เอาต์พุต CPU.pprof

เอาต์พุต cpu.pprof ให้มุมมองโดยละเอียดว่าแอปพลิเคชันใช้งาน CPU อย่างไร สิ่งนี้มีประโยชน์สำหรับการวิเคราะห์และปรับแต่งประสิทธิภาพ สามารถสร้างผลลัพธ์ในรูปแบบต่าง ๆ รวมถึงข้อความ HTML และ PDF