SystemTap - SystemTap

SystemTap
Smileytap.svg
Dastlabki chiqarilish2005 (2005)
Barqaror chiqish
4.4 / 2020 yil 9-noyabr; 14 kun oldin (2020-11-09)
Ombor Buni Vikidatada tahrirlash
YozilganC, C ++
Operatsion tizimLinux
TuriKuzatish dasturlash tili
LitsenziyaGNU umumiy jamoat litsenziyasi
Veb-saytmanba dasturi.org/ systemtap/

Yilda hisoblash, SystemTap (shtapel) a skript tili va vosita dinamik ravishda asbobsozlik ishlab chiqarish ishlab chiqarish Linux yadrosi asoslangan operatsion tizimlar. Tizim ma'murlari murakkab ishlash yoki funktsional muammolarni diagnostikasini ta'minlash uchun SystemTap-dan ma'lumotlarni ajratib olish, filtrlash va umumlashtirish uchun foydalanishi mumkin.

SystemTap quyidagilardan iborat bepul va ochiq manbali dasturiy ta'minot va hissalarni o'z ichiga oladi Qizil shapka, IBM, Intel, Xitachi, Oracle, Viskonsin-Medison universiteti va boshqa jamoat a'zolari.[1]

Tarix

SystemTap 2005 yilda paydo bo'ldi Red Hat Enterprise Linux 4 Texnologiyani oldindan ko'rish sifatida 2-ni yangilang.[2]

To'rt yillik rivojlanishdan so'ng, SystemTap 1.0 2009 yilda chiqarildi.[3]

2011 yildan boshlab, SystemTap Linux-ning barcha tarqatmalarida to'liq qo'llab-quvvatlanadi RHEL / CentOS 5[4] 2-yangilanishdan beri, SLES 10,[5] Fedora, Debian va Ubuntu.

Tracepoints CPython VM va JVM 2009 yilda SystemTap 1.2-ga qo'shilgan.[6]

2019 yil noyabr oyida SystemTap 4.2 qo'shildi prometey eksport qiluvchi.

Foydalanish

SystemTap fayllari SystemTap tilida yoziladi[7] (sifatida saqlangan .stp fayllari) va bilan ishga tushirish shtapel buyruq satri.[8]

Tizim ssenariyni ishlashiga ruxsat berishdan oldin uni bir qator tahlillardan o'tkazadi. Ssenariylar tomonidan tanlangan uchta orqa bittadan bittasi bilan bajarilishi mumkin - ish vaqti = variant. Sukut bo'yicha yuklanadigan yadro moduli, tizimning istalgan qismini tekshirish va boshqarish uchun to'liq imkoniyatga ega va shuning uchun eng katta imtiyozni talab qiladi. Boshqa backend-ga asoslangan dinamik dastur tahlili kutubxonasi DynInst foydalanuvchiga faqat o'zining foydalanuvchi uchun mo'ljallangan dasturlarini moslashtirish uchun va eng kam imtiyoz talab qiladi. Eng yangi orqa tomon[9] ga asoslangan eBPF bayt-kodi, bilan cheklangan Linux yadro tarjimonining qobiliyatlari va o'rta darajadagi imtiyozlarni talab qiladi. Har ikkala holatda ham, modul skript ishlagandan so'ng tushiriladi.

Ssenariylar odatda voqealarga (masalan, skriptni boshlash yoki tugatish), Linux "tracepoints" singari tekshiruv punktlariga yoki yadro yoki foydalanuvchi makonidagi funktsiyalar yoki bayonotlarning bajarilishiga qaratilgan.

Ba'zi "guru rejimi" skriptlari C bilan biriktirilgan bo'lishi mumkin, ular bilan ishlaydi -g buyruq qatori opsiyasi. Biroq, guru rejimidan foydalanish taqiqlanadi va har bir SystemTap versiyasi guru-rejim skriptlariga ehtiyojni bartaraf etish uchun mo'ljallangan ko'proq tekshiruv nuqtalarini o'z ichiga oladi. Skriptlarga ruxsat berish uchun guru rejimi talab qilinadi o'zgartirish ba'zi bir favqulodda xavfsizlik tuzatishlarini qo'llash kabi vositali dasturiy ta'minot.

