You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに eBPFがLinuxカーネル内で実行されるプログラムの仕組みであることは知っている。 けれどそれ以上の情報をよく知らないので実際に動かしてみて解った振りをしたい。 いろいろeBPFプログラムを書いて試したいので実行方法をまずは確認することにした。 その前に eBPFプログラムの実行方法に関するサンプルは既にLinuxカーネルのリポジトリに大量に提供されている。 Linux 5.7.7 の samples/bpf なのでC言語で遊びたい人はそこを読んで、manでリファレンス引けば特に苦労せずにeBPFプログラムを実行することができるはず。 つまりここから先は読む必要ないので読まなくても良いと思う。 問題: eBPFプログラムを実行する小さいプログラムが欲しい eBPFプログラムを実行するにはどうすればよいのだろうか。 といってもHello Worldを印字するプログラムを作って実行
Filip Nikolovskiのブログより。 仕事でマイクロ・サービスのトレースや可観測性(Observability)について仕事で調べていた時に、Pixielabsに出くわしました。このツールは、アプリの内部にインスツルメンテーション(計器一式)や特別なコードを入れなくても、アプリのトラブルシューティングを即座に行えると宣伝していて、私には✨魔法✨のように聞こえました。だから当然、この技術が機能する理由について、もう少し詳しく知りたいと思い、サイトをスクロールしていくと、「インスツルメンテーションなし」のセクションの下に、この頭文字をとったeBPFがありました。 インターネットでさらに調べて、デザインペーパーを読んで、いくつかのビデオを見た後、この技術が私の目に留まったと言っても過言ではないので、メモを書きたいと思いました。この投稿があなたの興味をさらに刺激することを願っています。
2020年は色々やったんですが、不甲斐なさも残りました。2021年も頑張ります(1行で去年の総括と今年の抱負)。 で、RustとBPF CO-RE、2つのsota(2020年末に覚えた言葉の一つ) をブログに書いて気炎を上げていきたい。 (はじめに: 半分自分メモのつもりなんです! という言い訳をしておきます。認識や用語など間違いがあれば突っ込んで...) BPF CO-RE、コレってなんですか itiskj.hatenablog.com 上記記事に書いてある通り(さらに言えば Why We Switched from BCC to libbpf for Linux BPF Performance Analysis | PingCAP の通り)、BCCのプロダクション利用には、コンパイラやヘッダファイルなどたくさんの依存、実行時にコンパイルをすることによるオーバヘッドなど多くの問題があった
"Why We Switched from BCC to libbpf for Linux BPF Performance Analysis 2020" に書いてあるとおりなのだが、BCC (BPF Compiler Collection) ではなく、libbpf + BPF CO-RE の組み合わせを使うほうが好まれる。 なぜかというと、BCC のアーキテクチャ上、BPF Program を実行するために Clang/LLVM および trace に必要な Linux kernel headers file を埋め込む必要があるのだが、それがプログラム起動時に必要な CPU/Memory リソースを押し上げる要因、及び BPF Program 開発時のビルドプロセスや Debugging の複雑化に繋がっているからだ。 NOTE: 大抵の場合、Clang, LLVM および Linux
A blog about programming, technology and open-source stuff. I was doing some research at work for tracing and observability for microservices, when I came across Pixielabs. This tool advertises that you can instantly troubleshoot applications without any instrumentation or special code inside the apps, which sounded ✨magical✨ to me. So naturally I wanted to know a little more about what enables th
富士通の非公式Advent Calendar 2018 9日目 の記事です。記事の内容は個人の見解であり、所属する組織を代表するものではありません。 はじめに Linux kernel の比較的新しい機能である eBPF について簡単に調べてみたので、その概要と使い方を紹介します。 eBPF は extended Berkeley Packet Filter の略で、ざっくり言うと、ユーザ空間で作成したプログラムをカーネルに送り込んで、独自の命令セット を持つカーネル内部の仮想マシン(以下VM)上で実行できる機能です。名前の通り、eBPF は BPF(Berkeley Packet Filter)と呼ばれる古くからあるパケットフィルタの技術を拡張したもので、パケットフィルタに限らず OS 用途一般に使えるようになっています。 システムに危険を及ぼす可能性のあるコードは、事前のチェックで検出
(この記事はLinux Advent Calendar 2020 - Qiitaの2日目の記事です.前日はmasami256さんのTiny Core LinuxでLinuxのinitプロセスが実行されるあたりを調べるでした.) みなさんこんにちはこんばんは.bpftraceを使っていますか? (e)BPFといえば最近は専らCiliumなどネットワークが話題ですが,bpftraceはBPF*1を利用したトレーシングツールです.私は昨年からぼちぼち使い始めて,機能追加やバグ修正のパッチをいろいろと投げていた(130+)ら気づいたらコミッタになっていました.ということでbpftraceについては比較的よく知っていると思うので,今年にbpftraceに追加された主要な機能や変更点を紹介したいと思います. bpftrace知らないなぁという方はこちら(拙文です)を,bpftrace使ってないなぁとい
Recent posts: 29 Oct 2024 » AI Flame Graphs 22 Jul 2024 » No More Blue Fridays 24 Mar 2024 » Linux Crisis Tools 17 Mar 2024 » The Return of the Frame Pointers 10 Mar 2024 » eBPF Documentary 28 Apr 2023 » eBPF Observability Tools Are Not Security Tools 01 Mar 2023 » USENIX SREcon APAC 2022: Computing Performance: What's on the Horizon 17 Feb 2023 » USENIX SREcon APAC 2023: CFP 02 May 2022 » Brendan
最近のLinuxではeBPFで輻輳制御アルゴリズムを実装し、カーネル内で実行できる。今日はDCTCP実装を眺めてみたいと思う。その前にオリジナルのDCTCPについて確認する。マージされたのはバージョン3.17の頃。 commit e3118e8359bb7c59555aca60c725106e6d78c5ce Author: Daniel Borkmann <daniel@iogearbox.net> Date: Fri Sep 26 22:37:36 2014 +0200 net: tcp: add DCTCP congestion control algorithmDCTCPはRFCにもなっているけど、オリジナルは2010年にMSRとスタンフォード大のチームによって提案された(Data Center TCP (DCTCP) [SIGCOMM2010])。一般的な輻輳制御アルゴリズムでは
This is the first in a series of posts describing how we can debug applications in production using eBPF, without recompilation/redeployment. This post describes how to use gobpf and uprobes to build a function argument tracer for Go applications. This technique is also extendable to other compiled languages such as C++, Rust, etc. The next sets of posts in this series will discuss using eBPF for
Update: since I wrote this post, I've been working on a new eBPF library for Rust called Aya, see https://confused.ai/posts/announcing-aya. If you're looking to use eBPF with Rust, I highly recommend you check it out! I originally wrote an earlier version of this post at the end of March, when I was working on adding uprobes support to redbpf. I wanted to blog about the work I was doing and needed
このブログでは、eBPFプログラムの作成プロセスに焦点を当てています。 eBPFプログラムは、システムコールデータをインターセプトするためのコードを段階的に構築することによって、実際の例に基づいて紹介されています。 eBPFのメモリアクセス、eBPFヘルパー、可変メモリアクセス、eBPFマップなど、eBPFプログラムを作成する際に知っておくべき重要な概念が説明されています。 また、eBPFプログラムを作成する際のベストプラクティスや、eBPFベリファイアによる制限についても触れられています。 全体として、このブログはeBPFプログラムの基本的な構造と動作原理について理解するための入門書として位置づけられています。 詳細はこちら
単なるデバッグ情報だけではない「BPF Type Format」(BTF)の使い道:Berkeley Packet Filter(BPF)入門(10) Linuxにおける利用が急速に増えている「Berkeley Packet Filter(BPF)」について、基礎から応用まで幅広く紹介する連載。今回は、最近のBPFの発展に欠かすことのできない重要機能「BPF Type Format(BTF)」について。 Linuxにおける利用が急速に増えている「Berkeley Packet Filter(BPF)」について、基礎から応用まで幅広く紹介する連載「Berkeley Packet Filter(BPF)入門」。今回は、最近のBPFの発展に欠かすことのできない重要機能「BPF Type Format(BTF)」を紹介します。 BPF Type Format(BTF)とは BPFプログラムは主にC
GDBがeBPFのデバッグをサポートした。 GNU Debugger Adding eBPF Debugging Support - Phoronix eBPFというのはLinuxカーネル内の仮想マシンだ。 もともと、BPF(Barkley Packet Filter)という仮想マシンがあった。これはネットワークのパケットフィルタリングをするための仮想マシンで、レジスターベースのRISCプロセッサーを模した命令セットになっている。 カーネル内で安全にユーザーコードを実行するというのは需要があるので、BPFをより汎用的に使いたいという声は多かったのだが、何分BPFは設計が古い。レジスタは2個で32bit、命令セットはatomic compare exchangeのようなモダンなプロセッサーに搭載されている命令がない。 そのためeBPF(extended BPF)が設計された。レジスタは10個
KubeCon + CloudNativeCon Europe 2020 2日目 のセッションである eBPF and Kubernetes: Little Helper Minions for Scaling Microservices についてです。 スライド 以下のような内容でした。 eBPF についての初学者向けな説明 eBPF の歴史 eBPF の Kubernetes CNI 実装である Cilium について ※ 時系列を雑に日本語で起こしましたが知らないことばかりで都度調べながらの作業でした。 結局ほとんどスライドのままな気がしますが、それでも他の記事以上に誤りが多い気がするので間違っている箇所があったら優しく指摘してください・・笑 Challenges from OS kernel side 前半は eBPF を Linux に入れるまでの話?正直良くわからなかった・・
GKEのバージョン 1.16.13-gke.1 Node Container-Optimized OS from Google コンテナのOS OSは下記を使うのでちょっと特殊 https://console.cloud.google.com/gcr/images/gcp-runtimes/GLOBAL/ubuntu_18_0_4?gcrImageListsize=30 # cat /etc/os-release NAME="Ubuntu" VERSION="18.04.4 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.4 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.u
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く