BCC - Instrumente de urmărire dinamică pentru monitorizarea performanței Linux, rețele și altele
BCC (BPF Compiler Collection) este un set puternic de instrumente adecvate și fișiere exemple pentru crearea de programe de urmărire și manipulare a nucleului cu resurse. Utilizează BPF extins (Berkeley Packet Filters), cunoscut inițial ca eBPF, care a fost una dintre noile caracteristici din Linux 3.15 puternic>.
Practic, majoritatea componentelor utilizate de BCC necesită Linux 4.1 sau o versiune superioară, iar caracteristicile sale demne de remarcat includ:
- Nu necesită un modul de nucleu terță parte, deoarece toate instrumentele funcționează pe baza BPF care este încorporat în nucleu și BCC utilizează funcții adăugate în seria Linux 4.x.
- Permite observarea execuției software-ului.
- Cuprinde mai multe instrumente de analiză a performanței cu fișiere exemplu și pagini de manual.
Cel mai potrivit pentru utilizatorii Linux avansați, BCC facilitează scrierea de programe BPF folosind instrumentația kernel în C și front-end-uri în Python și lua. În plus, acceptă mai multe sarcini, cum ar fi analiza performanței, monitorizarea, controlul traficului în rețea și multe altele.
Cum se instalează BCC în sistemele Linux
Amintiți-vă că BCC folosește funcții adăugate în versiunea kernel-ului Linux 4.1 sau mai sus și, ca cerință, nucleul ar fi trebuit să fie compilat cu indicatoarele setate mai jos:
CONFIG_BPF=y CONFIG_BPF_SYSCALL=y # [optional, for tc filters] CONFIG_NET_CLS_BPF=m # [optional, for tc actions] CONFIG_NET_ACT_BPF=m CONFIG_BPF_JIT=y CONFIG_HAVE_BPF_JIT=y # [optional, for kprobes] CONFIG_BPF_EVENTS=y
Pentru a verifica semnalizatoarele de kernel, vizualizați fișierul /proc/config.gz sau executați comenzile ca în exemplele de mai jos:
~ $ grep CONFIG_BPF= /boot/config-`uname -r` CONFIG_BPF=y ~ $ grep CONFIG_BPF_SYSCALL= /boot/config-`uname -r` CONFIG_BPF_SYSCALL=y ~ $ grep CONFIG_NET_CLS_BPF= /boot/config-`uname -r` CONFIG_NET_CLS_BPF=m ~ $ grep CONFIG_NET_ACT_BPF= /boot/config-`uname -r` CONFIG_NET_ACT_BPF=m ~ $ grep CONFIG_BPF_JIT= /boot/config-`uname -r` CONFIG_BPF_JIT=y ~ $ grep CONFIG_HAVE_BPF_JIT= /boot/config-`uname -r` CONFIG_HAVE_BPF_JIT=y ~ $ grep CONFIG_BPF_EVENTS= /boot/config-`uname -r` CONFIG_BPF_EVENTS=y
După verificarea steagurilor kernelului, este timpul să instalați instrumentele BCC în sistemele Linux.
Pe Ubuntu 16.04
Numai pachetele de noapte sunt create pentru Ubuntu 16.04, dar instrucțiunile de instalare sunt foarte simple. Nu este nevoie de upgrade de kernel sau de compilare din sursă.
$ echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | sudo tee /etc/apt/sources.list.d/iovisor.list $ sudo apt-get update $ sudo apt-get install bcc-tools
Pe Ubuntu 14.04
Începeți prin a instala un nucleu Linux 4.3+ de la http://kernel.ubuntu.com/~kernel-ppa/mainline.
Ca exemplu, scrieți un mic script shell „bcc-install.sh” cu conținutul de mai jos.
Notă: actualizați valoarea PREFIX la cea mai recentă dată și, de asemenea, răsfoiți fișierele din URL-ul PREFIX furnizate pentru a obține valoarea reală REL, înlocuiți-le în scriptul shell.
#!/bin/bash VER=4.5.1-040501 PREFIX=http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5.1-wily/ REL=201604121331 wget ${PREFIX}/linux-headers-${VER}-generic_${VER}.${REL}_amd64.deb wget ${PREFIX}/linux-headers-${VER}_${VER}.${REL}_all.deb wget ${PREFIX}/linux-image-${VER}-generic_${VER}.${REL}_amd64.deb sudo dpkg -i linux-*${VER}.${REL}*.deb
Salvați fișierul și ieșiți. Faceți-l executabil, apoi rulați-l așa cum se arată:
$ chmod +x bcc-install.sh $ sh bcc-install.sh
După aceea, reporniți sistemul.
$ reboot
Apoi, executați comenzile de mai jos pentru a instala pachetele BCC semnate:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D4284CDD $ echo "deb https://repo.iovisor.org/apt trusty main" | sudo tee /etc/apt/sources.list.d/iovisor.list $ sudo apt-get update $ sudo apt-get install binutils bcc bcc-tools libbcc-examples python-bcc
Pe Fedora 24-23
Instalați un nucleu 4.2+ de la http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, dacă sistemul dvs. are o versiune mai mică decât cea necesară. Mai jos este un exemplu despre cum să faci asta:
$ sudo dnf config-manager --add-repo=http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo $ sudo dnf update $ reboot
După aceea, adăugați depozitul de instrumente BBC, actualizați sistemul și instalați instrumentele executând următoarea serie de comenzi:
$ echo -e '[iovisor]\nbaseurl=https://repo.iovisor.org/yum/nightly/f23/$basearch\nenabled=1\ngpgcheck=0' | sudo tee /etc/yum.repos.d/iovisor.repo $ sudo dnf update $ sudo dnf install bcc-tools
Pe Arch Linux – AUR
Ar trebui să începeți prin a vă actualiza nucleul la cel puțin versiunea 4.3.1-1, apoi instalați pachetele de mai jos folosind orice manager de pachete Arch, cum ar fi pacaur, yaourt<, cower etc.
bcc bcc-tools python-bcc python2-bcc
Cum să utilizați instrumentele BCC în sistemele Linux
Toate instrumentele BCC sunt instalate în directorul /usr/share/bcc/tools
. Cu toate acestea, le puteți rula alternativ din depozitul BCC Github sub /tools
unde se termină cu o extensie .py
.
$ ls /usr/share/bcc/tools argdist capable filetop offwaketime stackcount vfscount bashreadline cpudist funccount old stacksnoop vfsstat biolatency dcsnoop funclatency oomkill statsnoop wakeuptime biosnoop dcstat gethostlatency opensnoop syncsnoop xfsdist biotop doc hardirqs pidpersec tcpaccept xfsslower bitesize execsnoop killsnoop profile tcpconnect zfsdist btrfsdist ext4dist mdflush runqlat tcpconnlat zfsslower btrfsslower ext4slower memleak softirqs tcpretrans cachestat filelife mysqld_qslower solisten tplist cachetop fileslower offcputime sslsniff trace
Vom acoperi câteva exemple sub – monitorizarea performanței generale a sistemului Linux și a conectării în rețea.
Urmăriți apelurile de sistem open().
Să începem prin a urmări toate apelurile de sistem open()
folosind opensnoop. Acest lucru ne permite să ne spunem cum funcționează diverse aplicații prin identificarea fișierelor lor de date, fișiere de configurare și multe altele:
$ cd /usr/share/bcc/tools $ sudo ./opensnoop PID COMM FD ERR PATH 1 systemd 35 0 /proc/self/mountinfo 2797 udisksd 13 0 /proc/self/mountinfo 1 systemd 35 0 /sys/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sda/sda1/uevent 1 systemd 35 0 /run/udev/data/b8:1 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount 2247 systemd 15 0 /proc/self/mountinfo 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.d 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.d 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.d ....
Rezumați latența I/O dispozitiv bloc
În acest exemplu, arată o distribuție rezumată a latenței I/O disc folosind biolatecncy. După executarea comenzii, așteptați câteva minute și apăsați pe Ctrl-C pentru a o opri și a vizualiza rezultatul.
$ sudo ./biolatecncy Tracing block device I/O... Hit Ctrl-C to end. ^C usecs : count distribution 0 -> 1 : 0 | | 2 -> 3 : 0 | | 4 -> 7 : 0 | | 8 -> 15 : 0 | | 16 -> 31 : 0 | | 32 -> 63 : 0 | | 64 -> 127 : 0 | | 128 -> 255 : 3 |****************************************| 256 -> 511 : 3 |****************************************| 512 -> 1023 : 1 |************* |
Urmăriți procesele noi prin apeluri de sistem exec().
În această secțiune, vom trece la urmărirea noilor procese în execuție folosind instrumentul execsnoop. De fiecare dată când un proces este bifurcat de apelurile de sistem fork()
și exec()
, acesta este afișat în rezultat. Cu toate acestea, nu toate procesele sunt capturate.
$ sudo ./execsnoop PCOMM PID PPID RET ARGS gnome-screensho 14882 14881 0 /usr/bin/gnome-screenshot --gapplication-service systemd-hostnam 14892 1 0 /lib/systemd/systemd-hostnamed nautilus 14897 2767 -2 /home/tecmint/bin/net usershare info nautilus 14897 2767 -2 /home/tecmint/.local/bin/net usershare info nautilus 14897 2767 -2 /usr/local/sbin/net usershare info nautilus 14897 2767 -2 /usr/local/bin/net usershare info nautilus 14897 2767 -2 /usr/sbin/net usershare info nautilus 14897 2767 -2 /usr/bin/net usershare info nautilus 14897 2767 -2 /sbin/net usershare info nautilus 14897 2767 -2 /bin/net usershare info nautilus 14897 2767 -2 /usr/games/net usershare info nautilus 14897 2767 -2 /usr/local/games/net usershare info nautilus 14897 2767 -2 /snap/bin/net usershare info compiz 14899 14898 -2 /home/tecmint/bin/libreoffice --calc compiz 14899 14898 -2 /home/tecmint/.local/bin/libreoffice --calc compiz 14899 14898 -2 /usr/local/sbin/libreoffice --calc compiz 14899 14898 -2 /usr/local/bin/libreoffice --calc compiz 14899 14898 -2 /usr/sbin/libreoffice --calc libreoffice 14899 2252 0 /usr/bin/libreoffice --calc dirname 14902 14899 0 /usr/bin/dirname /usr/bin/libreoffice basename 14903 14899 0 /usr/bin/basename /usr/bin/libreoffice ...
Urmăriți operațiunile lente ext4
Folosind ext4slower pentru a urmări operațiunile obișnuite ale sistemului de fișiere ext4 care sunt mai lente de 10 ms, pentru a ne ajuta să identificăm independent I/O pe disc lentă prin intermediul fișierului sistem.
Emite numai acele operațiuni care depășesc un prag:
$ sudo ./execslower Tracing ext4 operations slower than 10 ms TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 11:59:13 upstart 2252 W 48 1 10.76 dbus.log 11:59:13 gnome-screensh 14993 R 144 0 10.96 settings.ini 11:59:13 gnome-screensh 14993 R 28 0 16.02 gtk.css 11:59:13 gnome-screensh 14993 R 3389 0 18.32 gtk-main.css 11:59:25 rs:main Q:Reg 1826 W 156 60 31.85 syslog 11:59:25 pool 15002 R 208 0 14.98 .xsession-errors 11:59:25 pool 15002 R 644 0 12.28 .ICEauthority 11:59:25 pool 15002 R 220 0 13.38 .bash_logout 11:59:27 dconf-service 2599 S 0 0 22.75 user.BHDKOY 11:59:33 compiz 2548 R 4096 0 19.03 firefox.desktop 11:59:34 compiz 15008 R 128 0 27.52 firefox.sh 11:59:34 firefox 15008 R 128 0 36.48 firefox 11:59:34 zeitgeist-daem 2988 S 0 0 62.23 activity.sqlite-wal 11:59:34 zeitgeist-fts 2996 R 8192 40 15.67 postlist.DB 11:59:34 firefox 15008 R 140 0 18.05 dependentlibs.list 11:59:34 zeitgeist-fts 2996 S 0 0 25.96 position.tmp 11:59:34 firefox 15008 R 4096 0 10.67 libplc4.so 11:59:34 zeitgeist-fts 2996 S 0 0 11.29 termlist.tmp ...
Trace Block I/O dispozitiv cu PID și latență
În continuare, să ne aprofundăm în tipărirea unei linii pe disc I/O în fiecare secundă, cu detalii precum ID-ul procesului, sectorul, octeții, latența, printre altele, folosind biosnoop:
$ sudo ./biosnoop TIME(s) COMM PID DISK T SECTOR BYTES LAT(ms) 0.000000000 ? 0 R -1 8 0.26 2.047897000 ? 0 R -1 8 0.21 3.280028000 kworker/u4:0 14871 sda W 30552896 4096 0.24 3.280271000 jbd2/sda1-8 545 sda W 29757720 12288 0.40 3.298318000 jbd2/sda1-8 545 sda W 29757744 4096 0.14 4.096084000 ? 0 R -1 8 0.27 6.143977000 ? 0 R -1 8 0.27 8.192006000 ? 0 R -1 8 0.26 8.303938000 kworker/u4:2 15084 sda W 12586584 4096 0.14 8.303965000 kworker/u4:2 15084 sda W 25174736 4096 0.14 10.239961000 ? 0 R -1 8 0.26 12.292057000 ? 0 R -1 8 0.20 14.335990000 ? 0 R -1 8 0.26 16.383798000 ? 0 R -1 8 0.17 ...
Urmăriți raportul de accesare/oprire din memoria cache a paginii
După aceea, trecem la utilizarea cachestat pentru a afișa o linie de statistici rezumate din memoria cache a sistemului în fiecare secundă. Acest lucru permite operațiunile de reglare a sistemului, evidențiind rata scăzută de accesare a cache-ului și rata mare de rateuri:
$ sudo ./cachestat HITS MISSES DIRTIES READ_HIT% WRITE_HIT% BUFFERS_MB CACHED_MB 0 0 0 0.0% 0.0% 19 544 4 4 2 25.0% 25.0% 19 544 1321 33 4 97.3% 2.3% 19 545 7476 0 2 100.0% 0.0% 19 545 6228 15 2 99.7% 0.2% 19 545 0 0 0 0.0% 0.0% 19 545 7391 253 108 95.3% 2.7% 19 545 33608 5382 28 86.1% 13.8% 19 567 25098 37 36 99.7% 0.0% 19 566 17624 239 416 96.3% 0.5% 19 520 ...
Urmăriți conexiunile active TCP
Monitorizarea conexiunilor TCP la fiecare secundă folosind tcpconnect. Ieșirea sa include adresa sursă și destinație și numărul portului. Acest instrument este util pentru urmărirea conexiunilor TCP neașteptate, ajutându-ne astfel să identificăm ineficiențele în configurațiile aplicației sau un atacator.
$ sudo ./tcpconnect PID COMM IP SADDR DADDR DPORT 15272 Socket Threa 4 10.0.2.15 91.189.89.240 80 15272 Socket Threa 4 10.0.2.15 216.58.199.142 443 15272 Socket Threa 4 10.0.2.15 216.58.199.142 80 15272 Socket Threa 4 10.0.2.15 216.58.199.174 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 117.18.237.29 80 15272 Socket Threa 4 10.0.2.15 216.58.199.142 80 15272 Socket Threa 4 10.0.2.15 216.58.199.131 80 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 52.222.135.52 443 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 216.58.199.132 443 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 216.58.199.142 443 15272 Socket Threa 4 10.0.2.15 54.69.17.198 443 15272 Socket Threa 4 10.0.2.15 54.69.17.198 443 ...
Toate instrumentele de mai sus pot fi utilizate și cu diferite opțiuni, pentru a activa pagina de ajutor pentru un instrument dat, utilizați opțiunea -h
, de exemplu:
$ sudo ./tcpconnect -h usage: tcpconnect [-h] [-t] [-p PID] [-P PORT] Trace TCP connects optional arguments: -h, --help show this help message and exit -t, --timestamp include timestamp on output -p PID, --pid PID trace this PID only -P PORT, --port PORT comma-separated list of destination ports to trace. examples: ./tcpconnect # trace all TCP connect()s ./tcpconnect -t # include timestamps ./tcpconnect -p 181 # only trace PID 181 ./tcpconnect -P 80 # only trace port 80 ./tcpconnect -P 80,81 # only trace port 80 and 81
Urmărirea apelurilor de sistem exec() eșuate
Pentru a urmări apelurile de sistem exec()s eșuate, utilizați opțiunea -x
cu opensnoop, după cum urmează:
$ sudo ./opensnoop -x PID COMM FD ERR PATH 15414 pool -1 2 /home/.hidden 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpu/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpu/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpuacct/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpuacct/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/blkio/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/blkio/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/memory/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/memory/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/pids/system.slice/systemd-hostnamed.service/cgroup.procs 2548 compiz -1 2 15416 systemd-cgroups -1 2 /run/systemd/container 15416 systemd-cgroups -1 2 /sys/fs/kdbus/0-system/bus 15415 systemd-hostnam -1 2 /run/systemd/container 15415 systemd-hostnam -1 13 /proc/1/environ 15415 systemd-hostnam -1 2 /sys/fs/kdbus/0-system/bus 1695 dbus-daemon -1 2 /run/systemd/users/0 15415 systemd-hostnam -1 2 /etc/machine-info 15414 pool -1 2 /home/tecmint/.hidden 15414 pool -1 2 /home/tecmint/Binary/.hidden 2599 dconf-service -1 2 /run/user/1000/dconf/user ...
Urmăriți anumite funcții de proces
Ultimul exemplu de mai jos demonstrează cum să executați o operație de urmărire personalizată. Urmărim un anumit proces folosind PID-ul său.
Mai întâi determinați ID-ul procesului:
$ pidof firefox 15437
Mai târziu, rulați comanda personalizată trace. În comanda de mai jos: -p
specifică ID-ul procesului, do_sys_open()
este o funcție de kernel care este urmărită dinamic, incluzând al doilea argument ca șir.
$ sudo ./trace -p 4095 'do_sys_open "%s", arg2' TIME PID COMM FUNC - 12:17:14 15437 firefox do_sys_open /run/user/1000/dconf/user 12:17:14 15437 firefox do_sys_open /home/tecmint/.config/dconf/user 12:18:07 15437 firefox do_sys_open /run/user/1000/dconf/user 12:18:07 15437 firefox do_sys_open /home/tecmint/.config/dconf/user 12:18:13 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:13 15437 firefox do_sys_open /dev/urandom 12:18:13 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /dev/urandom ....
rezumat
BCC este un set de instrumente puternic și ușor de utilizat pentru diferite sarcini de administrare a sistemului, cum ar fi monitorizarea performanței sistemului de urmărire, urmărirea I/O dispozitivului bloc, funcții TCP, operațiuni ale sistemului de fișiere, apeluri de sistem, sonde Node.js , plus multe altele. Important este că este livrat cu câteva exemple de fișiere și pagini de manual pentru instrumentele care să vă ghideze, făcându-l ușor de utilizat și de încredere.
Nu în ultimul rând, puteți reveni la noi împărtășindu-vă părerile despre subiect, puneți întrebări, oferiți sugestii utile sau orice feedback constructiv prin secțiunea de comentarii de mai jos.
Pentru mai multe informații și utilizare, vizitați: https://iovisor.github.io/bcc/