กลับไปหน้าบทความ

อ่าน 3 นาที

โพรบวิว

ProbeVue ​​เป็น การนำสภาพแวดล้อม การติดตาม แบบไดนามิกที่มีน้ำหนักเบาของ IBM มาใช้ ซึ่งเปิดตัวใน AIX เวอร์ชัน 6.

โพรบวิว

ProbeVue ​​เป็น การนำสภาพแวดล้อม การติดตามแบบไดนามิกที่มีน้ำหนักเบาของIBMมาใช้ ซึ่งเปิดตัวในAIXเวอร์ชัน 6.1 [ 1 ] ProbeVue ​​มีความสามารถในการตรวจสอบกระบวนการที่กำลังทำงานอยู่ เพื่อให้สามารถวิเคราะห์ทางสถิติและดึงข้อมูลจากกระบวนการที่ถูกตรวจสอบได้ ลักษณะแบบไดนามิกของ ProbeVue ​​ช่วยให้สามารถใช้เป็นเครื่องมือวัดประสิทธิภาพของระบบโดยรวม ในขณะที่ยังคงความสามารถในการเจาะลึกไปยังเหตุการณ์เฉพาะเจาะจงในกระบวนการหรือเธรดเดียวได้

เนื่องจากไม่จำเป็นต้องมีการปรับเปลี่ยนกระบวนการที่ตรวจสอบ[ 2 ]หรือระบบ และการออกแบบที่เบาของ ProbeVue ​​ในฐานะเครื่องมือติดตาม จึงเหมาะสำหรับการใช้งานในสภาพแวดล้อมการผลิตที่เครื่องมือติดตามก่อนหน้านี้จะมีประสิทธิภาพมากเกินไป

คำอธิบาย

ProbeVue ​​มีข้อกำหนดจุดตรวจสอบ (probe point specifications) หลายอย่าง ซึ่งเป็นเหตุการณ์ที่สามารถตรวจสอบได้ สคริปต์ที่เขียนด้วยภาษา Vue ช่วยให้ผู้ใช้กำหนดจุดตรวจสอบ ซึ่งเป็นบล็อกโค้ดที่เรียกว่าบล็อกการทำงาน (action block) ที่จะทำงานเมื่อเหตุการณ์เหล่านั้นเกิดขึ้นในระบบ การทำงานของบล็อกการทำงานสามารถจำกัดให้เฉพาะเหตุการณ์ที่กำหนดได้โดยใช้คำสั่งเงื่อนไข (conditional statement) ที่วางไว้ในจุดตรวจสอบ ซึ่งเรียกว่า述语 (predicate) โค้ดในบล็อกการทำงานมี ไวยากรณ์คล้าย ภาษา Cโดยมีฟังก์ชันในตัวจำนวนจำกัด

ต่อไปนี้เป็นตัวอย่างของโพรบที่กำหนดไว้สำหรับเมื่อใดก็ตามที่กระบวนการที่มี PID 123456 เข้าสู่การเรียกใช้ระบบ read() เมื่อเหตุการณ์นั้นเกิดขึ้น สคริปต์นี้จะเรียกใช้ฟังก์ชัน printf() ในตัวเพื่อพิมพ์ข้อความไปยังบัฟเฟอร์ติดตามเอาต์พุต บรรทัดแรกในบล็อกการทำงานเป็นความคิดเห็นแบบ C ดังนั้นจึงจะไม่ทำงานในสภาพแวดล้อม ProbeVue

@@ syscall :*: read : entry เมื่อ( __pid == 123456 ) { /* นี่คือข้อความแสดงความคิดเห็น: กระบวนการที่มี PID 123456 ได้เรียกใช้ read() */ printf ( "read() เข้าสู่การเรียกใช้ระบบแล้ว\n " ); }

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

ข้อมูลจำเพาะของจุดตรวจสอบ

