อ่าน 4 นาที
ซิสเต็มแท็ป
ในด้านคอมพิวเตอร์ SystemTap ( stap ) เป็น ภาษาสคริปต์ และ เครื่องมือ สำหรับ ตรวจสอบ การทำงานของ ระบบปฏิบัติการ Linux ที่กำลังทำงานอยู่แบบ ไดนามิก ผู้ดูแลระบบสามารถใช้ SystemTap...
ซิสเต็มแท็ป
| ซิสเต็มแท็ป | |
|---|---|
| ปล่อย | 2548 |
| เวอร์ชันเสถียร | 5.5 / 1 พฤษภาคม 2026 |
| เขียนเป็น | ซี , ซี++ |
| ระบบปฏิบัติการ | ลินุกซ์ |
| พิมพ์ | การติดตามภาษาโปรแกรม |
| ใบอนุญาต | ใบอนุญาตสาธารณะทั่วไปของ GNU |
| เว็บไซต์ | sourceware.org/systemtap/ |
| ที่เก็บข้อมูล |
|
ในด้านคอมพิวเตอร์SystemTap ( stap )เป็นภาษาสคริปต์และเครื่องมือสำหรับตรวจสอบการทำงานของระบบปฏิบัติการLinuxที่กำลังทำงานอยู่แบบ ไดนามิก ผู้ดูแลระบบสามารถใช้ SystemTap เพื่อดึงข้อมูล กรอง และสรุปข้อมูล เพื่อช่วยในการวินิจฉัยปัญหาด้านประสิทธิภาพหรือการทำงานที่ซับซ้อนได้
SystemTap ประกอบด้วยซอฟต์แวร์โอเพนซอร์สฟรีและรวมถึงการสนับสนุนจากRed Hat , IBM , Intel , Hitachi , Oracle , มหาวิทยาลัยวิสคอนซิน-แมดิสัน และสมาชิกชุมชนอื่นๆ[ 1 ]
ประวัติศาสตร์
SystemTap เปิดตัวครั้งแรกในปี 2548 ในRed Hat Enterprise Linux 4 Update 2 ในฐานะเทคโนโลยีตัวอย่าง[ 2 ]
หลังจากใช้เวลาพัฒนามาสี่ปี SystemTap 1.0 ก็ได้เปิดตัวในปี 2552 [ 3 ]
ณ ปี 2011 SystemTap ทำงานได้อย่างเต็มที่บนระบบปฏิบัติการ Linux ทุกรุ่น รวมถึงRHEL / CentOS 5 [ 4 ]ตั้งแต่การอัปเดต 2, SLES 10, [ 5 ] Fedora, Debian และ Ubuntu
จุดติดตามในCPython VM และJVMถูกเพิ่มใน SystemTap 1.2 ในปี 2552 [ 6 ]
ในเดือนพฤศจิกายน 2019 SystemTap 4.2 ได้เพิ่มฟังก์ชันPrometheus Exporter เข้ามา
การใช้งาน
ไฟล์ SystemTap เขียนด้วยภาษา SystemTap [ 7 ] (บันทึกเป็น.stpไฟล์) และเรียกใช้ด้วยstapบรรทัดคำสั่ง[ 8 ]
ระบบจะทำการวิเคราะห์สคริปต์หลายรอบก่อนที่จะอนุญาตให้รัน สคริปต์อาจถูกรันด้วยแบ็กเอนด์หนึ่งในสามแบบที่เลือกโดย--runtime=ตัวเลือก แบ็กเอนด์เริ่มต้นคือโมดูลเคอร์เนลที่โหลดได้ซึ่งมีความสามารถสูงสุดในการตรวจสอบและจัดการส่วนใดส่วนหนึ่งของระบบ ดังนั้นจึงต้องการสิทธิ์สูงสุด แบ็กเอนด์อีกแบบหนึ่งใช้ ไลบรารี การวิเคราะห์โปรแกรมแบบไดนามิก DynInst เพื่อใส่เครื่องมือให้กับโปรแกรมในพื้นที่ผู้ใช้ของผู้ใช้เองเท่านั้น และต้องการสิทธิ์น้อยที่สุด แบ็กเอนด์ใหม่ล่าสุด[ 9 ]ใช้ไบต์โค้ด eBPFซึ่งจำกัดอยู่เฉพาะ ความสามารถของตัวแปลเคอร์เนล Linuxและต้องการสิทธิ์ระดับกลาง ในแต่ละกรณี โมดูลจะถูกยกเลิกการโหลดเมื่อสคริปต์ทำงานเสร็จสิ้น
โดยทั่วไป สคริปต์จะเน้นไปที่เหตุการณ์ต่างๆ (เช่น การเริ่มต้นหรือการสิ้นสุดสคริปต์) จุดตรวจสอบที่คอมไพล์ไว้ เช่น "tracepoints" ของ Linux หรือการเรียกใช้ฟังก์ชันหรือคำสั่งในเคอร์เนลหรือพื้นที่ผู้ใช้
สคริปต์ "โหมดผู้เชี่ยวชาญ" บางตัวอาจมีโค้ด C ฝังอยู่ ซึ่งสามารถเรียกใช้ได้ด้วย-gตัวเลือกบรรทัดคำสั่ง อย่างไรก็ตาม ไม่แนะนำให้ใช้โหมดผู้เชี่ยวชาญ และ SystemTap แต่ละเวอร์ชันจะมีการเพิ่มจุดตรวจสอบเพิ่มเติมที่ออกแบบมาเพื่อขจัดความจำเป็นในการใช้สคริปต์โหมดผู้เชี่ยวชาญ โหมดผู้เชี่ยวชาญมีความจำเป็นเพื่อให้สคริปต์สามารถแก้ไขสถานะในซอฟต์แวร์ที่ถูกตรวจสอบได้ เช่น เพื่อใช้การแก้ไขช่องโหว่ด้านความปลอดภัยฉุกเฉินบางประเภท
ตั้งแต่ SystemTap เวอร์ชัน 1.7 เป็นต้นไป ซอฟต์แวร์จะใช้ กลุ่ม stapsysและระดับสิทธิ์ ใหม่ [ 10 ]
ตัวอย่างง่ายๆ
สคริปต์ต่อไปนี้แสดงแอปพลิเคชันทั้งหมดที่ตั้ง ค่าตัวเลือก ซ็อกเก็ตTCP บนระบบ ตัวเลือกใดบ้างที่ถูกตั้งค่า และตัวเลือกนั้นถูกตั้งค่าสำเร็จหรือไม่
# แสดงตัวเลือกการตั้งค่าซ็อกเก็ต# ส่งคืนค่าเปิดใช้งานหรือปิดใช้งานตามค่าของ optval ฟังก์ชันgetstatus ( optval ) { ถ้า( optval == 1 ) ส่งคืน"เปิดใช้งาน" มิฉะนั้นส่งคืน"ปิดใช้งาน" }probe begin { print ( "\nกำลังตรวจสอบแอปที่ตั้งค่าตัวเลือกซ็อกเก็ต\n" ) }# ตั้งค่าตัวเลือกซ็อกเก็ตprobe tcp.setsockopt { status = getstatus ( user_int ( $ optval ) ) printf ( "แอ ป '% s ' (PID %d) เป็นตัวเลือกซ็อกเก็ต %s %s..." , execname () , pid () , status , optstr ) } # ตรวจสอบว่าการตั้งค่าตัวเลือกซ็อกเก็ตสำเร็จหรือไม่probe tcp.setsockopt.return { if ( ret == 0 ) printf ( " สำเร็จ" ) else printf ( " ล้มเหลว" ) printf ( "\n" ) }probe end { print ( "\nกำลังปิดระบบ\n" ) }ตัวอย่างอื่นๆ อีกมากมายถูกจัดส่งมาพร้อมกับ SystemTap [ 11 ]นอกจากนี้ยังมีตัวอย่างการใช้งาน SystemTap ในโลกแห่งความเป็นจริงที่หน้า War Stories อีกด้วย[ 12 ]
การนำเข้าสคริปต์จากเทคโนโลยีการติดตามอื่นๆ
SystemTap สามารถเชื่อมต่อกับ มาร์กเกอร์ DTraceเมื่อมีการคอมไพล์มาร์กเกอร์เหล่านั้นเข้าไปในแอปพลิเคชันโดยใช้มาโครจากsys/sdt.hไฟล์เฮดเดอร์
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- วิกิ SystemTap
- คู่มืออ้างอิงภาษาของ SystemTap ( ไฟล์ PDF )
- การวิเคราะห์โครงการ SystemTap โดย Ohloh
- การติดตามแบบไดนามิกด้วย DTrace และ SystemTap
- บทช่วยสอนการใช้งาน Systemtap โดย Frank Ch. Eigler
- คู่มือเริ่มต้นใช้งาน SystemTap สำหรับผู้เริ่มต้นโดย ดอน โดมิงโก และ วิลเลียม โคเฮน
- การแก้ปัญหาด้วย Systemtap ,งานประชุม Ottawa Linux Symposium (เก็บถาวรเมื่อ 13 กันยายน 2008 ที่ Wayback Machine)ปี 2006
- การแก้ปัญหาด้วย SystemTapเก็บถาวรเมื่อวันที่ 22 กุมภาพันธ์ 2012 ที่ Wayback Machineโดย Eugene Teo นำเสนอในการประชุม Red Hat Summitปี 2007 (สคริปต์ )
- การติดตามแบบไดนามิกและการวิเคราะห์ประสิทธิภาพโดยใช้ SystemTapโดย Joshua Stone นำเสนอในการประชุม LinuxWorld Conferenceปี 2008
- บทช่วยสอนการใช้งาน SystemTapโดย Jim Keniston นำเสนอในงานประชุม Linux Plumbers Conferenceปี 2008
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ซิสเต็มแท็ป
ในด้านคอมพิวเตอร์ SystemTap ( stap ) เป็น ภาษาสคริปต์ และ เครื่องมือ สำหรับ ตรวจสอบ การทำงานของ ระบบปฏิบัติการ Linux ที่กำลังทำงานอยู่แบบ ไดนามิก ผู้ดูแลระบบสามารถใช้ SystemTap...
ประวัติศาสตร์
SystemTap เปิดตัวครั้งแรกในปี 2548 ใน Red Hat Enterprise Linux 4 Update 2 ในฐานะเทคโนโลยีตัวอย่าง [ 2 ]
การใช้งาน
ไฟล์ SystemTap เขียนด้วยภาษา SystemTap [ 7 ] (บันทึกเป็น .stp ไฟล์) และเรียกใช้ด้วย stap บรรทัดคำสั่ง [ 8 ]
ตัวอย่างง่ายๆ
สคริปต์ต่อไปนี้แสดงแอปพลิเคชันทั้งหมดที่ตั้ง ค่าตัวเลือก ซ็อกเก็ต TCP บนระบบ ตัวเลือกใดบ้างที่ถูกตั้งค่า และตัวเลือกนั้นถูกตั้งค่าสำเร็จหรือไม่