Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
eBPFインターン 開発ネタ帳
Search
KONDO Uchio
September 08, 2020
Technology
0
140
eBPFインターン 開発ネタ帳
KONDO Uchio
September 08, 2020
Tweet
Share
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.1k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
130
Narrative of Ruby & Rust
udzura
0
140
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.4k
Talk of RBS
udzura
0
320
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
650
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
580
Device access filtering in cgroup v2
udzura
1
670
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
570
Other Decks in Technology
See All in Technology
Building a RAG-poweredAI chat appwith Python and VS Code
pamelafox
0
140
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
150
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
270
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
870
DMM.com アルファ室採用案内資料
hsugita
1
220
一生覚えておきたい「システム開発=コミュニケーション」〜初めての実務案件振り返りLT〜
maimyyym
2
250
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
140
今日からできる!簡単 .NET 高速化 Tips -2024 edition-
xin9le
7
3.5k
Azureの基本的な権限管理の勉強会
yhana
1
2k
require(ESM)とECMAScript仕様
uhyo
4
950
【SORACOM UG 東海】あらゆるモノがつながる社会へ、IoT と SORACOM
soracom
PRO
1
130
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
160
Featured
See All Featured
What's new in Ruby 2.0
geeforr
337
31k
Atom: Resistance is Futile
akmur
260
25k
Product Roadmaps are Hard
iamctodd
45
9.7k
Side Projects
sachag
451
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
Writing Fast Ruby
sferik
622
60k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
6
3.4k
Making Projects Easy
brettharned
109
5.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
Fireside Chat
paigeccino
22
2.6k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
245
20k
Transcript
PEPABO SUMMER INTERN VERSION 近藤うちお / GMO Pepabo, Inc. 2020.09.08
eBPF インターンネタ帳
この資料は何 •ペパボインターンで「皆様にやって欲しいこと」のネタ帳です。 •ここにない内容でももちろん構わないのですが、 なかなか現場でeBPFを活用するネタをゼロから提案するのは難しい でしょうので、当座で @udzura が欲しいものを考えてみました。 •@udzura なら時間をかければ書けるものもありますし、 そもそもいったい何なのか調べるところからというものもあります。
ツール作成・検証
コンテナ対応トレースのPoC •「コンテナ対応」には皆さんもご存知の通り2方針がある •eBPFのCgroup v2ヘルパーを利用したもの •task_struct からnamespaceを辿ってフィルタするもの •これらのそれぞれの方針について、違いやメリットデメリット、 それぞれの制限をレポートし、 そして簡単な検証環境とミニマルな実装を作成して欲しい
マネージドクラウド用ツール開発 •マネージドクラウドというコンテナをふんだんに使ったサービスがあ り、コンテナ単位でのトレースをしたい気持ちがある。 •BCCツールの中でも以下あたりをコンテナ対応できると嬉しい •ext4slower •nfsslower •tcpconnlat •syscount •......
mod_dtrace 検証 •https://github.com/Matty9191/apache-dtrace-module •https://prefetch.net/projects/apache_modtrace/index.html •マネージドクラウドやその他ホスティングサービスで使えるかどう か、簡単なドキュメントと、いろいろな設定のApacheに対してどの ような計測ができそうかレポートして欲しい。
PHPまたはRubyのUSDT利用のPoC •PHP、Rubyともに --enable-dtrace でUSDTが入る •これらを使って有益なツールが考えられないか? •e.g. Rack::EBPF https://github.com/udzura/rack-ebpf •e.g. mod_php
や他のUSDTと組み合わせたもの https://myaut.github.io/dtrace-stap-book/app/web.html •WordPress とかで解析できないかな?
systemdのkillを監視するツール開発 •systemdが謎にサービスをkillしているような気配があった •状況証拠から原因を突き止めたが、その現場を突き止められるよう なツールを作成して欲しい。 •killsnoop をベースに作れないかな? •https://github.com/iovisor/bcc/blob/master/tools/killsnoop.py •できれば再現可能な動作環境とともに実装して欲しい
トレース状況を可視化するツール •トレース情報は 1) 多い 2) 雑多 になりがちで、いい感じのグラフ などにならないと運用で常用するのは難しい... •BCCの既存ツールベースでいいので、それらの結果をTUIじゃなくて もっと綺麗にできないか?
•e.g. matplotlib(Rubyならcharty)と簡単連携ライブラリ •e.g. Jupyter Notebook ベースのツール •e.g. Prometheus などと連携した何か
sheer-heart-attackをeBPF対応 •https://github.com/k1LoW/sheer-heart-attack •常駐させて特定のイベントの時に特定のコマンドを発火させるツール このイベントソースにeBPFを用いることでアレできないか? •提案レベルでも動かせたらあとは @k1LoW さんがやってくれる •eBPFのイベント例: システムコールの回数、レイテンシ、TCP接続 の何か、etc...
•gobpf使うかも: https://github.com/iovisor/gobpf
RbBCCの改善 ※ 要Rubyの知識 ※ しかも割と高度な
RbBCC •@udzura が開発しているBCCのRuby port •中身はlibbccのFFIで、BCC同梱のPythonライブラリと全く同じ思想 •Rubyアソシエーション開発助成対象プロジェクト(2019) •https://github.com/udzura/rbbcc
RbBCCで困ってること •テストケースが全然ない •スモークテストだけなので、もう少し現実的なテストケースを考え て追加してくれると嬉しい(これは、Rubyのインターン感が強い) •サンプル、ツールがまだまだ少ない •Python版BCCにあるツールがそもそもRubyに移植できるのかから調 べる。足りない機能は実装する
RbBCCで困ってること(2) •RbBCCにおけるネットワークトレーシング実装の移植 •XDP含めその辺りのAPIを移植していない •BCCの examples/networking/* 以下のサンプルを移植し、 動くようにして欲しい。一つでも増えると嬉しい •@udzura はネットワークあんまり得意じゃないっすので...
その他、RbBCC周辺で •BPFQLで他のProbeを実装して欲しいなあ........ •https://github.com/udzura/bpfql •いまのところtracepointしかうごかなくて、完全にPoCレベル •こいつにはメタプロ含むRubyの知識が必要なので、さすがに大変だ と思いますが...