Ua paʻi ʻo Oracle iā DTrace no Linux 2.0.0-1.14

Hōʻike ʻia kahi hoʻokuʻu hoʻokolohua o ka DTrace dynamic debugging toolkit no Linux 2.0.0-1.14, i hoʻokō ʻia ma ke ʻano he kaʻina hana hoʻohana-space e hoʻohana ana i ka subsystem eBPF a me nā mīkini tracing maʻamau i hāʻawi ʻia e ka Linux kernel. Ma keʻano o ka hana, ua kokoke ka hoʻokō DTrace eBPF i ka hoʻokō DTrace mua no Linux, i hoʻokō ʻia ma ke ʻano o kahi module kernel. Hāʻawi ʻia ke code papahana ma lalo o ka laikini GPLv2.

Hiki ke hoʻohana ʻia ka pahu hana me nā kernels Linux e kākoʻo ana i ka BPF. No ka hana, pono ʻoe i ka waihona libctf me ka hoʻokō ʻana i ke kākoʻo no ka CTF (Compact Type Format) debug format, i hoʻokomo ʻia i loko o ka pūʻolo binutils e hoʻomaka ana mai ka hoʻokuʻu ʻana 2.40, a i ʻole ka waihona libdtrace-ctf i lawe ʻia mai Solaris. ʻO ke koho, hāʻawi ʻia ʻelua mau ʻāpana no ka kernel 6.7, e ʻae iā ʻoe e hoʻohana i nā hiʻohiʻona kiʻekiʻe e loaʻa ai ka ʻikepili hou e pili ana i nā modules a me ka kernel.

Ua hoʻomohala ʻia ka ʻenehana DTrace e hoʻoponopono i nā pilikia o ka huli ʻana i ka kernel a hoʻopau i nā noi i ka ʻōnaehana hana Solaris. Hāʻawi ʻo DTrace i ka mea hoʻohana i ka hiki ke nānā i ke ʻano o ka ʻōnaehana me ka kikoʻī a ʻike i nā pilikia i ka manawa maoli. I ka wā o ke kaʻina hana debugging, ʻaʻole pili ʻo DTrace i ka hana o nā noi ma lalo o ke aʻo ʻana a ʻaʻole i pili i kā lākou hana, hiki iā ʻoe ke hoʻonohonoho i ka nānā ʻana o nā ʻōnaehana holo ma ka lele. ʻO kekahi o nā ikaika o DTrace ʻo ia ka ʻōlelo D kiʻekiʻe, e like me AWK, kahi i maʻalahi loa ka hana ʻana i nā palapala hōʻailona ma mua o ka hoʻohana ʻana i nā mea hana i hāʻawi ʻia no ke kākau ʻana i nā mea lawelawe eBPF ma C, Python a me Lua me nā hale waihona puke waho.