ปัจจุบัน IBM มีตัวให้บริการโพรบต่อไปนี้บน AIX 6.1: syscall, uft, interval, trace และโพรบของ ProbeVue ​​(BEGIN และ END) ตัวให้บริการ syscall กำหนดจุดโพรบสำหรับชุดย่อยของ system call ที่มีอยู่ โพรบ User Function Tracing (uft) สามารถกำหนดได้สำหรับจุดเริ่มต้นของฟังก์ชันที่กำหนดไว้ใน โปรแกรม CหรือC++ทั้งโพรบ syscall และ uft ต้องมีต้นแบบฟังก์ชัน ที่ถูกต้อง ในสคริปต์ Vue ก่อนที่จะสามารถเข้าถึงพารามิเตอร์ฟังก์ชัน (สำหรับโพรบจุดเริ่มต้น) หรือค่าส่งคืน (สำหรับโพรบจุดออก syscall เท่านั้น) โพรบ interval จะทำงานตามตัวจับเวลาและสามารถกำหนดได้ในช่วงเวลา 100 มิลลิวินาที ตัวให้บริการ trace ช่วยให้ ProbeVue ​​สามารถเข้าถึง hook trace แบบดั้งเดิมได้ สุดท้าย โพรบ ProbeVue ​​ที่เรียกว่า BEGIN และ END จะทำงานเมื่อสภาพแวดล้อม ProbeVue ​​เริ่มทำงานและหยุดทำงาน

ภาษา Vue

เนื่องจาก ProbeVue ​​ถูกออกแบบมาเพื่อใช้ตรวจสอบเหตุการณ์ในระบบปฏิบัติการ ภาษา Vue จึงใช้ รูปแบบ การทำงานแบบขับเคลื่อนด้วยเหตุการณ์ (event-driven style) ซึ่งใช้ในการอธิบายวิธีการประมวลผลข้อมูลที่ได้จากเหตุการณ์เหล่านี้

เช่นเดียวกับภาษาการติดตามแบบไดนามิกส่วนใหญ่ที่พบในระบบยูนิซีอื่นๆ ภาษา Vue มีไวยากรณ์คล้ายภาษา C และมักถูกนำเสนอในบริบทนี้ ความสัมพันธ์ของ Vue กับภาษา C มีความคล้ายคลึงกันหลายประการ แต่แตกต่างอย่างมีนัยสำคัญที่สุดจาก ลักษณะ เชิงคำสั่งของภาษา C ความแตกต่างและความคล้ายคลึงบางประการแสดงไว้ที่นี่[ 3 ]

ประเภทข้อมูล

เนื่องจาก ProbeVue ​​ใช้ในการตรวจสอบแอปพลิเคชันที่เขียนด้วยภาษา C เป็นหลัก จึงรองรับชนิดข้อมูลและโครงสร้างข้อมูลทั้งหมดของภาษา C Vue ยังรองรับชนิดข้อมูล String, list และ time stamp ด้วย ชนิดข้อมูล String และ list นั้นจริงๆ แล้วเป็นอาร์เรย์ในขณะที่ time stamp เป็นการแสดงค่าที่มีความละเอียดสูง ณ จุดเวลาใดจุดหนึ่งการแปลงชนิด ข้อมูล และการเลื่อนระดับชนิดข้อมูลอัตโนมัติระหว่างการดำเนินการกับชนิดข้อมูลผสมนั้นก็คล้ายกับพฤติกรรมของภาษา C เช่นกัน

ตัวชี้ไปยังอาร์เรย์และโครงสร้างข้อมูลใน ProbeVue ​​ทำงานเหมือนกับในโปรแกรมภาษา C โดยมีข้อแตกต่างที่สำคัญจากภาษา C คือ เมื่อตัวชี้อ้างถึงตำแหน่งในหน่วยความจำ พวกมันจะอ้างถึงตำแหน่งในพื้นที่ของกระบวนการอื่น การเข้าถึงหน่วยความจำนั้นจำเป็นต้องคัดลอกตำแหน่งหน่วยความจำนั้นไปยังสภาพแวดล้อม ProbeVue ​​ในเครื่องก่อน หากหน่วยความจำถูกย้ายออกไปแล้ว ProbeVue ​​จะไม่สามารถบังคับให้เกิดข้อผิดพลาดในการเข้าถึงหน่วยความจำได้ ข้อแตกต่างอีกประการหนึ่งคือ ขนาดของตัวชี้ในภาษา C จะถูกกำหนดในระหว่างการคอมไพล์ในขณะที่ใน ProbeVue ​​ขนาดของตัวชี้จะถูกกำหนดโดยระบบ32หรือ64บิตของแอปพลิเคชันที่กำลังตรวจสอบ

