BCC - dinamiskās izsekošanas rīki Linux veiktspējas uzraudzībai, tīklošanai un citiem
BCC (BPF kompilatoru kolekcija) ir spēcīgs piemērotu rīku un failu paraugu kopums, lai izveidotu atjautīgas kodola izsekošanas un manipulācijas programmas. Tas izmanto paplašinātu BPF (Berkeley pakešu filtrus), kas sākotnēji bija pazīstams kā eBPF, kas bija viena no jaunajām funkcijām Linux 3.15.
Praktiski lielākajai daļai BCC izmantoto komponentu ir nepieciešama Linux 4.1 vai jaunāka versija, un tās ievērības cienīgās funkcijas ietver:
- Nepieciešams trešās puses kodola modulis, jo visi rīki darbojas, pamatojoties uz BPF, kas ir iebūvēts kodolā un BCC, izmanto Linux 4.x sērijā pievienotās funkcijas.
- Ļauj novērot programmatūras izpildi.
- Sastāv no vairākiem veiktspējas analīzes rīkiem ar failu paraugiem un rokasgrāmatām.
Vislabāk piemērota pieredzējušiem Linux lietotājiem, BCC atvieglo BPF programmu rakstīšanu, izmantojot kodola instrumentus C, bet front-end Python un lua. Turklāt tas atbalsta vairākus uzdevumus, piemēram, veiktspējas analīzi, uzraudzību, tīkla trafika kontroli un daudz ko citu.
Kā instalēt BCC Linux sistēmās
Atcerieties, ka BCC izmanto līdzekļus, kas pievienoti Linux kodola 4.1 vai jaunākai versijai, un kā prasība kodols būtu jāapkopo ar zemāk norādītajiem karodziņiem:
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
Lai pārbaudītu kodola karodziņus, skatiet failu /proc/config.gz vai palaidiet komandas, kā parādīts zemāk esošajos piemēros:
[email ~ $ grep CONFIG_BPF= /boot/config-`uname -r` CONFIG_BPF=y [email ~ $ grep CONFIG_BPF_SYSCALL= /boot/config-`uname -r` CONFIG_BPF_SYSCALL=y [email ~ $ grep CONFIG_NET_CLS_BPF= /boot/config-`uname -r` CONFIG_NET_CLS_BPF=m [email ~ $ grep CONFIG_NET_ACT_BPF= /boot/config-`uname -r` CONFIG_NET_ACT_BPF=m [email ~ $ grep CONFIG_BPF_JIT= /boot/config-`uname -r` CONFIG_BPF_JIT=y [email ~ $ grep CONFIG_HAVE_BPF_JIT= /boot/config-`uname -r` CONFIG_HAVE_BPF_JIT=y [email ~ $ grep CONFIG_BPF_EVENTS= /boot/config-`uname -r` CONFIG_BPF_EVENTS=y
Pēc kodola karodziņu pārbaudes ir pienācis laiks instalēt BCC rīkus Linux sistēmās.
Ubuntu 16.04 ir izveidotas tikai nakts paketes, taču instalēšanas instrukcijas ir ļoti vienkāršas. Nav nepieciešams kodolu atjaunināt vai apkopot to no avota.
$ 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
Sāciet, instalējot 4.3+ versijas Linux kodolu no http://kernel.ubuntu.com/~kernel-ppa/mainline.
Piemēram, uzrakstiet nelielu čaulas skriptu “bcc-install.sh” ar zemāk esošo saturu.
Piezīme: atjauniniet PREFIX vērtību uz jaunāko datumu un pārlūkojiet arī failus norādītajā PREFIX URL, lai iegūtu faktisko REL vērtību, aizstājiet tos čaulas skriptā.
#!/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
Saglabājiet failu un izejiet. Padariet to izpildāmu un pēc tam palaidiet to, kā parādīts:
$ chmod +x bcc-install.sh $ sh bcc-install.sh
Pēc tam restartējiet sistēmu.
$ reboot
Pēc tam palaidiet tālāk norādītās komandas, lai instalētu parakstītas BCC paketes:
$ 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
Instalējiet 4.2+ kodolu no http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, ja jūsu sistēmas versija ir zemāka par nepieciešamo. Tālāk ir sniegts piemērs, kā to izdarīt:
$ sudo dnf config-manager --add-repo=http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo $ sudo dnf update $ reboot
Pēc tam pievienojiet BBC rīku krātuvi, atjauniniet sistēmu un instalējiet rīkus, izpildot nākamo komandu sēriju:
$ 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
Jums jāsāk ar kodola jaunināšanu vismaz uz 4.3.1-1 versiju, pēc tam instalējiet tālāk norādītās paketes, izmantojot jebkurus Arch pakotņu pārvaldniekus, piemēram, pacaur, yaourt, cower utt.
bcc bcc-tools python-bcc python2-bcc
Kā izmantot BCC rīkus Linux sistēmās
Visi BCC rīki ir instalēti direktorijā /usr/share/bcc/tools
. Tomēr jūs varat tos palaist arī no BCC Github repozitorija sadaļā /tools
, kur tie beidzas ar paplašinājumu .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
Mēs aplūkosim dažus piemērus, kas pārrauga vispārējo Linux sistēmas veiktspēju un tīklu veidošanu.
Sāksim ar visu open()
sistēmas izsaukumu izsekošanu, izmantojot opensnoop. Tas ļauj mums pastāstīt, kā darbojas dažādas lietojumprogrammas, identificējot to datu failus, konfigurācijas failus un daudz ko citu:
$ 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 ....
Šajā piemērā tas parāda apkopotu diska I/O latentuma sadalījumu, izmantojot biolatecncy. Pēc komandas izpildes pagaidiet dažas minūtes un nospiediet taustiņu kombināciju Ctrl-C, lai to izbeigtu un skatītu izvadi.
$ 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 |************* |
Šajā sadaļā mēs pāriesim uz jaunu procesu izsekošanu izpildē, izmantojot execsnoop rīku. Katru reizi, kad process tiek saspiests ar fork()
un exec()
sistēmas izsaukumiem, tas tiek parādīts izvadē. Tomēr ne visi procesi tiek notverti.
$ 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 ...
Izmantojot ext4slower, lai izsekotu ext4 failu sistēmas kopējās darbības, kas ir lēnākas par 10ms, lai palīdzētu mums neatkarīgi identificēt lēnu diska I/O, izmantojot failu sistēmu.
Tas veic tikai tās darbības, kuras pārsniedz slieksni:
$ 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 ...
Pēc tam ienirsim rindas drukāšanā uz diska I/O katru sekundi, izmantojot sīkāku informāciju, piemēram, procesa ID, sektoru, baitus, latentumu, izmantojot 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 ...
Pēc tam mēs turpinām izmantot cachestat, lai katru sekundi parādītu vienu apkopotās statistikas rindiņu no sistēmas kešatmiņas. Tas ļauj veikt sistēmas noregulēšanas darbības, norādot zemu kešatmiņas trāpījumu attiecību un lielu nokavējumu līmeni:
$ 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 ...
TCP savienojumu uzraudzība katru sekundi, izmantojot tcpconnect. Tās izvadā ir iekļauta avota un mērķa adrese, kā arī porta numurs. Šis rīks ir noderīgs, lai izsekotu negaidītus TCP savienojumus, tādējādi palīdzot mums identificēt neefektivitāti lietojumprogrammu konfigurācijās vai uzbrucēju.
$ 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 ...
Visus iepriekš minētos rīkus var izmantot arī ar dažādām opcijām, lai iespējotu palīdzības lapu attiecīgajam rīkam, izmantojiet opciju -h
, piemēram:
$ 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
Lai izsekotu neizdevušos exec() shv, izmantojiet opciju -x
ar opensnoop, kā norādīts zemāk:
$ 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 ...
Pēdējais zemāk sniegtais piemērs parāda, kā izpildīt pielāgotu izsekošanas darbību. Mēs izsekojam noteiktu procesu, izmantojot tā PID.
Vispirms nosakiet procesa ID:
$ pidof firefox 15437
Vēlāk palaidiet pielāgoto izsekošanas komandu. Zemāk esošajā komandā: -p
norāda procesa ID, do_sys_open()
ir kodola funkcija, kas tiek izsekota dinamiski, iekļaujot tās otro argumentu kā virkni.
$ 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 ....
Kopsavilkums
BCC ir jaudīgs un viegli lietojams rīkkopa dažādiem sistēmas administrēšanas uzdevumiem, piemēram, sistēmas veiktspējas izsekošanai, bloku ierīču I/O izsekošanai, TCP funkcijām, failu sistēmas darbībām, syscalls, Node.js zondēm, kā arī daudzām citām. Svarīgi ir tas, ka tajā tiek piegādāti vairāki failu piemēri un rokasgrāmatas, kas paredzēti rīkiem, kas jums palīdzēs, padarot to lietotājam draudzīgu un uzticamu.
Visbeidzot, bet ne mazāk svarīgi, jūs varat atgriezties pie mums, daloties savās domās par šo tēmu, uzdodot jautājumus, sniedzot noderīgus ieteikumus vai sniedzot konstruktīvas atsauksmes, izmantojot zemāk esošo komentāru sadaļu.
Lai iegūtu papildinformāciju un lietojumu, apmeklējiet vietni https://iovisor.github.io/bcc/