Ubuntu20でBPF Compiler Collection(BCC)を試す

BCCの概要

  • eBPFをバックエンドで実行する可観察ツールです

環境

$ cat /etc/os-release  | head -2
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"

How To Install

sudo apt-get install bpfcc-tools linux-headers-$(uname -r)

インストールが完了すると、以下のように /usr/sbin 配下に各種ツールが展開されます

$ dpkg -L bpfcc-tools | grep /usr/sbin | head -5
/usr/sbin
/usr/sbin/argdist-bpfcc
/usr/sbin/bashreadline-bpfcc
/usr/sbin/biolatency-bpfcc
/usr/sbin/biosnoop-bpfcc

試してみる

Brendan Gregg氏のホームページで紹介tcpstates を実行してみます。 BCCのUbnutu版は、コマンド名の末尾に -bpfcc がつく命名ルールとなっているようです。

$ file /usr/sbin/tcpstates-bpfcc 
/usr/sbin/tcpstates-bpfcc: Python script, UTF-8 Unicode text executable

sudo /usr/sbin/tcpstates-bpfcc でコマンドの実行を開始すると、 以降に発生のTCP ConnectionのState Changesが全てダンプされます。

他に何ができるのか?

以下の画像の通りlinux OSを構成する各コンポーネントについて、広範に色んな観点で確認ができるようになっています。

f:id:smatsuzaki:20201202010351p:plain
iovisor/bccのREADME.mdの画像を転載

/* https://sunrise033.com/entry/hatena-blog-how-to-hierarchicalize-categories */