徒然ネル

LinuxカーネルとかeBPFとか

BCCインストールからexampleコード実行まで

eBPFのフロントエンドツールであるBCCをインストールしたので備忘録

 

環境

Ubuntu 22.04 server (full install)

カーネルバージョン:5.15.0-101-generic

 BCCと依存関係のあるライブラリをインストール

# For Jammy (22.04)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
  libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
  liblzma-dev libdebuginfod-dev arping netperf iperf

BCCのインストールとコンパイル

git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake ..
make
sudo make install
cmake -DPYTHON_CMD=python3 .. # build python3 binding
pushd src/python/
make
sudo make install
popd

exampleの実行

cd ~/bcc/examples

$ sudo python3 hello_world.py 

実行結果

b'           <...>-3632    [002] d...1  1136.279260: bpf_trace_printk: Hello, World!'
b''
b'            node-3632    [002] d...1  1136.285979: bpf_trace_printk: Hello, World!'
b''
b'            node-3632    [002] d...1  1136.304155: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.313026: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.321563: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.324960: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.328242: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.331308: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [001] d...1  1136.334393: bpf_trace_printk: Hello, World!'
b''
b'     cpuUsage.sh-11298   [000] d...1  1137.349559: bpf_trace_printk: Hello, World!'

参考

bcc/INSTALL.md at master · iovisor/bcc (github.com)