Oracle, Linux 2.0.0-1.14 için DTrace'i yayınladı

Linux 2.0.0-1.14 için DTrace dinamik hata ayıklama araç setinin deneysel bir sürümü sunuldu ve eBPF alt sistemini ve Linux çekirdeği tarafından sağlanan standart izleme mekanizmalarını kullanan bir kullanıcı alanı işlemi olarak uygulandı. İşlevsellik açısından eBPF tabanlı DTrace uygulaması, Linux için çekirdek modülü biçiminde uygulanan ilk DTrace uygulamasına yakındır. Proje kodu GPLv2 lisansı altında dağıtılmaktadır.

Araç seti, BPF'yi destekleyen hazır Linux çekirdekleriyle kullanılabilir. Çalışmak için, 2.40 sürümünden itibaren binutils paketine dahil edilen CTF (Kompakt Tür Formatı) hata ayıklama formatı desteğinin uygulandığı libctf kitaplığına veya Solaris'ten taşınan libdtrace-ctf kitaplığına ihtiyacınız vardır. İsteğe bağlı olarak, 6.7 çekirdeği için, modüller ve çekirdek hakkında ek veriler elde etmek için gelişmiş özellikleri kullanmanıza olanak tanıyan iki yama sunulmaktadır.

DTrace teknolojisi, Solaris işletim sistemindeki çekirdek ve uç uygulamaların dinamik olarak izlenmesi sorunlarını çözmek için geliştirildi. DTrace, kullanıcıya sistem davranışını ayrıntılı olarak izleme ve sorunları gerçek zamanlı olarak teşhis etme yeteneği verir. Hata ayıklama işlemi sırasında DTrace, incelenen uygulamaların çalışmasını etkilemez ve performanslarını hiçbir şekilde etkilemez, bu da çalışan sistemlerin analizini anında düzenlemenize olanak tanır. DTrace'in güçlü yönlerinden biri, AWK'ya benzer yüksek seviyeli D dilidir; burada izleme komut dosyaları oluşturmak, eBPF işleyicilerini C, Python ve Lua'da harici kütüphanelerle yazmak için sunulan araçları kullanmaktan çok daha kolaydır.

Anahtar özellikler:

  • Mevcut sağlayıcılar:
    • cpc (CPU Performacne Counter) - performans bilgilerinin alınması.
    • dtrace - BEGIN, END ve ERROR işleyicileri diğer kontrollerden önce veya sonra ve ayrıca hatalar oluştuğunda çalışır.
    • fbt (İşlev Sınırı İzleme) - çekirdek işlevlerine yapılan çağrıları izleme.
    • lockstat - kilitlerin durumunu izleme.
    • pid - Kullanıcı alanında çalışan işlemlerdeki işlev çağrılarını izler.
    • proc - başlatma ve kapatma (çatal, yürütme, çıkış, hata) gibi süreçle ilgili etkinlikleri izler.
    • profil - performans istatistiklerini belirli aralıklarla kaydetme.
    • sdt, rawtp - statik çekirdek izleme (SDT - Statik Olarak Tanımlanmış İzleme).
    • usdt: statik uygulama izleme (USDT - Kullanıcı Alanı Statik Olarak Tanımlanmış İzleme)
    • schedule - CPU kaynaklarının tahsisini izler.
    • Sycall - Sistem çağrılarının giriş ve çıkışını izler.
  • Toplanan verilerin toplanması: Toplama işlevlerini (avg, count, llquantize, lquantize, max, min, quantize, stddev ve sum) ve toplama eylemlerini (clear, normalize, normalize, printa) kullanma yeteneği. Toplu işlevlerin uygulanmasının sonuçlarının düzenli ve ilişkisel dizilerde depolanmasına yönelik destek.
  • Verileri geçici olarak izlemenize, hangisinin izleme arabelleğinde yakalanması ve hangisinin atılması gerektiğine karar vermenize olanak tanıyan spekülatif izleme desteği. Mevcut işlevler spekülasyon, spekülasyon, taahhüt ve atmadır.
  • Küresel ve yerel değişkenler, TLS (İş Parçacığı-Yerel Depolama), ilişkisel diziler ve dizeler için destek.
  • Yerleşik değişkenlerin sağlanması: arg0 - arg9, args[], arayan, curcpu, curthread, epid, errno, execname, gid, id, pid, pid, ppid, probefunc, probemod, probename, probeprov, yığın derinliği, tid, timestamp, ucaller, uid, uregs[], ustacklength, walltimestamp.
  • Desteklenen eylemler: çıkış, freopen, ftruncate, mod, printa, printf, Raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack ve usym.
  • Yerleşik işlevlerin kullanılabilirliği: 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_spin, ntohl , ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • İzleme arabelleklerine dahil edilmeyen veri sayaçlarının varlığı.
  • D izleme komut dosyalarını BPF program biçiminde derleme desteği.
  • Kitaplık çağrıları için BPF işlevlerinin önceden derlenmesi.
  • Yüklenen BPF programlarının doğrulama günlüğünü elde etmek için bpflog seçeneği.
  • BPF programlarında yeniden kullanım için dinamik kod oluşturma ve kod ön derlemesi.

Yeni versiyondaki değişiklikler:

  • Kullanıcı alanındaki süreçleri izlemek için kullanılan pid sağlayıcı, talimatların yürütülmesinin koddaki uzaklıklarına göre izlenmesi için destek ekledi.
  • Toplanan verileri toplamak için stack() ve ustack() işlevlerinin kullanılmasına yönelik destek eklendi.
  • Değişmez değer 0'ı atayarak ilişkisel dizilerden her türden öğeyi kaldırma yeteneği.
  • Yapılandırılmış verilerin tür açıklamalarıyla birlikte çıktısı için yazdırma eylemi eklendi.
  • Cleanpath(), d_path() ve link_ntop() gibi yeni yerleşik işlevler eklendi.
  • Kontrolleri belirli CPU'lara bağlamanıza olanak tanıyan "-xcpu" parametresi eklendi.
  • Bellek boyutunu sınırlamak için "-xlockmem" seçeneği eklendi.
  • dtprobed yeniden başlatmaları arasında işlem izleme verilerini (USDT) kaydetme yeteneği sağlandı.
  • BPF sözde kodunda tür denetimi bilgileri sağlayan BTF (BPF Tür Formatı) mekanizması desteği.
  • Oluşturmak için yapılandırma komut dosyasını kullanma yeteneği.

Kaynak: opennet.ru

Yorum ekle