อ่าน 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
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ โพรบวิว
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) ซึ่งใช้ในการอธิบายวิธีการประมวลผลข้อมูลที่ได้จากเหตุการณ์เหล่านี้