ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

CoWはコウ可視化するんやで (aka. Rubyなどがforkした後のCoWを可視化してみる)

同僚の皆さんへのアンサーソングです。

hiboma.hatenadiary.jp

ryuichi1208.hateblo.jp

RubyKaigi やらですっかり遅く... と思ったがRubyKaigi takeoutの振り返りも書いてない...


タイトルの通り(通り?)、forkしたプロセスがCoWをどれくらい起こしているか可視化するツールを作りました。

github.com

まだ私の理解が浅いところもあるのですが、いったん動作例などを掲示してみます。

続きを読む

BPFバイナリはどのようなELF形式か(2) - mrubyのDSLを書いたらELFを吐く

あらすじ

udzura.hatenablog.jp

前回の記事で、以下のような構成要素がBPFプログラムに最低限必要な情報だと結論づけました。

    必要なセクション
        strtab
        BPFプログラムセクション with 正しい名前
        ライセンス
        symtab
    必要なシンボルテーブル
        BPFプログラムの関数名
        ライセンスの場所

今回は実際にバイナリを作ってロードしてみます。

続きを読む

メモリの上に置かれているRubyの文字列を覗く

これもフィヨルドブートキャンプの生徒さんの質問からふと思いついた、ちょっとした遊びですが。

(そして、書いてある内容に誤解があったら優しく教えてください)

続きを読む

BPFバイナリはどのようなELF形式か(1) - 最低限の情報とは?

主に9月に開かれる某Kaigiの関係とか、色々があり、C言語以外の言語でBPFバイナリを作ることができないか模索しています*1。某Slackなどで相談させてもらっていますが、こんな感じ(資料後半)。

docs.google.com

その予備調査として、BPFバイナリとしてlibbpfが取り扱えるELF形式のバイナリがどのようなものか調べています。

これ、なんかドキュメントがあるような気もせんでもないですが、まあぼく自身ELF形式に詳しくないこともあり実際のファイルを眺めながら調べた結果*2を残しとこうと思います。


*1:Rustならredbpfというものがあります、サンプル見るとクソかっこいい: https://github.com/foniod/redbpf/blob/main/examples/example-probes/src/vfsreadlat/main.rs

*2:調べるプロセス自体を残すことは、後学のためにも悪くないでしょう

続きを読む