Skip to content

ruth561/DAG-BPF

Repository files navigation

DAG-BPF

This repository provides an extension for DAG-based scheduling using eBPF.

Repository Overview

dag_bpf.(h|c)

struct_opsを利用したカスタムeBPFイベントの実装や、DAGタスク用のkfuncの実装がまとめられているカーネルモジュール。 ビルドは以下でできる。

$ make

また、ビルドしたカーネルモジュールをカーネルにロードするには以下のようにすればいい。

$ make insmod

カーネルモジュールをロードしたら、eBPFプログラムをビルドしてカーネルのイベントにアタッチする(詳しくはbpfディレクトリの説明を参照)。

カーネルモジュールがロードされると、/sys/kernel/my_ops/ctlというファイルが作成される。 eBPFプログラムはこのファイルの呼び出しパスにhookされるため、以下のようにファイルアクセスを行うと、 eBPFプログラムの呼び出しを確認することができる。

$ cat /sys/kernel/my_ops/ctl

kfuncのログはdmesgに出力している。

カーネルモジュールをアンロードするときは以下のようにする。

$ make rmmod

bpfディレクトリ

eBPFプログラムの実装が置かれている。ビルドするには、このディレクトリに移動してmakeを打てばいい。

$ cd bpf
$ make

※ 注意点として、makeを実行するときは、上述したカーネルモジュールをカーネルにロードしておく必要がある。

eBPFプログラムをカーネルにロードするには、以下を実行すればいい。

$ sudo target/debug/bpf

libディレクトリ

Rustで書かれたライブラリの実装がまとめてある。ユーザーアプリケーションが使うユーティリティ関数や、 eBPFプログラムとの通信に使える便利なクラスなどがある。

testディレクトリ

ユーザー空間で動作するテスト用途のアプリケーションが置かれているディレクトリ。 以下のようなテストプログラムが置かれている。

  • test-api:ユーザー->eBPFの通信に使われるAPIのテスト

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published