ชนิดข้อมูลจุดลอยตัวเป็นชนิดข้อมูลที่ถูกต้องสำหรับการกำหนดค่าจากกระบวนการที่ถูกตรวจสอบ แต่ไม่สามารถใช้สำหรับการคำนวณทางคณิตศาสตร์แบบจุดลอยตัวได้

คลาสข้อมูล

Vue ใช้ กฎ การกำหนดขอบเขตคล้ายกับภาษา C แต่ต้องคำนึงถึงลักษณะที่ได้มาจากภายนอกของข้อมูลส่วนใหญ่ในโพรบด้วย ดังนั้น ข้อมูลบางประเภทจึงไม่สามารถใช้งานได้หรือมีความเกี่ยวข้องในโพรบทั้งหมดหรือทุกส่วนของสคริปต์ View การจำแนกประเภทข้อมูลพื้นฐานมีดังนี้

ตัวแปร ส่วนกลาง (globals) - ตัวแปรที่มีขอบเขตการใช้งานครอบคลุมทั้งสคริปต์ Vue
เชลล์ - ตัวแปรที่ปฏิบัติตามข้อกำหนดของเชลล์และอ่านจากสภาพแวดล้อมของยูนิกซ์
เคอร์เนล - ตัวแปรที่จัดเตรียมโดยเคอร์เนล
ตัวแปรภายใน - ตัวแปรที่ใช้เฉพาะภายในบล็อกการทำงานของโพรบเท่านั้น
ตัวแปรเฉพาะเธรด - ตัวแปรที่เป็นตัวแปรเฉพาะเธรด แต่มีขอบเขตการใช้งานครอบคลุมหลายบล็อกการทำงานของโพรบ
การเข้า/ออก - ตัวแปรที่ถูกกำหนดโดยและเป็นตัวแปรเฉพาะที่อยู่ภายในโพรบ
ในตัว - ตัวแปรที่กำหนดไว้ล่วงหน้าซึ่งมีค่าเกี่ยวข้องกับโพรบการยิงปัจจุบัน

ผู้ปฏิบัติงาน

ตัวดำเนินการใน Vue เป็นไปตามหลักการของภาษา C อย่างใกล้ชิด ยกเว้นเมื่อใช้กับสตริง เมื่อใช้กับสตริง ตัวดำเนินการ + ใช้สำหรับการเชื่อมต่อ และตัวดำเนินการ == ใช้สำหรับการเปรียบเทียบ

การควบคุมการไหล

Vue ไม่อนุญาตให้กำหนดฟังก์ชันผู้ใช้[ 4 ]การเรียกซ้ำหรือโครงสร้างการวนซ้ำ แต่มีนิพจน์ if-then แบบมีเงื่อนไขภายในบล็อกการดำเนินการโพรบ ลักษณะที่เบาของ ProbeVue ​​ห้ามไม่ให้สคริปต์ Vue กำหนดการวนซ้ำที่มีราคาแพงหรือการดำเนินการแยกสาขาที่กว้างขวางซึ่งอาจทำให้ประสิทธิภาพลดลง

การติดตามเบื้องต้น

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

การใช้งาน

สคริปต์ Vue สามารถเรียกใช้ด้วยเวทมนตร์ ของตัวแปลภาษา และตั้งค่าให้สามารถเรียกใช้งานได้เหมือนกับสคริปต์เชลล์หรือสามารถเรียกใช้เป็นอินพุตให้กับคำสั่ง ProbeVue ​​ในรูปแบบของพารามิเตอร์บรรทัดคำสั่งหรืออินพุต stdin [ 5 ]ตามธรรมเนียม สคริปต์ Vue จะมีนามสกุลไฟล์เป็น . e

ข้อบกพร่อง

