นี่คือคำสั่ง perf-trace ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
perf-trace - เครื่องมือที่ได้แรงบันดาลใจจาก strace
เรื่องย่อ
perf ติดตาม
perf ติดตาม ระเบียน
DESCRIPTION
คำสั่งนี้จะแสดงเหตุการณ์ที่เกี่ยวข้องกับเป้าหมาย เริ่มต้น syscalls แต่
เหตุการณ์ของระบบอื่นๆ เช่น เพจฟอลต์ เหตุการณ์ตลอดอายุงาน เหตุการณ์การตั้งเวลา ฯลฯ
นี่เป็นเครื่องมือโหมดสดนอกเหนือจากการทำงานกับไฟล์ perf.data เช่น perf . อื่นๆ
เครื่องมือ ไฟล์สามารถสร้างได้โดยใช้คำสั่ง perf ระเบียน คำสั่ง แต่เซสชั่นจำเป็นต้อง
รวมเหตุการณ์ raw_syscalls (-e raw_syscalls:*). หรืออีกทางหนึ่ง perf ติดตาม ระเบียน สามารถ
ใช้เป็นทางลัดเพื่อรวมเหตุการณ์ raw_syscalls โดยอัตโนมัติเมื่อเขียนเหตุการณ์
เป็นไฟล์.
ตัวเลือกต่อไปนี้ใช้กับการติดตามที่สมบูรณ์แบบ ตัวเลือกในการบันทึกการติดตามที่สมบูรณ์แบบอยู่ใน
หน้าคนบันทึก perf
OPTIONS
-a, --all-ซีพียู
การรวบรวมทั่วทั้งระบบจาก CPU ทั้งหมด
-e, --expr
รายชื่อ syscall ที่จะแสดง ปัจจุบันมีเพียงชื่อ syscall นำหน้าด้วย ! แสดงทั้งหมด
syscalls แต่ที่ระบุ คุณอาจต้องหนีมัน
-o, --output=
ชื่อไฟล์เอาต์พุต
-p, --pid=
บันทึกเหตุการณ์บน ID กระบวนการที่มีอยู่ (รายการที่คั่นด้วยจุลภาค)
-t, --tid=
บันทึกเหตุการณ์บน ID เธรดที่มีอยู่ (รายการที่คั่นด้วยจุลภาค)
-u, --uid=
บันทึกเหตุการณ์ในเธรดที่เป็นของ uid ชื่อหรือหมายเลข
--ตัวกรอง-pids=
กรองเหตุการณ์สำหรับ pids เหล่านี้และสำหรับ ติดตาม ตัวเอง (รายการที่คั่นด้วยจุลภาค)
-v, --verbose=
ระดับคำฟุ่มเฟือย
--ไม่มีมรดก
งานย่อยไม่สืบทอดเคาน์เตอร์
-m, --mmap-หน้า=
จำนวนหน้าข้อมูล mmap (ต้องยกกำลังสอง) หรือข้อกำหนดขนาดพร้อมผนวก
อักขระหน่วย - B/K/M/G. ขนาดถูกปัดขึ้นเพื่อให้มีกำลังหน้าใกล้เคียงที่สุดเท่ากับสอง
มูลค่า
-C, --ซีพียู
รวบรวมตัวอย่างเฉพาะในรายการ CPU ที่ให้มา สามารถจัดเตรียมซีพียูหลายตัวเป็น
รายการที่คั่นด้วยเครื่องหมายจุลภาคโดยไม่มีช่องว่าง: 0,1 ช่วงของซีพียูถูกระบุด้วย -: 0-2 ใน
โหมดต่อเธรดโดยเปิดโหมดสืบทอด (ค่าเริ่มต้น) เหตุการณ์จะถูกบันทึกเฉพาะเมื่อ
เธรดทำงานบนซีพียูที่กำหนด ค่าเริ่มต้นคือการตรวจสอบ CPU ทั้งหมด
--duration: แสดงเฉพาะเหตุการณ์ที่มีระยะเวลามากกว่า NM ms
--sched: รับรันไทม์ของเธรดและให้ข้อมูลสรุปเมื่อสิ้นสุดเซสชัน
-i --input ประมวลผลเหตุการณ์จากไฟล์ข้อมูลประสิทธิภาพที่กำหนด
-T --time พิมพ์การประทับเวลาแบบเต็มค่อนข้างสัมพันธ์กับตัวอย่างแรก
--การสื่อสาร
แสดงกระบวนการ COMM ข้าง ID โดยค่าเริ่มต้น ปิดใช้งานด้วย --no-comm
-s, --สรุป
แสดงเฉพาะข้อมูลสรุปของ syscalls ตามเธรดที่มีเวลาต่ำสุด สูงสุด และเวลาเฉลี่ย (เป็นมิลลิวินาที)
และ stddev สัมพัทธ์
-S, --พร้อม-สรุป
แสดง syscalls ทั้งหมดตามด้วยสรุปโดยเธรดที่มีเวลาต่ำสุด สูงสุด และเวลาเฉลี่ย (in
msec) และ stddev สัมพัทธ์
--tool_stats
แสดงสถิติเครื่องมือ เช่น จำนวนครั้งที่พบ fd→pathname ผ่านการเชื่อมต่อกับ
เปิด syscall return + vfs_getname หรือผ่านการอ่าน /proc/pid/fd เป็นต้น
-F=[ทั้งหมด|นาที|maj], --pf=[ทั้งหมด|นาที|maj]
ติดตามเพจฟอลต์ คุณสามารถเลือกได้ว่าต้องการรอง รายใหญ่ หรือทั้งหมด
เพจฟอลต์ ค่าเริ่มต้นคือ maj
--syscalls
ระบบติดตามการโทร ตัวเลือกนี้เปิดใช้งานโดยค่าเริ่มต้น
--เหตุการณ์
ติดตามกิจกรรมอื่นๆ ดู perf รายการ สำหรับรายการทั้งหมด
--proc-แผนที่หมดเวลา
เมื่อประมวลผลเธรดที่มีอยู่ก่อน /proc/XXX/mmap อาจใช้เวลานานเพราะ
ไฟล์อาจมีขนาดใหญ่ ในกรณีดังกล่าวจำเป็นต้องมีการหมดเวลา ตัวเลือกนี้ตั้งเวลา
ออกจำกัด. ค่าเริ่มต้นคือ 500 มิลลิวินาที
เพจฟอลต์
เมื่อติดตาม pagefaults รูปแบบของการติดตามจะเป็นดังนี้:
ความผิดพลาด [ + ] ⇒[ป้องกันอีเมล][1]> (
ระดับ>).
· min/maj บ่งชี้ว่าเหตุการณ์ข้อผิดพลาดนั้นเล็กน้อยหรือสำคัญ;
· ip.symbol แสดงสัญลักษณ์สำหรับตัวชี้คำสั่ง (รหัสที่สร้างข้อบกพร่อง); ถ้า
ไม่มีสัญลักษณ์การดีบัก การติดตาม perf จะพิมพ์ IP ดิบ
· addr.dso แสดง DSO สำหรับที่อยู่ที่มีข้อบกพร่อง
·ประเภทแผนที่เป็นอย่างใดอย่างหนึ่ง d สำหรับแผนที่ที่ไม่สามารถเรียกใช้งานได้หรือ x สำหรับแผนที่ปฏิบัติการ
·ระดับแอดเดอร์เป็นอย่างใดอย่างหนึ่ง k สำหรับเคอร์เนล dso หรือ . สำหรับผู้ใช้ dso
สำหรับความละเอียดของสัญลักษณ์ คุณอาจต้องติดตั้งสัญลักษณ์การดีบัก
โปรดทราบว่าระยะเวลาปัจจุบันเป็น 0 เสมอและไม่ได้สะท้อนถึงเวลาจริง
ถือว่าจับผิด!
เมื่อ --verbose ระบุ perf trace จะพยายามพิมพ์ข้อมูลที่มีอยู่ทั้งหมดสำหรับทั้ง IP
และที่อยู่ผิดในรูปของ dso@สัญลักษณ์[2]+ออฟเซ็ต
ตัวอย่าง
ติดตามเฉพาะเพจฟอลต์หลัก:
$ การติดตามที่สมบูรณ์แบบ --no-syscalls -F
ติดตาม syscalls, เพจฟอลต์หลักและรอง:
$ การติดตามที่สมบูรณ์แบบ -F ทั้งหมด
1416.547 ( 0.000 ms): python/20235 majfault [CRYPTO_push_info_+0x0] => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0@0x61be0 (เอ็กซ์)
อย่างที่คุณเห็น มี pagefault ที่สำคัญในกระบวนการ python จาก
CRYPTO_push_info_ รูทีนซึ่งมีข้อบกพร่องใน libcrypto.so
ใช้ perf-trace ออนไลน์โดยใช้บริการ onworks.net