SystemTap 1.7 versiyasidan boshlab dasturiy ta'minot yangisini amalga oshiradi stapsis guruh va imtiyoz darajasi.[10]

Oddiy misollar

Quyidagi skript barcha dasturlarning sozlamalarini ko'rsatadi TCP rozetka tizimdagi variantlar, qanday variantlar o'rnatilayotgani va parametr muvaffaqiyatli o'rnatiladimi yoki yo'qmi.

# Soketlarni sozlash parametrlarini ko'rsatish# Qaytish optval qiymatiga qarab yoqilgan yoki o'chirilganfunktsiya getstatus(optval){    agar ( optval == 1 )        qaytish "yoqish"    boshqa        qaytish "o'chirib qo'yish"}zond boshlash{	chop etish ("Soket parametrlarini o'rnatadigan ilovalarni tekshirish")}    # Soket parametrini o'rnating    zond tcp.setkopt    {        holat = getstatus(user_int($optval))    	printf ("'% S' (PID% d)% socket% s variantidir ...", execname(), pid(), holat, optstr)    }            # Soket parametrini sozlashni tekshiring        zond tcp.setkopt.qaytish        {            agar ( ret == 0 )                printf ("muvaffaqiyat")            boshqa                printf ("muvaffaqiyatsiz")            printf ("")        }zond oxiri{	chop etish ("Yopish")}

Boshqa ko'plab misollar SystemTap bilan birga yuboriladi.[11] Shuningdek, "War Stories" sahifasida SystemTap-dan foydalanishning haqiqiy misollari mavjud.[12]

Boshqa kuzatuv texnologiyalaridan skriptlarni import qilish

SystemTap biriktirishi mumkin DTrace dan makroslardan foydalangan holda dasturga qo'shilganda markerlar sys / sdt.h sarlavha fayli.

Shuningdek qarang

Adabiyotlar

  1. ^ "SystemTap yangilanishi". LWN.net.
  2. ^ "Red Hat Enterprise Linux uchun mahsulot hujjatlari". Qizil shapka.
  3. ^ "Josh Stone - SystemTap versiyasi 1.0".
  4. ^ "Mahsulot hujjatlari". Qizil shapka.
  5. ^ 60951 (2006 yil 10 oktyabr). "SystemTap uchun ixtiyoriy yangilanish". Novell.CS1 maint: raqamli ismlar: mualliflar ro'yxati (havola)
  6. ^ "Xususiyatlar / SystemtapStaticProbes - FedoraProject". Fedoraproyekt.
  7. ^ https://sourceware.org/systemtap/langref/
  8. ^ Taqqoslang Rimliklarga, Robb (2009). "SystemTap tiliga ma'lumot: SystemTap skriptlarida ishlatiladigan konstruktsiyalar va sintaksis bo'yicha qo'llanma". Qizil shapka: 4. CiteSeerX  10.1.1.172.5186. SystemTap [...] staprun dasturiga tatbiq qilingan sudo buyrug'i yordamida o'zi yaratgan yadro moslamalarini aslida ishga tushirish uchun root imtiyozlarini talab qiladi. [...] staprun - bu SystemTap paketining bir qismi, modulni yuklash va tushirish va yadroga bag'ishlangan. - ma'lumotni uzatish. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  9. ^ Merey, Aaron (2017-10-18). "systemtap 3.2 versiyasi". Olingan 2017-10-18. Systemtap jamoasi 3.2 versiyasini e'lon qiladi [...] erta eksperimental eBPF (kengaytirilgan Berkli Paket Filtri) orqa tomoni [...]
  10. ^ Eigler, Frank Ch. (2012-02-01). "systemtap 1.7 versiyasi". Olingan 2013-03-26. Systemtap jamoasi 1.7 versiyasini e'lon qiladi [...] Yangi guruh va imtiyoz darajasi "stapsys" qo'shildi [...]
  11. ^ "SystemTap misollari".
  12. ^ "WarStories - Wiki Systemtap".

Tashqi havolalar