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

อ่าน 4 นาที

ซิสเต็มแท็ป

ในด้านคอมพิวเตอร์ SystemTap ( stap ) เป็น ภาษาสคริปต์ และ เครื่องมือ สำหรับ ตรวจสอบ การทำงานของ ระบบปฏิบัติการ Linux ที่กำลังทำงานอยู่แบบ ไดนามิก ผู้ดูแลระบบสามารถใช้ SystemTap...

ซิสเต็มแท็ป

ซิสเต็มแท็ป
ปล่อย2548 ( 2005 )
เวอร์ชันเสถียร
5.5 / 1 พฤษภาคม 2026 ( 1 พฤษภาคม 2026 )
เขียนเป็นซี , ซี++
ระบบปฏิบัติการลินุกซ์
พิมพ์การติดตามภาษาโปรแกรม
ใบอนุญาตใบอนุญาตสาธารณะทั่วไปของ GNU
เว็บไซต์sourceware.org/systemtap/
ที่เก็บข้อมูล
  • sourceware.org/git/systemtap.git

ในด้านคอมพิวเตอร์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
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=SystemTap&oldid=1352555277 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ ซิสเต็มแท็ป

ในด้านคอมพิวเตอร์ SystemTap ( stap ) เป็น ภาษาสคริปต์ และ เครื่องมือ สำหรับ ตรวจสอบ การทำงานของ ระบบปฏิบัติการ Linux ที่กำลังทำงานอยู่แบบ ไดนามิก ผู้ดูแลระบบสามารถใช้ SystemTap...

ประวัติศาสตร์

SystemTap เปิดตัวครั้งแรกในปี 2548 ใน Red Hat Enterprise Linux 4 Update 2 ในฐานะเทคโนโลยีตัวอย่าง [ 2 ]

การใช้งาน

ไฟล์ SystemTap เขียนด้วยภาษา SystemTap [ 7 ] (บันทึกเป็น .stp ไฟล์) และเรียกใช้ด้วย stap บรรทัดคำสั่ง [ 8 ]

ตัวอย่างง่ายๆ

สคริปต์ต่อไปนี้แสดงแอปพลิเคชันทั้งหมดที่ตั้ง ค่าตัวเลือก ซ็อกเก็ต TCP บนระบบ ตัวเลือกใดบ้างที่ถูกตั้งค่า และตัวเลือกนั้นถูกตั้งค่าสำเร็จหรือไม่