ภาษา Vue ขาดฟังก์ชันการรวมข้อมูล (aggregation) และใช้ชนิดข้อมูลลิสต์ (list data type) แทน ซึ่งมีฟังก์ชันการทำงานที่คล้ายคลึงกันแต่มีข้อจำกัดมากกว่า ผลิตภัณฑ์ที่เทียบเท่าจากSolarisที่ชื่อDTraceมีชนิดข้อมูลการรวมข้อมูลและชุดฟังก์ชันการรวมข้อมูล ที่มีประสิทธิภาพ เพื่อแสดงข้อมูลทางสถิติ ชนิดข้อมูลลิสต์มีเพียงฟังก์ชันการรวมข้อมูลพื้นฐานสำหรับรายการเดียวเท่านั้น (ตรงข้ามกับอาร์เรย์ แบบเชื่อมโยง (associative array ) ของการรวมข้อมูลที่ DTrace มี) ชนิดข้อมูลลิสต์ช่วยลดความซับซ้อนลงเล็กน้อยเมื่อเทียบกับการเก็บสถิติด้วยตนเอง แต่ไม่อนุญาตให้รีเซ็ตลิสต์ (เช่น ในช่วงเวลาหนึ่ง) ซึ่งสามารถทำได้ง่ายเมื่อใช้การสรุปด้วยตนเองและชนิดข้อมูลพื้นฐาน IBM ได้ให้คำมั่นว่าจะเพิ่มอาร์เรย์แบบเชื่อมโยงในเวอร์ชันในอนาคตของภาษา Vue

เนื่องจาก DTrace มีระยะเวลาการพัฒนาที่ยาวนานกว่า ProbeVue ​​ทำให้ DTrace มีข้อกำหนดจุดตรวจสอบมากกว่าอย่างเห็นได้ชัด[ 6 ] IBM มีแผนที่จะเพิ่มจุดตรวจสอบใหม่จำนวนมากในเวอร์ชันเทคโนโลยีในอนาคตของ AIX 6.1 และในเวอร์ชัน AIX หลักถัดไป

ดูเพิ่มเติม

  • ProbeVue: คู่มือผู้ใช้ฉบับขยายพร้อมรายละเอียดทางเทคนิค
  • โพรบวิว ควิกชีท
  • ความแตกต่างระหว่าง AIX 6.1 และ RedBook
  • บทความจาก DeveloperWorks เกี่ยวกับ ProbeVue
  • ตัวอย่างสคริปต์และหมายเหตุการใช้งานของ ProbeVue
  • การดีบักแอปพลิเคชัน C++ โดยใช้ ProbeVue
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=ProbeVue&oldid=1346798131 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ โพรบวิว

ProbeVue ​​เป็น การนำสภาพแวดล้อม การติดตาม แบบไดนามิกที่มีน้ำหนักเบาของ IBM มาใช้ ซึ่งเปิดตัวใน AIX เวอร์ชัน 6.

คำอธิบาย

ProbeVue ​​มีข้อกำหนดจุดตรวจสอบ (probe point specifications) หลายอย่าง ซึ่งเป็นเหตุการณ์ที่สามารถตรวจสอบได้ สคริปต์ที่เขียนด้วยภาษา Vue ช่วยให้ผู้ใช้กำหนดจุดตรวจสอบ ซึ่งเป็นบล็อกโค้ดที่เรียกว่าบล็อกการทำงาน (action block)...

ข้อมูลจำเพาะของจุดตรวจสอบ

ปัจจุบัน IBM มีตัวให้บริการโพรบต่อไปนี้บน AIX 6.1: syscall, uft, interval, trace และโพรบของ ProbeVue ​​(BEGIN และ END) ตัวให้บริการ syscall กำหนดจุดโพรบสำหรับชุดย่อยของ system call ที่มีอยู่ โพรบ User Function Tracing (uft)...

ภาษา Vue

เนื่องจาก ProbeVue ​​ถูกออกแบบมาเพื่อใช้ตรวจสอบเหตุการณ์ในระบบปฏิบัติการ ภาษา Vue จึงใช้ รูปแบบ การทำงานแบบขับเคลื่อนด้วยเหตุการณ์ (event-driven style) ซึ่งใช้ในการอธิบายวิธีการประมวลผลข้อมูลที่ได้จากเหตุการณ์เหล่านี้