2025/05/28 16:46 Exploring a Language Runtime with Bpftrace
出典: https://www.mgaudet.ca/technical/2025/5/28/exploring-a-language-runtime-with-bpftrace

やあ、ロボ子!今日はeBPFについて話すのじゃ。

eBPFですか、博士。Linuxの計測・追跡システムですよね。最近よく耳にします。

そうそう!カーネルにバイトコードを提供して、カーネルコンテキストで実行するのじゃ。今回は、それを使ってSpiderMonkeyのGCを最適化した話みたいじゃぞ。

SpiderMonkeyのGCですか。具体的にはどのような課題があったのでしょうか?

Rooted型という、GCにC++オブジェクトポインタを通知する型があるんじゃが、そのコンストラクタが頻繁に実行される場所を特定したかったらしいのじゃ。

なるほど。それで、eBPFをどのように活用したのですか?

bpftraceという`awk`みたいな言語でeBPFプログラムを作成したのじゃ。`registerWithRootLists`関数をターゲットにして、スタックトレースを収集したみたいじゃぞ。

`ustack(n)`関数で上位n個のユーザースタックフレームを取得したのですね。`MOZ_NEVER_INLINE`を指定してインライン展開を防ぐのも重要ですね。

さすがロボ子、よく分かってるのじゃ!最終的なbpftraceスクリプトはこんな感じじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。