Nā hiʻohiʻona nui:

  • Loaʻa nā mea hoʻolako:
    • cpc (CPU Performacne Counter) - loaʻa ka ʻike hana.
    • dtrace - BEGIN, END a me ERROR nā mea lawelawe ma mua a ma hope paha o nā loiloi ʻē aʻe, a me ka wā e loaʻa ai nā hewa.
    • fbt (Function Boundary Tracing) - ke nānā nei i nā kelepona i nā hana kernel.
    • lockstat - ka nānā ʻana i ke kūlana o nā loka.
    • pid - Tracks i nā kelepona hana i nā kaʻina hana e holo ana ma kahi o ka mea hoʻohana.
    • proc - nānā i nā hana pili i ke kaʻina hana e like me ka hoʻomaka a me ka pani ʻana (fork, exec, exit, fault).
    • profile - mālama i nā ʻikepili hana i nā manawa kikoʻī.
    • sdt, rawtp - static kernel tracing (SDT - Statically Defined Tracing).
    • usdt: ka hoʻopaʻa ʻana i ka noi static (USDT - Userspace Statically Defined Tracing)
    • sched - nānā i ka hoʻokaʻawale ʻana i nā kumuwaiwai CPU.
    • sycall - Kākoʻo i ke komo ʻana a me ka puka ʻana o nā kelepona ʻōnaehana.
  • ʻO ka hōʻuluʻulu o nā ʻikepili i hōʻiliʻili ʻia: ka hiki ke hoʻohana i nā hana aggregate (avg, helu, llquantize, lquantize, max, min, quantize, stddev a sum) a me nā hana aggregate (clear, normalize, normalize, printa). Kākoʻo no ka mālama ʻana i nā hopena o ka hoʻohana ʻana i nā hana aggregate ma nā papa hana maʻamau a hui pū.
  • Kākoʻo no ka speculative tracing, kahi e hiki ai iā ʻoe ke nānā i ka ʻikepili ephemerally, e hoʻoholo ana i ka mea o lākou e hopu ʻia i loko o ka trace buffer a pono e hoʻolei ʻia. ʻO nā hana i loaʻa he speculation, speculate, commit and discard.
  • Kākoʻo no nā ʻano like ʻole o ka honua a me ka kūloko, TLS (Thread-Local Storage), nā hui hui a me nā kaula.
  • Hāʻawi i nā mea hoʻololi i kūkulu ʻia: arg0 - arg9, args [], kelepona, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs [], ustackdepth, walltimestamp.
  • Kākoʻo ʻia nā hana: puka, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack and usym.
  • Loaʻa nā hana i kūkulu ʻia: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_tohl_type, mutex_type_adaptive , ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Loaʻa i nā helu helu ʻikepili ʻaʻole i hoʻokomo ʻia i loko o ka trace buffers.
  • Kākoʻo no ka hōʻuluʻulu ʻana i nā hōʻailona D tracing i loko o ka palapala papahana BPF.
  • Hoʻopili mua i nā hana BPF no nā kelepona waihona.
  • Ke koho bpflog e kiʻi i kahi log hōʻoia o nā polokalamu BPF i hoʻouka ʻia.
  • Hoʻokumu ʻia nā code Dynamic a me nā code precompilation no ka hoʻohana hou ʻana i nā polokalamu BPF.

Nā hoʻololi i ka mana hou:

  • ʻO ka mea hāʻawi pid, i hoʻohana ʻia e nānā i nā kaʻina hana ma kahi o ka mea hoʻohana, ua hoʻohui i ke kākoʻo no ka nānā ʻana i ka hoʻokō ʻana i nā ʻōlelo aʻo e kā lākou offset i ke code.
  • Kākoʻo hoʻohui ʻia no ka hoʻohana ʻana i ka hana stack() a me ustack() e hōʻuluʻulu i ka ʻikepili i hōʻiliʻili ʻia.
  • ʻO ka hiki ke wehe i nā mea o kēlā me kēia ʻano mai ka hui pū ʻana ma o ka hāʻawi ʻana i ka 0 maoli.
  • Hoʻohui ʻia ka hana paʻi no ka hoʻopuka ʻana i ka ʻikepili i kūkulu ʻia me nā ʻano hōʻike.
  • Hoʻohui hou i nā hana i kūkulu ʻia cleanpath (), d_path () a me link_ntop ().
  • Hoʻohui i ka "-xcpu" parameter, kahi e hiki ai iā ʻoe ke hoʻopaʻa i nā loiloi i nā CPU kikoʻī.
  • Hoʻohui ʻia ke koho "-xlockmem" e kaupalena i ka nui o ka hoʻomanaʻo.
  • Hāʻawi ʻia ka hiki ke mālama i ka ʻikepili trace kaʻina (USDT) ma waena o ka hoʻomaka hou ʻana o dtprobed.
  • Kākoʻo no ka hana BTF (BPF Type Format), e hāʻawi ana i ka ʻike nānā ʻano ma BPF pseudocode.
  • Hiki ke hoʻohana i ka palapala hoʻonohonoho e kūkulu.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka