„Oracle“ paskelbė „DTrace“, skirtą „Linux“ 2.0.0–1.14

Pateikiamas eksperimentinis DTrace dinaminio derinimo įrankių rinkinio, skirto Linux 2.0.0-1.14, leidimas, įgyvendintas kaip vartotojo erdvės procesas, kuriame naudojamas eBPF posistemis ir standartiniai sekimo mechanizmai, kuriuos teikia Linux branduolys. Kalbant apie funkcionalumą, eBPF pagrįstas DTrace diegimas yra artimas pirmajam Linux DTrace diegimui, įgyvendintam branduolio modulio forma. Projekto kodas platinamas pagal GPLv2 licenciją.

Įrankių rinkinys gali būti naudojamas su atsarginiais Linux branduoliais, kurie palaiko BPF. Kad veiktų, jums reikia libctf bibliotekos su CTF (Compact Type Format) derinimo formato palaikymu, kuris yra įtrauktas į paketą binutils nuo 2.40 leidimo, arba libdtrace-ctf bibliotekos, perkeltos iš Solaris. Pasirinktinai siūlomi du pataisymai 6.7 branduoliui, leidžiantys naudoti pažangias funkcijas, norint gauti papildomų duomenų apie modulius ir branduolį.

DTrace technologija buvo sukurta siekiant išspręsti Solaris operacinės sistemos branduolio ir galutinių programų dinaminio sekimo problemas. DTrace suteikia vartotojui galimybę detaliai stebėti sistemos elgseną ir diagnozuoti problemas realiuoju laiku. Derinimo proceso metu DTrace neturi įtakos tiriamų programų veikimui ir jokiu būdu nedaro įtakos jų veikimui, o tai leidžia organizuoti veikiančių sistemų analizę skrydžio metu. Viena iš DTrace privalumų yra aukšto lygio D kalba, panaši į AWK, kuria kur kas lengviau kurti sekimo scenarijus, nei naudojant siūlomus įrankius eBPF tvarkytuvams rašyti C, Python ir Lua kalbomis su išorinėmis bibliotekomis.

Pagrindinės savybės:

  • Galimi tiekėjai:
    • cpc (CPU Performacne Counter) – informacijos apie našumą gavimas.
    • dtrace – BEGIN, END ir ERROR tvarkyklės veikia prieš arba po kitų patikrinimų, taip pat kai atsiranda klaidų.
    • fbt (Function Boundary Tracing) – branduolio funkcijų iškvietimų sekimas.
    • lockstat – užraktų būsenos stebėjimas.
    • pid – seka funkcijų iškvietimus procesuose, veikiančiuose vartotojo erdvėje.
    • proc - stebi su procesu susijusią veiklą, pvz., paleidimą ir išjungimą (šakės, vykdymo, išėjimo, gedimo).
    • profilis – našumo statistikos išsaugojimas nustatytais intervalais.
    • sdt, rawtp – statinis branduolio sekimas (SDT – Statically Defined Tracing).
    • usdt: statinis programų sekimas (USDT – naudotojo erdvės statiškai apibrėžtas sekimas)
    • sched – stebi procesoriaus išteklių paskirstymą.
    • sycall – seka sistemos skambučių įvedimą ir išėjimą.
  • Surinktų duomenų agregavimas: galimybė naudoti agregato funkcijas (vid., count, llquantize, lquantize, max, min, quantize, stddev ir sum) ir apibendrintus veiksmus (išvalyti, normalizuoti, normalizuoti, printa). Suvestinių funkcijų taikymo rezultatų saugojimo įprastuose ir asociatyviniuose masyvuose palaikymas.
  • Spekuliatyvaus sekimo palaikymas, leidžiantis laikinai stebėti duomenis, sprendžiant, kurie iš jų turi būti užfiksuoti sekimo buferyje, o kuriuos atmesti. Galimos funkcijos yra spėlioti, spėlioti, įsipareigoti ir išmesti.
  • Globalių ir vietinių kintamųjų, TLS (Thread-Local Storage), asociatyvinių masyvų ir eilučių palaikymas.
  • Pateikiami integruoti kintamieji: arg0 - arg9, args[], skambutis, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, laiko žyma, ucaller uid, uregs[], ustackdepth, walltimestamp.
  • Palaikomi veiksmai: exit, freeopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack ir usym.
  • Integruotų funkcijų prieinamumas: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owner, mutex_owner, mutex_type_adaptive_, mutex_type_adaptive, mutex_type_adaptive, mutex , ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Duomenų skaitiklių, kurie neįtraukti į sekimo buferius, buvimas.
  • D sekimo scenarijų kompiliavimo į BPF programos formą palaikymas.
  • Išankstinis BPF funkcijų kompiliavimas bibliotekos iškvietimams.
  • Parinktis bpflog, kad gautumėte įkeltų BPF programų patikrinimo žurnalą.
  • Dinaminis kodo generavimas ir išankstinis kodo kompiliavimas pakartotiniam naudojimui BPF programose.

Naujos versijos pakeitimai:

  • Pid teikėjas, naudojamas procesams vartotojo erdvėje sekti, pridėjo palaikymą, kad būtų galima sekti instrukcijų vykdymą pagal jų poslinkį kode.
  • Pridėtas palaikymas naudojant stack() ir ustack() funkcijas surinktiems duomenims kaupti.
  • Galimybė pašalinti bet kokio tipo elementus iš asociatyvinių masyvų priskiriant pažodinį 0.
  • Pridėtas spausdinimo veiksmas, skirtas struktūriniams duomenims su tipo anotacijomis išvesti.
  • Pridėtos naujos integruotos funkcijos cleanpath(), d_path() ir link_ntop().
  • Pridėtas parametras „-xcpu“, leidžiantis susieti patikras su konkrečiais procesoriais.
  • Pridėta "-xlockmem" parinktis, skirta apriboti atminties dydį.
  • Suteikta galimybė išsaugoti proceso sekimo duomenis (USDT) tarp dtprobed paleidimų.
  • BTF (BPF tipo formato) mechanizmo palaikymas, kuris pateikia tipo tikrinimo informaciją BPF pseudokode.
  • Galimybė kurti konfigūravimo scenarijų.

Šaltinis: opennet.ru

Добавить комментарий